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
This commit is contained in:
hselasky 2017-11-23 13:57:44 +00:00
parent 2a9baf2972
commit 1088f71c35
3 changed files with 19 additions and 0 deletions

View File

@ -1449,6 +1449,9 @@ icl_soft_limits(struct icl_drv_limits *idl)
{ {
idl->idl_max_recv_data_segment_length = 128 * 1024; 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); return (0);
} }

View File

@ -1787,6 +1787,18 @@ iscsi_ioctl_session_add(struct iscsi_softc *sc, struct iscsi_session_add *isa)
is = malloc(sizeof(*is), M_ISCSI, M_ZERO | M_WAITOK); is = malloc(sizeof(*is), M_ISCSI, M_ZERO | M_WAITOK);
memcpy(&is->is_conf, &isa->isa_conf, sizeof(is->is_conf)); 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); sx_xlock(&sc->sc_lock);
/* /*

View File

@ -486,7 +486,11 @@ iser_conn_task_done(struct icl_conn *ic, void *prv)
static int static int
iser_limits(struct icl_drv_limits *idl) iser_limits(struct icl_drv_limits *idl)
{ {
idl->idl_max_recv_data_segment_length = 128 * 1024; 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); return (0);
} }