0001
0002
0003
0004
0005
0006
0007 #ifndef __FCOE_COMMON__
0008 #define __FCOE_COMMON__
0009
0010
0011
0012
0013
0014 #define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12
0015
0016
0017 struct protection_info_ctx {
0018 __le16 flags;
0019 #define PROTECTION_INFO_CTX_HOST_INTERFACE_MASK 0x3
0020 #define PROTECTION_INFO_CTX_HOST_INTERFACE_SHIFT 0
0021 #define PROTECTION_INFO_CTX_DIF_TO_PEER_MASK 0x1
0022 #define PROTECTION_INFO_CTX_DIF_TO_PEER_SHIFT 2
0023 #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_MASK 0x1
0024 #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_SHIFT 3
0025 #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_MASK 0xF
0026 #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_SHIFT 4
0027 #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1
0028 #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_SHIFT 8
0029 #define PROTECTION_INFO_CTX_RESERVED0_MASK 0x7F
0030 #define PROTECTION_INFO_CTX_RESERVED0_SHIFT 9
0031 u8 dix_block_size;
0032 u8 dst_size;
0033 };
0034
0035
0036 union protection_info_union_ctx {
0037 struct protection_info_ctx info;
0038 __le32 value;
0039 };
0040
0041
0042 struct fcoe_fcp_cmd_payload {
0043 __le32 opaque[8];
0044 };
0045
0046
0047 struct fcoe_fcp_rsp_payload {
0048 __le32 opaque[6];
0049 };
0050
0051
0052 struct fcp_rsp_payload_padded {
0053 struct fcoe_fcp_rsp_payload rsp_payload;
0054 __le32 reserved[2];
0055 };
0056
0057
0058 struct fcoe_fcp_xfer_payload {
0059 __le32 opaque[3];
0060 };
0061
0062
0063 struct fcp_xfer_payload_padded {
0064 struct fcoe_fcp_xfer_payload xfer_payload;
0065 __le32 reserved[5];
0066 };
0067
0068
0069 struct fcoe_tx_data_params {
0070 __le32 data_offset;
0071 __le32 offset_in_io;
0072 u8 flags;
0073 #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_MASK 0x1
0074 #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_SHIFT 0
0075 #define FCOE_TX_DATA_PARAMS_DROP_DATA_MASK 0x1
0076 #define FCOE_TX_DATA_PARAMS_DROP_DATA_SHIFT 1
0077 #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_MASK 0x1
0078 #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_SHIFT 2
0079 #define FCOE_TX_DATA_PARAMS_RESERVED0_MASK 0x1F
0080 #define FCOE_TX_DATA_PARAMS_RESERVED0_SHIFT 3
0081 u8 dif_residual;
0082 __le16 seq_cnt;
0083 __le16 single_sge_saved_offset;
0084 __le16 next_dif_offset;
0085 __le16 seq_id;
0086 __le16 reserved3;
0087 };
0088
0089
0090 struct fcoe_tx_mid_path_params {
0091 __le32 parameter;
0092 u8 r_ctl;
0093 u8 type;
0094 u8 cs_ctl;
0095 u8 df_ctl;
0096 __le16 rx_id;
0097 __le16 ox_id;
0098 };
0099
0100
0101 struct fcoe_tx_params {
0102 struct fcoe_tx_data_params data;
0103 struct fcoe_tx_mid_path_params mid_path;
0104 };
0105
0106
0107 union fcoe_tx_info_union_ctx {
0108 struct fcoe_fcp_cmd_payload fcp_cmd_payload;
0109 struct fcp_rsp_payload_padded fcp_rsp_payload;
0110 struct fcp_xfer_payload_padded fcp_xfer_payload;
0111 struct fcoe_tx_params tx_params;
0112 };
0113
0114
0115 struct fcoe_slow_sgl_ctx {
0116 struct regpair base_sgl_addr;
0117 __le16 curr_sge_off;
0118 __le16 remainder_num_sges;
0119 __le16 curr_sgl_index;
0120 __le16 reserved;
0121 };
0122
0123
0124 union fcoe_dix_desc_ctx {
0125 struct fcoe_slow_sgl_ctx dix_sgl;
0126 struct scsi_sge cached_dix_sge;
0127 };
0128
0129
0130 struct ystorm_fcoe_task_st_ctx {
0131 u8 task_type;
0132 u8 sgl_mode;
0133 #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1
0134 #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 0
0135 #define YSTORM_FCOE_TASK_ST_CTX_RSRV_MASK 0x7F
0136 #define YSTORM_FCOE_TASK_ST_CTX_RSRV_SHIFT 1
0137 u8 cached_dix_sge;
0138 u8 expect_first_xfer;
0139 __le32 num_pbf_zero_write;
0140 union protection_info_union_ctx protection_info_union;
0141 __le32 data_2_trns_rem;
0142 struct scsi_sgl_params sgl_params;
0143 u8 reserved1[12];
0144 union fcoe_tx_info_union_ctx tx_info_union;
0145 union fcoe_dix_desc_ctx dix_desc;
0146 struct scsi_cached_sges data_desc;
0147 __le16 ox_id;
0148 __le16 rx_id;
0149 __le32 task_rety_identifier;
0150 u8 reserved2[8];
0151 };
0152
0153 struct ystorm_fcoe_task_ag_ctx {
0154 u8 byte0;
0155 u8 byte1;
0156 __le16 word0;
0157 u8 flags0;
0158 #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_MASK 0xF
0159 #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_SHIFT 0
0160 #define YSTORM_FCOE_TASK_AG_CTX_BIT0_MASK 0x1
0161 #define YSTORM_FCOE_TASK_AG_CTX_BIT0_SHIFT 4
0162 #define YSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
0163 #define YSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
0164 #define YSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1
0165 #define YSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6
0166 #define YSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1
0167 #define YSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7
0168 u8 flags1;
0169 #define YSTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3
0170 #define YSTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 0
0171 #define YSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
0172 #define YSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2
0173 #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
0174 #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
0175 #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1
0176 #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 6
0177 #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
0178 #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7
0179 u8 flags2;
0180 #define YSTORM_FCOE_TASK_AG_CTX_BIT4_MASK 0x1
0181 #define YSTORM_FCOE_TASK_AG_CTX_BIT4_SHIFT 0
0182 #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
0183 #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1
0184 #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
0185 #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2
0186 #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
0187 #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3
0188 #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
0189 #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4
0190 #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
0191 #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5
0192 #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
0193 #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 6
0194 #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
0195 #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7
0196 u8 byte2;
0197 __le32 reg0;
0198 u8 byte3;
0199 u8 byte4;
0200 __le16 rx_id;
0201 __le16 word2;
0202 __le16 word3;
0203 __le16 word4;
0204 __le16 word5;
0205 __le32 reg1;
0206 __le32 reg2;
0207 };
0208
0209 struct tstorm_fcoe_task_ag_ctx {
0210 u8 reserved;
0211 u8 byte1;
0212 __le16 icid;
0213 u8 flags0;
0214 #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
0215 #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
0216 #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
0217 #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
0218 #define TSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
0219 #define TSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
0220 #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_MASK 0x1
0221 #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_SHIFT 6
0222 #define TSTORM_FCOE_TASK_AG_CTX_VALID_MASK 0x1
0223 #define TSTORM_FCOE_TASK_AG_CTX_VALID_SHIFT 7
0224 u8 flags1;
0225 #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_MASK 0x1
0226 #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_SHIFT 0
0227 #define TSTORM_FCOE_TASK_AG_CTX_BIT5_MASK 0x1
0228 #define TSTORM_FCOE_TASK_AG_CTX_BIT5_SHIFT 1
0229 #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_MASK 0x3
0230 #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_SHIFT 2
0231 #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_MASK 0x3
0232 #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_SHIFT 4
0233 #define TSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
0234 #define TSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 6
0235 u8 flags2;
0236 #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_MASK 0x3
0237 #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_SHIFT 0
0238 #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3
0239 #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 2
0240 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_MASK 0x3
0241 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_SHIFT 4
0242 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_MASK 0x3
0243 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_SHIFT 6
0244 u8 flags3;
0245 #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_MASK 0x3
0246 #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_SHIFT 0
0247 #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_MASK 0x1
0248 #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_SHIFT 2
0249 #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_MASK 0x1
0250 #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_SHIFT 3
0251 #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
0252 #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 4
0253 #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
0254 #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 5
0255 #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1
0256 #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6
0257 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_MASK 0x1
0258 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_SHIFT 7
0259 u8 flags4;
0260 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_MASK 0x1
0261 #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_SHIFT 0
0262 #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_MASK 0x1
0263 #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_SHIFT 1
0264 #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
0265 #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 2
0266 #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
0267 #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 3
0268 #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
0269 #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 4
0270 #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
0271 #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 5
0272 #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
0273 #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 6
0274 #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
0275 #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 7
0276 u8 cleanup_state;
0277 __le16 last_sent_tid;
0278 __le32 rec_rr_tov_exp_timeout;
0279 u8 byte3;
0280 u8 byte4;
0281 __le16 word2;
0282 __le16 word3;
0283 __le16 word4;
0284 __le32 data_offset_end_of_seq;
0285 __le32 data_offset_next;
0286 };
0287
0288
0289 struct fcoe_exp_ro {
0290 __le32 data_offset;
0291 __le32 reserved;
0292 };
0293
0294
0295 union fcoe_cleanup_addr_exp_ro_union {
0296 struct regpair abts_rsp_fc_payload_hi;
0297 struct fcoe_exp_ro exp_ro;
0298 };
0299
0300
0301 struct fcoe_abts_pkt {
0302 __le32 abts_rsp_fc_payload_lo;
0303 __le16 abts_rsp_rx_id;
0304 u8 abts_rsp_rctl;
0305 u8 reserved2;
0306 };
0307
0308
0309 struct fcoe_tstorm_fcoe_task_st_ctx_read_write {
0310 union fcoe_cleanup_addr_exp_ro_union cleanup_addr_exp_ro_union;
0311 __le16 flags;
0312 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_MASK 0x1
0313 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_SHIFT 0
0314 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_MASK 0x1
0315 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_SHIFT 1
0316 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_MASK 0x1
0317 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_SHIFT 2
0318 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_MASK 0x1
0319 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_SHIFT 3
0320 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_MASK 0x1
0321 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_SHIFT 4
0322 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_MASK 0x1
0323 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_SHIFT 5
0324 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_MASK 0x3
0325 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_SHIFT 6
0326 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_MASK 0xFF
0327 #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_SHIFT 8
0328 __le16 seq_cnt;
0329 u8 seq_id;
0330 u8 ooo_rx_seq_id;
0331 __le16 rx_id;
0332 struct fcoe_abts_pkt abts_data;
0333 __le32 e_d_tov_exp_timeout_val;
0334 __le16 ooo_rx_seq_cnt;
0335 __le16 reserved1;
0336 };
0337
0338
0339 struct fcoe_tstorm_fcoe_task_st_ctx_read_only {
0340 u8 task_type;
0341 u8 dev_type;
0342 u8 conf_supported;
0343 u8 glbl_q_num;
0344 __le32 cid;
0345 __le32 fcp_cmd_trns_size;
0346 __le32 rsrv;
0347 };
0348
0349
0350 struct tstorm_fcoe_task_st_ctx {
0351 struct fcoe_tstorm_fcoe_task_st_ctx_read_write read_write;
0352 struct fcoe_tstorm_fcoe_task_st_ctx_read_only read_only;
0353 };
0354
0355 struct mstorm_fcoe_task_ag_ctx {
0356 u8 byte0;
0357 u8 byte1;
0358 __le16 icid;
0359 u8 flags0;
0360 #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
0361 #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
0362 #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
0363 #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
0364 #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_MASK 0x1
0365 #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_SHIFT 5
0366 #define MSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1
0367 #define MSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6
0368 #define MSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1
0369 #define MSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7
0370 u8 flags1;
0371 #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3
0372 #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 0
0373 #define MSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
0374 #define MSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2
0375 #define MSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
0376 #define MSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 4
0377 #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1
0378 #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6
0379 #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
0380 #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7
0381 u8 flags2;
0382 #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
0383 #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 0
0384 #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
0385 #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1
0386 #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
0387 #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2
0388 #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
0389 #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3
0390 #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
0391 #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4
0392 #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
0393 #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5
0394 #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_MASK 0x1
0395 #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_SHIFT 6
0396 #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
0397 #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7
0398 u8 cleanup_state;
0399 __le32 received_bytes;
0400 u8 byte3;
0401 u8 glbl_q_num;
0402 __le16 word1;
0403 __le16 tid_to_xfer;
0404 __le16 word3;
0405 __le16 word4;
0406 __le16 word5;
0407 __le32 expected_bytes;
0408 __le32 reg2;
0409 };
0410
0411
0412 struct mstorm_fcoe_task_st_ctx {
0413 struct regpair rsp_buf_addr;
0414 __le32 rsrv[2];
0415 struct scsi_sgl_params sgl_params;
0416 __le32 data_2_trns_rem;
0417 __le32 data_buffer_offset;
0418 __le16 parent_id;
0419 __le16 flags;
0420 #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_MASK 0xF
0421 #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_SHIFT 0
0422 #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_MASK 0x3
0423 #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_SHIFT 4
0424 #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_MASK 0x1
0425 #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_SHIFT 6
0426 #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_MASK 0x1
0427 #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_SHIFT 7
0428 #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_MASK 0x3
0429 #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_SHIFT 8
0430 #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1
0431 #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_SHIFT 10
0432 #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_MASK 0x1
0433 #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_SHIFT 11
0434 #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_MASK 0x1
0435 #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_SHIFT 12
0436 #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1
0437 #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 13
0438 #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_MASK 0x3
0439 #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_SHIFT 14
0440 struct scsi_cached_sges data_desc;
0441 };
0442
0443 struct ustorm_fcoe_task_ag_ctx {
0444 u8 reserved;
0445 u8 byte1;
0446 __le16 icid;
0447 u8 flags0;
0448 #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
0449 #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
0450 #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
0451 #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
0452 #define USTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
0453 #define USTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
0454 #define USTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3
0455 #define USTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 6
0456 u8 flags1;
0457 #define USTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
0458 #define USTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 0
0459 #define USTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
0460 #define USTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 2
0461 #define USTORM_FCOE_TASK_AG_CTX_CF3_MASK 0x3
0462 #define USTORM_FCOE_TASK_AG_CTX_CF3_SHIFT 4
0463 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
0464 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
0465 u8 flags2;
0466 #define USTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1
0467 #define USTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 0
0468 #define USTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
0469 #define USTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 1
0470 #define USTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
0471 #define USTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 2
0472 #define USTORM_FCOE_TASK_AG_CTX_CF3EN_MASK 0x1
0473 #define USTORM_FCOE_TASK_AG_CTX_CF3EN_SHIFT 3
0474 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
0475 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
0476 #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
0477 #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 5
0478 #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
0479 #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 6
0480 #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
0481 #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 7
0482 u8 flags3;
0483 #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
0484 #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 0
0485 #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
0486 #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 1
0487 #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
0488 #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 2
0489 #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
0490 #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 3
0491 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
0492 #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
0493 __le32 dif_err_intervals;
0494 __le32 dif_error_1st_interval;
0495 __le32 global_cq_num;
0496 __le32 reg3;
0497 __le32 reg4;
0498 __le32 reg5;
0499 };
0500
0501
0502 struct fcoe_task_context {
0503 struct ystorm_fcoe_task_st_ctx ystorm_st_context;
0504 struct regpair ystorm_st_padding[2];
0505 struct tdif_task_context tdif_context;
0506 struct ystorm_fcoe_task_ag_ctx ystorm_ag_context;
0507 struct tstorm_fcoe_task_ag_ctx tstorm_ag_context;
0508 struct timers_context timer_context;
0509 struct tstorm_fcoe_task_st_ctx tstorm_st_context;
0510 struct regpair tstorm_st_padding[2];
0511 struct mstorm_fcoe_task_ag_ctx mstorm_ag_context;
0512 struct mstorm_fcoe_task_st_ctx mstorm_st_context;
0513 struct ustorm_fcoe_task_ag_ctx ustorm_ag_context;
0514 struct rdif_task_context rdif_context;
0515 };
0516
0517
0518 union fcoe_additional_info_union {
0519 __le32 previous_tid;
0520 __le32 parent_tid;
0521 __le32 burst_length;
0522 __le32 seq_rec_updated_offset;
0523 };
0524
0525
0526 enum fcoe_completion_status {
0527 FCOE_COMPLETION_STATUS_SUCCESS,
0528 FCOE_COMPLETION_STATUS_FCOE_VER_ERR,
0529 FCOE_COMPLETION_STATUS_SRC_MAC_ADD_ARR_ERR,
0530 MAX_FCOE_COMPLETION_STATUS
0531 };
0532
0533
0534 struct fc_addr_nw {
0535 u8 addr_lo;
0536 u8 addr_mid;
0537 u8 addr_hi;
0538 };
0539
0540
0541 struct fcoe_conn_offload_ramrod_data {
0542 struct regpair sq_pbl_addr;
0543 struct regpair sq_curr_page_addr;
0544 struct regpair sq_next_page_addr;
0545 struct regpair xferq_pbl_addr;
0546 struct regpair xferq_curr_page_addr;
0547 struct regpair xferq_next_page_addr;
0548 struct regpair respq_pbl_addr;
0549 struct regpair respq_curr_page_addr;
0550 struct regpair respq_next_page_addr;
0551 __le16 dst_mac_addr_lo;
0552 __le16 dst_mac_addr_mid;
0553 __le16 dst_mac_addr_hi;
0554 __le16 src_mac_addr_lo;
0555 __le16 src_mac_addr_mid;
0556 __le16 src_mac_addr_hi;
0557 __le16 tx_max_fc_pay_len;
0558 __le16 e_d_tov_timer_val;
0559 __le16 rx_max_fc_pay_len;
0560 __le16 vlan_tag;
0561 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_MASK 0xFFF
0562 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_SHIFT 0
0563 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_MASK 0x1
0564 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_SHIFT 12
0565 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_MASK 0x7
0566 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_SHIFT 13
0567 __le16 physical_q0;
0568 __le16 rec_rr_tov_timer_val;
0569 struct fc_addr_nw s_id;
0570 u8 max_conc_seqs_c3;
0571 struct fc_addr_nw d_id;
0572 u8 flags;
0573 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_MASK 0x1
0574 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_SHIFT 0
0575 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_MASK 0x1
0576 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_SHIFT 1
0577 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_MASK 0x1
0578 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_SHIFT 2
0579 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_MASK 0x1
0580 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_SHIFT 3
0581 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_SINGLE_VLAN_MASK 0x1
0582 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_SINGLE_VLAN_SHIFT 4
0583 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_MASK 0x3
0584 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_SHIFT 5
0585 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_MASK 0x1
0586 #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_SHIFT 7
0587 __le16 conn_id;
0588 u8 def_q_idx;
0589 u8 reserved[5];
0590 };
0591
0592
0593 struct fcoe_conn_terminate_ramrod_data {
0594 struct regpair terminate_params_addr;
0595 };
0596
0597
0598 enum fcoe_device_type {
0599 FCOE_TASK_DEV_TYPE_DISK,
0600 FCOE_TASK_DEV_TYPE_TAPE,
0601 MAX_FCOE_DEVICE_TYPE
0602 };
0603
0604
0605 struct fcoe_fast_sgl_ctx {
0606 struct regpair sgl_start_addr;
0607 __le32 sgl_byte_offset;
0608 __le16 task_reuse_cnt;
0609 __le16 init_offset_in_first_sge;
0610 };
0611
0612
0613 struct fcoe_init_func_ramrod_data {
0614 struct scsi_init_func_params func_params;
0615 struct scsi_init_func_queues q_params;
0616 __le16 mtu;
0617 __le16 sq_num_pages_in_pbl;
0618 __le32 reserved[3];
0619 };
0620
0621
0622 enum fcoe_mode_type {
0623 FCOE_INITIATOR_MODE = 0x0,
0624 FCOE_TARGET_MODE = 0x1,
0625 FCOE_BOTH_OR_NOT_CHOSEN = 0x3,
0626 MAX_FCOE_MODE_TYPE
0627 };
0628
0629
0630 struct fcoe_rx_stat {
0631 struct regpair fcoe_rx_byte_cnt;
0632 struct regpair fcoe_rx_data_pkt_cnt;
0633 struct regpair fcoe_rx_xfer_pkt_cnt;
0634 struct regpair fcoe_rx_other_pkt_cnt;
0635 __le32 fcoe_silent_drop_pkt_cmdq_full_cnt;
0636 __le32 fcoe_silent_drop_pkt_rq_full_cnt;
0637 __le32 fcoe_silent_drop_pkt_crc_error_cnt;
0638 __le32 fcoe_silent_drop_pkt_task_invalid_cnt;
0639 __le32 fcoe_silent_drop_total_pkt_cnt;
0640 __le32 rsrv;
0641 };
0642
0643
0644 enum fcoe_sqe_request_type {
0645 SEND_FCOE_CMD,
0646 SEND_FCOE_MIDPATH,
0647 SEND_FCOE_ABTS_REQUEST,
0648 FCOE_EXCHANGE_CLEANUP,
0649 FCOE_SEQUENCE_RECOVERY,
0650 SEND_FCOE_XFER_RDY,
0651 SEND_FCOE_RSP,
0652 SEND_FCOE_RSP_WITH_SENSE_DATA,
0653 SEND_FCOE_TARGET_DATA,
0654 SEND_FCOE_INITIATOR_DATA,
0655 SEND_FCOE_XFER_CONTINUATION_RDY,
0656 SEND_FCOE_TARGET_ABTS_RSP,
0657 MAX_FCOE_SQE_REQUEST_TYPE
0658 };
0659
0660
0661 struct fcoe_stat_ramrod_data {
0662 struct regpair stat_params_addr;
0663 };
0664
0665
0666 enum fcoe_task_type {
0667 FCOE_TASK_TYPE_WRITE_INITIATOR,
0668 FCOE_TASK_TYPE_READ_INITIATOR,
0669 FCOE_TASK_TYPE_MIDPATH,
0670 FCOE_TASK_TYPE_UNSOLICITED,
0671 FCOE_TASK_TYPE_ABTS,
0672 FCOE_TASK_TYPE_EXCHANGE_CLEANUP,
0673 FCOE_TASK_TYPE_SEQUENCE_CLEANUP,
0674 FCOE_TASK_TYPE_WRITE_TARGET,
0675 FCOE_TASK_TYPE_READ_TARGET,
0676 FCOE_TASK_TYPE_RSP,
0677 FCOE_TASK_TYPE_RSP_SENSE_DATA,
0678 FCOE_TASK_TYPE_ABTS_TARGET,
0679 FCOE_TASK_TYPE_ENUM_SIZE,
0680 MAX_FCOE_TASK_TYPE
0681 };
0682
0683
0684 struct fcoe_tx_stat {
0685 struct regpair fcoe_tx_byte_cnt;
0686 struct regpair fcoe_tx_data_pkt_cnt;
0687 struct regpair fcoe_tx_xfer_pkt_cnt;
0688 struct regpair fcoe_tx_other_pkt_cnt;
0689 };
0690
0691
0692 struct fcoe_wqe {
0693 __le16 task_id;
0694 __le16 flags;
0695 #define FCOE_WQE_REQ_TYPE_MASK 0xF
0696 #define FCOE_WQE_REQ_TYPE_SHIFT 0
0697 #define FCOE_WQE_SGL_MODE_MASK 0x1
0698 #define FCOE_WQE_SGL_MODE_SHIFT 4
0699 #define FCOE_WQE_CONTINUATION_MASK 0x1
0700 #define FCOE_WQE_CONTINUATION_SHIFT 5
0701 #define FCOE_WQE_SEND_AUTO_RSP_MASK 0x1
0702 #define FCOE_WQE_SEND_AUTO_RSP_SHIFT 6
0703 #define FCOE_WQE_RESERVED_MASK 0x1
0704 #define FCOE_WQE_RESERVED_SHIFT 7
0705 #define FCOE_WQE_NUM_SGES_MASK 0xF
0706 #define FCOE_WQE_NUM_SGES_SHIFT 8
0707 #define FCOE_WQE_RESERVED1_MASK 0xF
0708 #define FCOE_WQE_RESERVED1_SHIFT 12
0709 union fcoe_additional_info_union additional_info_union;
0710 };
0711
0712
0713 struct xfrqe_prot_flags {
0714 u8 flags;
0715 #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF
0716 #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0
0717 #define XFRQE_PROT_FLAGS_DIF_TO_PEER_MASK 0x1
0718 #define XFRQE_PROT_FLAGS_DIF_TO_PEER_SHIFT 4
0719 #define XFRQE_PROT_FLAGS_HOST_INTERFACE_MASK 0x3
0720 #define XFRQE_PROT_FLAGS_HOST_INTERFACE_SHIFT 5
0721 #define XFRQE_PROT_FLAGS_RESERVED_MASK 0x1
0722 #define XFRQE_PROT_FLAGS_RESERVED_SHIFT 7
0723 };
0724
0725
0726 struct fcoe_db_data {
0727 u8 params;
0728 #define FCOE_DB_DATA_DEST_MASK 0x3
0729 #define FCOE_DB_DATA_DEST_SHIFT 0
0730 #define FCOE_DB_DATA_AGG_CMD_MASK 0x3
0731 #define FCOE_DB_DATA_AGG_CMD_SHIFT 2
0732 #define FCOE_DB_DATA_BYPASS_EN_MASK 0x1
0733 #define FCOE_DB_DATA_BYPASS_EN_SHIFT 4
0734 #define FCOE_DB_DATA_RESERVED_MASK 0x1
0735 #define FCOE_DB_DATA_RESERVED_SHIFT 5
0736 #define FCOE_DB_DATA_AGG_VAL_SEL_MASK 0x3
0737 #define FCOE_DB_DATA_AGG_VAL_SEL_SHIFT 6
0738 u8 agg_flags;
0739 __le16 sq_prod;
0740 };
0741
0742 #endif