aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohn Soni Jose <sony.john-n@emulex.com>2012-10-19 19:14:35 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-11-26 23:59:40 -0500
commitacb9693cb007e126fd313cb696dfbf5c214514cd (patch)
tree5d98e790384346133f81336052b3657da8f01143 /drivers
parent09a1093a292aa88af836f4fb3b604af9aa1ece3d (diff)
[SCSI] be2iscsi: Fix session update context with V2 version.
For updating session context on adapter, V2 version is to be used with the latest adapter. This fix checks for the adapter type and uses correct version of session context. Signed-off-by: John Soni Jose <sony.john-n@emulex.com> Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/be2iscsi/be_iscsi.c8
-rw-r--r--drivers/scsi/be2iscsi/be_main.c69
-rw-r--r--drivers/scsi/be2iscsi/be_main.h50
-rw-r--r--drivers/scsi/be2iscsi/be_mgmt.c139
-rw-r--r--drivers/scsi/be2iscsi/be_mgmt.h8
5 files changed, 212 insertions, 62 deletions
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index 3f41fc0b5712..2c458b39669c 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -936,6 +936,14 @@ static void beiscsi_set_params_for_offld(struct beiscsi_conn *beiscsi_conn,
936 session->initial_r2t_en); 936 session->initial_r2t_en);
937 AMAP_SET_BITS(struct amap_beiscsi_offload_params, imd, params, 937 AMAP_SET_BITS(struct amap_beiscsi_offload_params, imd, params,
938 session->imm_data_en); 938 session->imm_data_en);
939 AMAP_SET_BITS(struct amap_beiscsi_offload_params,
940 data_seq_inorder, params,
941 session->dataseq_inorder_en);
942 AMAP_SET_BITS(struct amap_beiscsi_offload_params,
943 pdu_seq_inorder, params,
944 session->pdu_inorder_en);
945 AMAP_SET_BITS(struct amap_beiscsi_offload_params, max_r2t, params,
946 session->max_r2t);
939 AMAP_SET_BITS(struct amap_beiscsi_offload_params, exp_statsn, params, 947 AMAP_SET_BITS(struct amap_beiscsi_offload_params, exp_statsn, params,
940 (conn->exp_statsn - 1)); 948 (conn->exp_statsn - 1));
941} 949}
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 6aef05f78449..9e669cec3424 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -4087,8 +4087,6 @@ beiscsi_offload_connection(struct beiscsi_conn *beiscsi_conn,
4087 struct beiscsi_offload_params *params) 4087 struct beiscsi_offload_params *params)
4088{ 4088{
4089 struct wrb_handle *pwrb_handle; 4089 struct wrb_handle *pwrb_handle;
4090 struct iscsi_target_context_update_wrb *pwrb = NULL;
4091 struct be_mem_descriptor *mem_descr;
4092 struct beiscsi_hba *phba = beiscsi_conn->phba; 4090 struct beiscsi_hba *phba = beiscsi_conn->phba;
4093 struct iscsi_task *task = beiscsi_conn->task; 4091 struct iscsi_task *task = beiscsi_conn->task;
4094 struct iscsi_session *session = task->conn->session; 4092 struct iscsi_session *session = task->conn->session;
@@ -4105,67 +4103,16 @@ beiscsi_offload_connection(struct beiscsi_conn *beiscsi_conn,
4105 4103
4106 pwrb_handle = alloc_wrb_handle(phba, (beiscsi_conn->beiscsi_conn_cid - 4104 pwrb_handle = alloc_wrb_handle(phba, (beiscsi_conn->beiscsi_conn_cid -
4107 phba->fw_config.iscsi_cid_start)); 4105 phba->fw_config.iscsi_cid_start));
4108 pwrb = (struct iscsi_target_context_update_wrb *)pwrb_handle->pwrb;
4109 memset(pwrb, 0, sizeof(*pwrb));
4110 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
4111 max_burst_length, pwrb, params->dw[offsetof
4112 (struct amap_beiscsi_offload_params,
4113 max_burst_length) / 32]);
4114 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
4115 max_send_data_segment_length, pwrb,
4116 params->dw[offsetof(struct amap_beiscsi_offload_params,
4117 max_send_data_segment_length) / 32]);
4118 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
4119 first_burst_length,
4120 pwrb,
4121 params->dw[offsetof(struct amap_beiscsi_offload_params,
4122 first_burst_length) / 32]);
4123
4124 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, erl, pwrb,
4125 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4126 erl) / 32] & OFFLD_PARAMS_ERL));
4127 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, dde, pwrb,
4128 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4129 dde) / 32] & OFFLD_PARAMS_DDE) >> 2);
4130 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, hde, pwrb,
4131 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4132 hde) / 32] & OFFLD_PARAMS_HDE) >> 3);
4133 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, ir2t, pwrb,
4134 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4135 ir2t) / 32] & OFFLD_PARAMS_IR2T) >> 4);
4136 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, imd, pwrb,
4137 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4138 imd) / 32] & OFFLD_PARAMS_IMD) >> 5);
4139 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, stat_sn,
4140 pwrb,
4141 (params->dw[offsetof(struct amap_beiscsi_offload_params,
4142 exp_statsn) / 32] + 1));
4143 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, type, pwrb,
4144 0x7);
4145 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, wrb_idx,
4146 pwrb, pwrb_handle->wrb_index);
4147 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, ptr2nextwrb,
4148 pwrb, pwrb_handle->nxt_wrb_index);
4149 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
4150 session_state, pwrb, 0);
4151 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, compltonack,
4152 pwrb, 1);
4153 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, notpredblq,
4154 pwrb, 0);
4155 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, mode, pwrb,
4156 0);
4157
4158 mem_descr = phba->init_mem;
4159 mem_descr += ISCSI_MEM_GLOBAL_HEADER;
4160 4106
4161 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, 4107 /* Check for the adapter family */
4162 pad_buffer_addr_hi, pwrb, 4108 if (chip_skh_r(phba->pcidev))
4163 mem_descr->mem_array[0].bus_address.u.a32.address_hi); 4109 beiscsi_offload_cxn_v2(params, pwrb_handle);
4164 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, 4110 else
4165 pad_buffer_addr_lo, pwrb, 4111 beiscsi_offload_cxn_v0(params, pwrb_handle,
4166 mem_descr->mem_array[0].bus_address.u.a32.address_lo); 4112 phba->init_mem);
4167 4113
4168 be_dws_le_to_cpu(pwrb, sizeof(struct iscsi_target_context_update_wrb)); 4114 be_dws_le_to_cpu(pwrb_handle->pwrb,
4115 sizeof(struct iscsi_target_context_update_wrb));
4169 4116
4170 doorbell |= beiscsi_conn->beiscsi_conn_cid & DB_WRB_POST_CID_MASK; 4117 doorbell |= beiscsi_conn->beiscsi_conn_cid & DB_WRB_POST_CID_MASK;
4171 doorbell |= (pwrb_handle->wrb_index & DB_DEF_PDU_WRB_INDEX_MASK) 4118 doorbell |= (pwrb_handle->wrb_index & DB_DEF_PDU_WRB_INDEX_MASK)
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 8632927da1ef..0e730d1cd1af 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -469,6 +469,9 @@ struct beiscsi_offload_params {
469#define OFFLD_PARAMS_HDE 0x00000008 469#define OFFLD_PARAMS_HDE 0x00000008
470#define OFFLD_PARAMS_IR2T 0x00000010 470#define OFFLD_PARAMS_IR2T 0x00000010
471#define OFFLD_PARAMS_IMD 0x00000020 471#define OFFLD_PARAMS_IMD 0x00000020
472#define OFFLD_PARAMS_DATA_SEQ_INORDER 0x00000040
473#define OFFLD_PARAMS_PDU_SEQ_INORDER 0x00000080
474#define OFFLD_PARAMS_MAX_R2T 0x00FFFF00
472 475
473/** 476/**
474 * Pseudo amap definition in which each bit of the actual structure is defined 477 * Pseudo amap definition in which each bit of the actual structure is defined
@@ -483,7 +486,10 @@ struct amap_beiscsi_offload_params {
483 u8 hde[1]; 486 u8 hde[1];
484 u8 ir2t[1]; 487 u8 ir2t[1];
485 u8 imd[1]; 488 u8 imd[1];
486 u8 pad[26]; 489 u8 data_seq_inorder[1];
490 u8 pdu_seq_inorder[1];
491 u8 max_r2t[16];
492 u8 pad[8];
487 u8 exp_statsn[32]; 493 u8 exp_statsn[32];
488}; 494};
489 495
@@ -785,6 +791,7 @@ struct iscsi_target_context_update_wrb {
785 * Pseudo amap definition in which each bit of the actual structure is defined 791 * Pseudo amap definition in which each bit of the actual structure is defined
786 * as a byte: used to calculate offset/shift/mask of each field 792 * as a byte: used to calculate offset/shift/mask of each field
787 */ 793 */
794#define BE_TGT_CTX_UPDT_CMD 0x07
788struct amap_iscsi_target_context_update_wrb { 795struct amap_iscsi_target_context_update_wrb {
789 u8 lun[14]; /* DWORD 0 */ 796 u8 lun[14]; /* DWORD 0 */
790 u8 lt; /* DWORD 0 */ 797 u8 lt; /* DWORD 0 */
@@ -830,6 +837,47 @@ struct amap_iscsi_target_context_update_wrb {
830 837
831} __packed; 838} __packed;
832 839
840#define BEISCSI_MAX_RECV_DATASEG_LEN (64 * 1024)
841#define BEISCSI_MAX_CXNS 1
842struct amap_iscsi_target_context_update_wrb_v2 {
843 u8 max_burst_length[24]; /* DWORD 0 */
844 u8 rsvd0[3]; /* DWORD 0 */
845 u8 type[5]; /* DWORD 0 */
846 u8 ptr2nextwrb[8]; /* DWORD 1 */
847 u8 wrb_idx[8]; /* DWORD 1 */
848 u8 rsvd1[16]; /* DWORD 1 */
849 u8 max_send_data_segment_length[24]; /* DWORD 2 */
850 u8 rsvd2[8]; /* DWORD 2 */
851 u8 first_burst_length[24]; /* DWORD 3 */
852 u8 rsvd3[8]; /* DOWRD 3 */
853 u8 max_r2t[16]; /* DWORD 4 */
854 u8 rsvd4[10]; /* DWORD 4 */
855 u8 hde; /* DWORD 4 */
856 u8 dde; /* DWORD 4 */
857 u8 erl[2]; /* DWORD 4 */
858 u8 imd; /* DWORD 4 */
859 u8 ir2t; /* DWORD 4 */
860 u8 stat_sn[32]; /* DWORD 5 */
861 u8 rsvd5[32]; /* DWORD 6 */
862 u8 rsvd6[32]; /* DWORD 7 */
863 u8 max_recv_dataseg_len[24]; /* DWORD 8 */
864 u8 rsvd7[8]; /* DWORD 8 */
865 u8 rsvd8[32]; /* DWORD 9 */
866 u8 rsvd9[32]; /* DWORD 10 */
867 u8 max_cxns[16]; /* DWORD 11 */
868 u8 rsvd10[11]; /* DWORD 11*/
869 u8 invld; /* DWORD 11 */
870 u8 rsvd11;/* DWORD 11*/
871 u8 dmsg; /* DWORD 11 */
872 u8 data_seq_inorder; /* DWORD 11 */
873 u8 pdu_seq_inorder; /* DWORD 11 */
874 u8 rsvd12[32]; /*DWORD 12 */
875 u8 rsvd13[32]; /* DWORD 13 */
876 u8 rsvd14[32]; /* DWORD 14 */
877 u8 rsvd15[32]; /* DWORD 15 */
878} __packed;
879
880
833struct be_ring { 881struct be_ring {
834 u32 pages; /* queue size in pages */ 882 u32 pages; /* queue size in pages */
835 u32 id; /* queue id assigned by beklib */ 883 u32 id; /* queue id assigned by beklib */
diff --git a/drivers/scsi/be2iscsi/be_mgmt.c b/drivers/scsi/be2iscsi/be_mgmt.c
index 1ec1db3a1465..b96a159b12c3 100644
--- a/drivers/scsi/be2iscsi/be_mgmt.c
+++ b/drivers/scsi/be2iscsi/be_mgmt.c
@@ -1152,3 +1152,142 @@ beiscsi_drvr_ver_disp(struct device *dev, struct device_attribute *attr,
1152{ 1152{
1153 return snprintf(buf, PAGE_SIZE, BE_NAME "\n"); 1153 return snprintf(buf, PAGE_SIZE, BE_NAME "\n");
1154} 1154}
1155
1156void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
1157 struct wrb_handle *pwrb_handle,
1158 struct be_mem_descriptor *mem_descr)
1159{
1160 struct iscsi_wrb *pwrb = pwrb_handle->pwrb;
1161
1162 memset(pwrb, 0, sizeof(*pwrb));
1163 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1164 max_send_data_segment_length, pwrb,
1165 params->dw[offsetof(struct amap_beiscsi_offload_params,
1166 max_send_data_segment_length) / 32]);
1167 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, type, pwrb,
1168 BE_TGT_CTX_UPDT_CMD);
1169 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1170 first_burst_length,
1171 pwrb,
1172 params->dw[offsetof(struct amap_beiscsi_offload_params,
1173 first_burst_length) / 32]);
1174 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, erl, pwrb,
1175 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1176 erl) / 32] & OFFLD_PARAMS_ERL));
1177 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, dde, pwrb,
1178 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1179 dde) / 32] & OFFLD_PARAMS_DDE) >> 2);
1180 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, hde, pwrb,
1181 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1182 hde) / 32] & OFFLD_PARAMS_HDE) >> 3);
1183 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, ir2t, pwrb,
1184 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1185 ir2t) / 32] & OFFLD_PARAMS_IR2T) >> 4);
1186 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, imd, pwrb,
1187 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1188 imd) / 32] & OFFLD_PARAMS_IMD) >> 5);
1189 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, stat_sn,
1190 pwrb,
1191 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1192 exp_statsn) / 32] + 1));
1193 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, wrb_idx,
1194 pwrb, pwrb_handle->wrb_index);
1195
1196 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1197 max_burst_length, pwrb, params->dw[offsetof
1198 (struct amap_beiscsi_offload_params,
1199 max_burst_length) / 32]);
1200
1201 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, ptr2nextwrb,
1202 pwrb, pwrb_handle->nxt_wrb_index);
1203 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1204 session_state, pwrb, 0);
1205 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, compltonack,
1206 pwrb, 1);
1207 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, notpredblq,
1208 pwrb, 0);
1209 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, mode, pwrb,
1210 0);
1211
1212 mem_descr += ISCSI_MEM_GLOBAL_HEADER;
1213 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1214 pad_buffer_addr_hi, pwrb,
1215 mem_descr->mem_array[0].bus_address.u.a32.address_hi);
1216 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1217 pad_buffer_addr_lo, pwrb,
1218 mem_descr->mem_array[0].bus_address.u.a32.address_lo);
1219}
1220
1221void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
1222 struct wrb_handle *pwrb_handle)
1223{
1224 struct iscsi_wrb *pwrb = pwrb_handle->pwrb;
1225
1226 memset(pwrb, 0, sizeof(*pwrb));
1227
1228 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
1229 max_burst_length, pwrb, params->dw[offsetof
1230 (struct amap_beiscsi_offload_params,
1231 max_burst_length) / 32]);
1232 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1233 max_burst_length, pwrb, params->dw[offsetof
1234 (struct amap_beiscsi_offload_params,
1235 max_burst_length) / 32]);
1236 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1237 type, pwrb,
1238 BE_TGT_CTX_UPDT_CMD);
1239 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1240 ptr2nextwrb,
1241 pwrb, pwrb_handle->nxt_wrb_index);
1242 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, wrb_idx,
1243 pwrb, pwrb_handle->wrb_index);
1244 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1245 max_send_data_segment_length, pwrb,
1246 params->dw[offsetof(struct amap_beiscsi_offload_params,
1247 max_send_data_segment_length) / 32]);
1248 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1249 first_burst_length, pwrb,
1250 params->dw[offsetof(struct amap_beiscsi_offload_params,
1251 first_burst_length) / 32]);
1252 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1253 max_recv_dataseg_len, pwrb, BEISCSI_MAX_RECV_DATASEG_LEN);
1254 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1255 max_cxns, pwrb, BEISCSI_MAX_CXNS);
1256 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, erl, pwrb,
1257 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1258 erl) / 32] & OFFLD_PARAMS_ERL));
1259 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, dde, pwrb,
1260 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1261 dde) / 32] & OFFLD_PARAMS_DDE) >> 2);
1262 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, hde, pwrb,
1263 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1264 hde) / 32] & OFFLD_PARAMS_HDE) >> 3);
1265 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1266 ir2t, pwrb,
1267 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1268 ir2t) / 32] & OFFLD_PARAMS_IR2T) >> 4);
1269 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, imd, pwrb,
1270 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1271 imd) / 32] & OFFLD_PARAMS_IMD) >> 5);
1272 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1273 data_seq_inorder,
1274 pwrb,
1275 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1276 data_seq_inorder) / 32] &
1277 OFFLD_PARAMS_DATA_SEQ_INORDER) >> 6);
1278 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
1279 pdu_seq_inorder,
1280 pwrb,
1281 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1282 pdu_seq_inorder) / 32] &
1283 OFFLD_PARAMS_PDU_SEQ_INORDER) >> 7);
1284 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, max_r2t,
1285 pwrb,
1286 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1287 max_r2t) / 32] &
1288 OFFLD_PARAMS_MAX_R2T) >> 8);
1289 AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, stat_sn,
1290 pwrb,
1291 (params->dw[offsetof(struct amap_beiscsi_offload_params,
1292 exp_statsn) / 32] + 1));
1293}
diff --git a/drivers/scsi/be2iscsi/be_mgmt.h b/drivers/scsi/be2iscsi/be_mgmt.h
index 291c68476c14..4ec61274e70c 100644
--- a/drivers/scsi/be2iscsi/be_mgmt.h
+++ b/drivers/scsi/be2iscsi/be_mgmt.h
@@ -304,4 +304,12 @@ int mgmt_set_vlan(struct beiscsi_hba *phba, uint16_t vlan_tag);
304 304
305ssize_t beiscsi_drvr_ver_disp(struct device *dev, 305ssize_t beiscsi_drvr_ver_disp(struct device *dev,
306 struct device_attribute *attr, char *buf); 306 struct device_attribute *attr, char *buf);
307
308void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
309 struct wrb_handle *pwrb_handle,
310 struct be_mem_descriptor *mem_descr);
311
312void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
313 struct wrb_handle *pwrb_handle);
314
307#endif 315#endif