|
@@ -652,6 +652,7 @@ static int cxgbit_set_iso_npdu(struct cxgbit_sock *csk)
|
|
struct iscsi_param *param;
|
|
struct iscsi_param *param;
|
|
u32 mrdsl, mbl;
|
|
u32 mrdsl, mbl;
|
|
u32 max_npdu, max_iso_npdu;
|
|
u32 max_npdu, max_iso_npdu;
|
|
|
|
+ u32 max_iso_payload;
|
|
|
|
|
|
if (conn->login->leading_connection) {
|
|
if (conn->login->leading_connection) {
|
|
param = iscsi_find_param_from_key(MAXBURSTLENGTH,
|
|
param = iscsi_find_param_from_key(MAXBURSTLENGTH,
|
|
@@ -670,8 +671,10 @@ static int cxgbit_set_iso_npdu(struct cxgbit_sock *csk)
|
|
mrdsl = conn_ops->MaxRecvDataSegmentLength;
|
|
mrdsl = conn_ops->MaxRecvDataSegmentLength;
|
|
max_npdu = mbl / mrdsl;
|
|
max_npdu = mbl / mrdsl;
|
|
|
|
|
|
- max_iso_npdu = CXGBIT_MAX_ISO_PAYLOAD /
|
|
|
|
- (ISCSI_HDR_LEN + mrdsl +
|
|
|
|
|
|
+ max_iso_payload = rounddown(CXGBIT_MAX_ISO_PAYLOAD, csk->emss);
|
|
|
|
+
|
|
|
|
+ max_iso_npdu = max_iso_payload /
|
|
|
|
+ (ISCSI_HDR_LEN + mrdsl +
|
|
cxgbit_digest_len[csk->submode]);
|
|
cxgbit_digest_len[csk->submode]);
|
|
|
|
|
|
csk->max_iso_npdu = min(max_npdu, max_iso_npdu);
|
|
csk->max_iso_npdu = min(max_npdu, max_iso_npdu);
|
|
@@ -741,6 +744,9 @@ static int cxgbit_set_params(struct iscsi_conn *conn)
|
|
if (conn_ops->MaxRecvDataSegmentLength > cdev->mdsl)
|
|
if (conn_ops->MaxRecvDataSegmentLength > cdev->mdsl)
|
|
conn_ops->MaxRecvDataSegmentLength = cdev->mdsl;
|
|
conn_ops->MaxRecvDataSegmentLength = cdev->mdsl;
|
|
|
|
|
|
|
|
+ if (cxgbit_set_digest(csk))
|
|
|
|
+ return -1;
|
|
|
|
+
|
|
if (conn->login->leading_connection) {
|
|
if (conn->login->leading_connection) {
|
|
param = iscsi_find_param_from_key(ERRORRECOVERYLEVEL,
|
|
param = iscsi_find_param_from_key(ERRORRECOVERYLEVEL,
|
|
conn->param_list);
|
|
conn->param_list);
|
|
@@ -764,7 +770,7 @@ static int cxgbit_set_params(struct iscsi_conn *conn)
|
|
if (is_t5(cdev->lldi.adapter_type))
|
|
if (is_t5(cdev->lldi.adapter_type))
|
|
goto enable_ddp;
|
|
goto enable_ddp;
|
|
else
|
|
else
|
|
- goto enable_digest;
|
|
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
|
|
|
|
if (test_bit(CDEV_ISO_ENABLE, &cdev->flags)) {
|
|
if (test_bit(CDEV_ISO_ENABLE, &cdev->flags)) {
|
|
@@ -781,10 +787,6 @@ enable_ddp:
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-enable_digest:
|
|
|
|
- if (cxgbit_set_digest(csk))
|
|
|
|
- return -1;
|
|
|
|
-
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|