aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2021-09-13 16:57:54 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2021-09-13 16:57:54 +0000
commit91c62d626d0e9995da9dc424120a4f1b0b987eea (patch)
tree3e2710910dc88c0e12fae41535f164bc3abf8d1b
parentf63ddf465fe09d3547deaf80fbdb91bc7b816dfb (diff)
downloadsrc-91c62d626d0e9995da9dc424120a4f1b0b987eea.tar.gz
src-91c62d626d0e9995da9dc424120a4f1b0b987eea.zip
iscsid: Disable TCP DDP for connection sockets.
cxgbei is not able to offload PDU processing for a socket using TCP DDP offload. Sponsored by: Chelsio Communications
-rw-r--r--usr.sbin/iscsid/iscsid.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/usr.sbin/iscsid/iscsid.c b/usr.sbin/iscsid/iscsid.c
index 797a7561f79c..db8b5d4f5e4c 100644
--- a/usr.sbin/iscsid/iscsid.c
+++ b/usr.sbin/iscsid/iscsid.c
@@ -164,7 +164,7 @@ connection_new(int iscsi_fd, const struct iscsi_daemon_request *request)
#ifdef ICL_KERNEL_PROXY
struct iscsi_daemon_connect idc;
#endif
- int error, sockbuf;
+ int error, optval;
conn = calloc(1, sizeof(*conn));
if (conn == NULL)
@@ -275,14 +275,18 @@ connection_new(int iscsi_fd, const struct iscsi_daemon_request *request)
fail(conn, strerror(errno));
log_err(1, "failed to create socket for %s", from_addr);
}
- sockbuf = SOCKBUF_SIZE;
+ optval = SOCKBUF_SIZE;
if (setsockopt(conn->conn_socket, SOL_SOCKET, SO_RCVBUF,
- &sockbuf, sizeof(sockbuf)) == -1)
+ &optval, sizeof(optval)) == -1)
log_warn("setsockopt(SO_RCVBUF) failed");
- sockbuf = SOCKBUF_SIZE;
+ optval = SOCKBUF_SIZE;
if (setsockopt(conn->conn_socket, SOL_SOCKET, SO_SNDBUF,
- &sockbuf, sizeof(sockbuf)) == -1)
+ &optval, sizeof(optval)) == -1)
log_warn("setsockopt(SO_SNDBUF) failed");
+ optval = 1;
+ if (setsockopt(conn->conn_socket, SOL_SOCKET, SO_NO_DDP,
+ &optval, sizeof(optval)) == -1)
+ log_warn("setsockopt(SO_NO_DDP) failed");
if (conn->conn_conf.isc_dscp != -1) {
int tos = conn->conn_conf.isc_dscp << 2;
if (to_ai->ai_family == AF_INET) {