summaryrefslogtreecommitdiffstats
path: root/usr.sbin/iscsid
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-12-19 01:12:22 +0000
committermav <mav@FreeBSD.org>2014-12-19 01:12:22 +0000
commitad2edff826021e4a2e882b07341136a7a583d0bc (patch)
tree722434313794faa0065d253fdc652acac2f29bea /usr.sbin/iscsid
parentc6587f31b0d8ada991127eb0aae896b0c6be2f15 (diff)
downloadFreeBSD-src-ad2edff826021e4a2e882b07341136a7a583d0bc.zip
FreeBSD-src-ad2edff826021e4a2e882b07341136a7a583d0bc.tar.gz
Slightly polish iSCSI parameters negotiation.
MFC after: 1 week
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 360b0ef..1338970 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