提交 7331613e 编写于 作者: J Jayamohan Kallickal 提交者: James Bottomley

[SCSI] be2iscsi: Fix negotiated parameters upload to FW

- Removed the check of MaxXmitDSL == 0 as this is not a possible
  case.
- Update connection offload data structure for SKH-R adapters.
Signed-off-by: NJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: NJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 6c83185a
...@@ -672,8 +672,7 @@ int beiscsi_set_param(struct iscsi_cls_conn *cls_conn, ...@@ -672,8 +672,7 @@ int beiscsi_set_param(struct iscsi_cls_conn *cls_conn,
session->max_burst = 262144; session->max_burst = 262144;
break; break;
case ISCSI_PARAM_MAX_XMIT_DLENGTH: case ISCSI_PARAM_MAX_XMIT_DLENGTH:
if ((conn->max_xmit_dlength > 65536) || if (conn->max_xmit_dlength > 65536)
(conn->max_xmit_dlength == 0))
conn->max_xmit_dlength = 65536; conn->max_xmit_dlength = 65536;
default: default:
return 0; return 0;
...@@ -924,6 +923,10 @@ static void beiscsi_set_params_for_offld(struct beiscsi_conn *beiscsi_conn, ...@@ -924,6 +923,10 @@ static void beiscsi_set_params_for_offld(struct beiscsi_conn *beiscsi_conn,
session->max_r2t); session->max_r2t);
AMAP_SET_BITS(struct amap_beiscsi_offload_params, exp_statsn, params, AMAP_SET_BITS(struct amap_beiscsi_offload_params, exp_statsn, params,
(conn->exp_statsn - 1)); (conn->exp_statsn - 1));
AMAP_SET_BITS(struct amap_beiscsi_offload_params,
max_recv_data_segment_length, params,
conn->max_recv_dlength);
} }
/** /**
......
...@@ -477,7 +477,7 @@ struct amap_iscsi_sge { ...@@ -477,7 +477,7 @@ struct amap_iscsi_sge {
}; };
struct beiscsi_offload_params { struct beiscsi_offload_params {
u32 dw[5]; u32 dw[6];
}; };
#define OFFLD_PARAMS_ERL 0x00000003 #define OFFLD_PARAMS_ERL 0x00000003
...@@ -507,6 +507,7 @@ struct amap_beiscsi_offload_params { ...@@ -507,6 +507,7 @@ struct amap_beiscsi_offload_params {
u8 max_r2t[16]; u8 max_r2t[16];
u8 pad[8]; u8 pad[8];
u8 exp_statsn[32]; u8 exp_statsn[32];
u8 max_recv_data_segment_length[32];
}; };
/* void hwi_complete_drvr_msgs(struct beiscsi_conn *beiscsi_conn, /* void hwi_complete_drvr_msgs(struct beiscsi_conn *beiscsi_conn,
...@@ -888,30 +889,32 @@ struct amap_iscsi_target_context_update_wrb_v2 { ...@@ -888,30 +889,32 @@ struct amap_iscsi_target_context_update_wrb_v2 {
u8 first_burst_length[24]; /* DWORD 3 */ u8 first_burst_length[24]; /* DWORD 3 */
u8 rsvd3[8]; /* DOWRD 3 */ u8 rsvd3[8]; /* DOWRD 3 */
u8 max_r2t[16]; /* DWORD 4 */ u8 max_r2t[16]; /* DWORD 4 */
u8 rsvd4[10]; /* DWORD 4 */ u8 rsvd4; /* DWORD 4 */
u8 hde; /* DWORD 4 */ u8 hde; /* DWORD 4 */
u8 dde; /* DWORD 4 */ u8 dde; /* DWORD 4 */
u8 erl[2]; /* DWORD 4 */ u8 erl[2]; /* DWORD 4 */
u8 rsvd5[6]; /* DWORD 4 */
u8 imd; /* DWORD 4 */ u8 imd; /* DWORD 4 */
u8 ir2t; /* DWORD 4 */ u8 ir2t; /* DWORD 4 */
u8 rsvd6[3]; /* DWORD 4 */
u8 stat_sn[32]; /* DWORD 5 */ u8 stat_sn[32]; /* DWORD 5 */
u8 rsvd5[32]; /* DWORD 6 */ u8 rsvd7[32]; /* DWORD 6 */
u8 rsvd6[32]; /* DWORD 7 */ u8 rsvd8[32]; /* DWORD 7 */
u8 max_recv_dataseg_len[24]; /* DWORD 8 */ u8 max_recv_dataseg_len[24]; /* DWORD 8 */
u8 rsvd7[8]; /* DWORD 8 */ u8 rsvd9[8]; /* DWORD 8 */
u8 rsvd8[32]; /* DWORD 9 */ u8 rsvd10[32]; /* DWORD 9 */
u8 rsvd9[32]; /* DWORD 10 */ u8 rsvd11[32]; /* DWORD 10 */
u8 max_cxns[16]; /* DWORD 11 */ u8 max_cxns[16]; /* DWORD 11 */
u8 rsvd10[11]; /* DWORD 11*/ u8 rsvd12[11]; /* DWORD 11*/
u8 invld; /* DWORD 11 */ u8 invld; /* DWORD 11 */
u8 rsvd11;/* DWORD 11*/ u8 rsvd13;/* DWORD 11*/
u8 dmsg; /* DWORD 11 */ u8 dmsg; /* DWORD 11 */
u8 data_seq_inorder; /* DWORD 11 */ u8 data_seq_inorder; /* DWORD 11 */
u8 pdu_seq_inorder; /* DWORD 11 */ u8 pdu_seq_inorder; /* DWORD 11 */
u8 rsvd12[32]; /*DWORD 12 */ u8 rsvd14[32]; /*DWORD 12 */
u8 rsvd13[32]; /* DWORD 13 */ u8 rsvd15[32]; /* DWORD 13 */
u8 rsvd14[32]; /* DWORD 14 */ u8 rsvd16[32]; /* DWORD 14 */
u8 rsvd15[32]; /* DWORD 15 */ u8 rsvd17[32]; /* DWORD 15 */
} __packed; } __packed;
......
...@@ -1411,10 +1411,6 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params, ...@@ -1411,10 +1411,6 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
memset(pwrb, 0, sizeof(*pwrb)); memset(pwrb, 0, sizeof(*pwrb));
AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
max_burst_length, pwrb, params->dw[offsetof
(struct amap_beiscsi_offload_params,
max_burst_length) / 32]);
AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
max_burst_length, pwrb, params->dw[offsetof max_burst_length, pwrb, params->dw[offsetof
(struct amap_beiscsi_offload_params, (struct amap_beiscsi_offload_params,
...@@ -1436,7 +1432,9 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params, ...@@ -1436,7 +1432,9 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
params->dw[offsetof(struct amap_beiscsi_offload_params, params->dw[offsetof(struct amap_beiscsi_offload_params,
first_burst_length) / 32]); first_burst_length) / 32]);
AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
max_recv_dataseg_len, pwrb, BEISCSI_MAX_RECV_DATASEG_LEN); max_recv_dataseg_len, pwrb,
params->dw[offsetof(struct amap_beiscsi_offload_params,
max_recv_data_segment_length) / 32]);
AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
max_cxns, pwrb, BEISCSI_MAX_CXNS); max_cxns, pwrb, BEISCSI_MAX_CXNS);
AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, erl, pwrb, AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, erl, pwrb,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册