Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Nov 2017 13:57:45 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r326127 - in head/sys/dev: iscsi iser
Message-ID:  <201711231357.vANDvjFo024660@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Thu Nov 23 13:57:44 2017
New Revision: 326127
URL: https://svnweb.freebsd.org/changeset/base/326127

Log:
  Make sure the iSCSI I/O limits are set properly so that the ISCSIDSEND IOCTL
  can be used prior to the ISCSIDHANDOFF IOCTL which set the negotiated values.
  Else the login PDU will fail when passing the "-r" option to "iscsictl" which
  means iSCSI over RDMA instead of TCP/IP.
  
  Discussed with:	np@ and trasz@
  Sponsored by:	Mellanox Technologies
  MFC after:	1 week

Modified:
  head/sys/dev/iscsi/icl_soft.c
  head/sys/dev/iscsi/iscsi.c
  head/sys/dev/iser/icl_iser.c

Modified: head/sys/dev/iscsi/icl_soft.c
==============================================================================
--- head/sys/dev/iscsi/icl_soft.c	Thu Nov 23 12:54:18 2017	(r326126)
+++ head/sys/dev/iscsi/icl_soft.c	Thu Nov 23 13:57:44 2017	(r326127)
@@ -1449,6 +1449,9 @@ icl_soft_limits(struct icl_drv_limits *idl)
 {
 
 	idl->idl_max_recv_data_segment_length = 128 * 1024;
+	idl->idl_max_send_data_segment_length = 128 * 1024;
+	idl->idl_max_burst_length = 262144;
+	idl->idl_first_burst_length = 65536;
 
 	return (0);
 }

Modified: head/sys/dev/iscsi/iscsi.c
==============================================================================
--- head/sys/dev/iscsi/iscsi.c	Thu Nov 23 12:54:18 2017	(r326126)
+++ head/sys/dev/iscsi/iscsi.c	Thu Nov 23 13:57:44 2017	(r326127)
@@ -1787,6 +1787,18 @@ iscsi_ioctl_session_add(struct iscsi_softc *sc, struct
 	is = malloc(sizeof(*is), M_ISCSI, M_ZERO | M_WAITOK);
 	memcpy(&is->is_conf, &isa->isa_conf, sizeof(is->is_conf));
 
+	/*
+	 * Set some default values, from RFC 3720, section 12.
+	 *
+	 * These values are updated by the handoff IOCTL, but are
+	 * needed prior to the handoff to support sending the ISER
+	 * login PDU.
+	 */
+	is->is_max_recv_data_segment_length = 8192;
+	is->is_max_send_data_segment_length = 8192;
+	is->is_max_burst_length = 262144;
+	is->is_first_burst_length = 65536;
+
 	sx_xlock(&sc->sc_lock);
 
 	/*

Modified: head/sys/dev/iser/icl_iser.c
==============================================================================
--- head/sys/dev/iser/icl_iser.c	Thu Nov 23 12:54:18 2017	(r326126)
+++ head/sys/dev/iser/icl_iser.c	Thu Nov 23 13:57:44 2017	(r326127)
@@ -486,7 +486,11 @@ iser_conn_task_done(struct icl_conn *ic, void *prv)
 static int
 iser_limits(struct icl_drv_limits *idl)
 {
+
 	idl->idl_max_recv_data_segment_length = 128 * 1024;
+	idl->idl_max_send_data_segment_length = 128 * 1024;
+	idl->idl_max_burst_length = 262144;
+	idl->idl_first_burst_length = 65536;
 
 	return (0);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711231357.vANDvjFo024660>