summaryrefslogtreecommitdiffstats
path: root/usr.sbin/iscsid
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-12-26 09:12:19 +0000
committermav <mav@FreeBSD.org>2014-12-26 09:12:19 +0000
commit270e05ae8c65f8f12693125c14bb195224557a07 (patch)
treed800ad62ab3f70241b39d23ef151b9ec7023100e /usr.sbin/iscsid
parent529f85a6e8e7eb496541d102c3dcff146cc9ab3c (diff)
downloadFreeBSD-src-270e05ae8c65f8f12693125c14bb195224557a07.zip
FreeBSD-src-270e05ae8c65f8f12693125c14bb195224557a07.tar.gz
MFC r275925: Slightly polish iSCSI parameters negotiation.
Diffstat (limited to 'usr.sbin/iscsid')
-rw-r--r--usr.sbin/iscsid/login.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/usr.sbin/iscsid/login.c b/usr.sbin/iscsid/login.c
index afe7ebb..c51a3bb 100644
--- a/usr.sbin/iscsid/login.c
+++ b/usr.sbin/iscsid/login.c
@@ -388,6 +388,11 @@ login_negotiate_key(struct connection *conn, const char *name,
if (tmp <= 0)
log_errx(1, "received invalid "
"MaxRecvDataSegmentLength");
+ if (tmp > ISCSI_MAX_DATA_SEGMENT_LENGTH) {
+ log_debugx("capping MaxRecvDataSegmentLength "
+ "from %d to %d", tmp, ISCSI_MAX_DATA_SEGMENT_LENGTH);
+ tmp = ISCSI_MAX_DATA_SEGMENT_LENGTH;
+ }
conn->conn_max_data_segment_length = tmp;
} else if (strcmp(name, "MaxBurstLength") == 0) {
if (conn->conn_immediate_data) {
@@ -451,10 +456,11 @@ login_negotiate(struct connection *conn)
keys_add(request_keys, "ImmediateData", "Yes");
keys_add_int(request_keys, "MaxBurstLength",
- ISCSI_MAX_DATA_SEGMENT_LENGTH);
+ 2 * ISCSI_MAX_DATA_SEGMENT_LENGTH);
keys_add_int(request_keys, "FirstBurstLength",
ISCSI_MAX_DATA_SEGMENT_LENGTH);
keys_add(request_keys, "InitialR2T", "Yes");
+ keys_add(request_keys, "MaxOutstandingR2T", "1");
} else {
keys_add(request_keys, "HeaderDigest", "None");
keys_add(request_keys, "DataDigest", "None");
@@ -465,7 +471,6 @@ login_negotiate(struct connection *conn)
keys_add(request_keys, "DefaultTime2Wait", "0");
keys_add(request_keys, "DefaultTime2Retain", "0");
keys_add(request_keys, "ErrorRecoveryLevel", "0");
- keys_add(request_keys, "MaxOutstandingR2T", "1");
keys_save(request_keys, request);
keys_delete(request_keys);
request_keys = NULL;
OpenPOWER on IntegriCloud