aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/qed/fcoe_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/qed/fcoe_common.h')
-rw-r--r--include/linux/qed/fcoe_common.h940
1 files changed, 508 insertions, 432 deletions
diff --git a/include/linux/qed/fcoe_common.h b/include/linux/qed/fcoe_common.h
index 12fc9e788eea..22077c586853 100644
--- a/include/linux/qed/fcoe_common.h
+++ b/include/linux/qed/fcoe_common.h
@@ -8,217 +8,78 @@
8 8
9#ifndef __FCOE_COMMON__ 9#ifndef __FCOE_COMMON__
10#define __FCOE_COMMON__ 10#define __FCOE_COMMON__
11
11/*********************/ 12/*********************/
12/* FCOE FW CONSTANTS */ 13/* FCOE FW CONSTANTS */
13/*********************/ 14/*********************/
14 15
15#define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12 16#define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12
16 17
17struct fcoe_abts_pkt { 18/* The fcoe storm task context protection-information of Ystorm */
18 __le32 abts_rsp_fc_payload_lo; 19struct protection_info_ctx {
19 __le16 abts_rsp_rx_id; 20 __le16 flags;
20 u8 abts_rsp_rctl; 21#define PROTECTION_INFO_CTX_HOST_INTERFACE_MASK 0x3
21 u8 reserved2; 22#define PROTECTION_INFO_CTX_HOST_INTERFACE_SHIFT 0
22}; 23#define PROTECTION_INFO_CTX_DIF_TO_PEER_MASK 0x1
23 24#define PROTECTION_INFO_CTX_DIF_TO_PEER_SHIFT 2
24/* FCoE additional WQE (Sq/XferQ) information */ 25#define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_MASK 0x1
25union fcoe_additional_info_union { 26#define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_SHIFT 3
26 __le32 previous_tid; 27#define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_MASK 0xF
27 __le32 parent_tid; 28#define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_SHIFT 4
28 __le32 burst_length; 29#define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1
29 __le32 seq_rec_updated_offset; 30#define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_SHIFT 8
30}; 31#define PROTECTION_INFO_CTX_RESERVED0_MASK 0x7F
31 32#define PROTECTION_INFO_CTX_RESERVED0_SHIFT 9
32struct fcoe_exp_ro { 33 u8 dix_block_size;
33 __le32 data_offset; 34 u8 dst_size;
34 __le32 reserved;
35};
36
37union fcoe_cleanup_addr_exp_ro_union {
38 struct regpair abts_rsp_fc_payload_hi;
39 struct fcoe_exp_ro exp_ro;
40};
41
42/* FCoE Ramrod Command IDs */
43enum fcoe_completion_status {
44 FCOE_COMPLETION_STATUS_SUCCESS,
45 FCOE_COMPLETION_STATUS_FCOE_VER_ERR,
46 FCOE_COMPLETION_STATUS_SRC_MAC_ADD_ARR_ERR,
47 MAX_FCOE_COMPLETION_STATUS
48};
49
50struct fc_addr_nw {
51 u8 addr_lo;
52 u8 addr_mid;
53 u8 addr_hi;
54};
55
56/* FCoE connection offload */
57struct fcoe_conn_offload_ramrod_data {
58 struct regpair sq_pbl_addr;
59 struct regpair sq_curr_page_addr;
60 struct regpair sq_next_page_addr;
61 struct regpair xferq_pbl_addr;
62 struct regpair xferq_curr_page_addr;
63 struct regpair xferq_next_page_addr;
64 struct regpair respq_pbl_addr;
65 struct regpair respq_curr_page_addr;
66 struct regpair respq_next_page_addr;
67 __le16 dst_mac_addr_lo;
68 __le16 dst_mac_addr_mid;
69 __le16 dst_mac_addr_hi;
70 __le16 src_mac_addr_lo;
71 __le16 src_mac_addr_mid;
72 __le16 src_mac_addr_hi;
73 __le16 tx_max_fc_pay_len;
74 __le16 e_d_tov_timer_val;
75 __le16 rx_max_fc_pay_len;
76 __le16 vlan_tag;
77#define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_MASK 0xFFF
78#define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_SHIFT 0
79#define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_MASK 0x1
80#define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_SHIFT 12
81#define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_MASK 0x7
82#define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_SHIFT 13
83 __le16 physical_q0;
84 __le16 rec_rr_tov_timer_val;
85 struct fc_addr_nw s_id;
86 u8 max_conc_seqs_c3;
87 struct fc_addr_nw d_id;
88 u8 flags;
89#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_MASK 0x1
90#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_SHIFT 0
91#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_MASK 0x1
92#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_SHIFT 1
93#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_MASK 0x1
94#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_SHIFT 2
95#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_MASK 0x1
96#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_SHIFT 3
97#define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_MASK 0x3
98#define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_SHIFT 4
99#define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_MASK 0x3
100#define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_SHIFT 6
101 __le16 conn_id;
102 u8 def_q_idx;
103 u8 reserved[5];
104};
105
106/* FCoE terminate connection request */
107struct fcoe_conn_terminate_ramrod_data {
108 struct regpair terminate_params_addr;
109};
110
111struct fcoe_slow_sgl_ctx {
112 struct regpair base_sgl_addr;
113 __le16 curr_sge_off;
114 __le16 remainder_num_sges;
115 __le16 curr_sgl_index;
116 __le16 reserved;
117};
118
119union fcoe_dix_desc_ctx {
120 struct fcoe_slow_sgl_ctx dix_sgl;
121 struct scsi_sge cached_dix_sge;
122}; 35};
123 36
124struct fcoe_fast_sgl_ctx { 37/* The fcoe storm task context protection-information of Ystorm */
125 struct regpair sgl_start_addr; 38union protection_info_union_ctx {
126 __le32 sgl_byte_offset; 39 struct protection_info_ctx info;
127 __le16 task_reuse_cnt; 40 __le32 value;
128 __le16 init_offset_in_first_sge;
129}; 41};
130 42
43/* FCP CMD payload */
131struct fcoe_fcp_cmd_payload { 44struct fcoe_fcp_cmd_payload {
132 __le32 opaque[8]; 45 __le32 opaque[8];
133}; 46};
134 47
48/* FCP RSP payload */
135struct fcoe_fcp_rsp_payload { 49struct fcoe_fcp_rsp_payload {
136 __le32 opaque[6]; 50 __le32 opaque[6];
137}; 51};
138 52
139struct fcoe_fcp_xfer_payload { 53/* FCP RSP payload */
140 __le32 opaque[3];
141};
142
143/* FCoE firmware function init */
144struct fcoe_init_func_ramrod_data {
145 struct scsi_init_func_params func_params;
146 struct scsi_init_func_queues q_params;
147 __le16 mtu;
148 __le16 sq_num_pages_in_pbl;
149 __le32 reserved;
150};
151
152/* FCoE: Mode of the connection: Target or Initiator or both */
153enum fcoe_mode_type {
154 FCOE_INITIATOR_MODE = 0x0,
155 FCOE_TARGET_MODE = 0x1,
156 FCOE_BOTH_OR_NOT_CHOSEN = 0x3,
157 MAX_FCOE_MODE_TYPE
158};
159
160struct fcoe_rx_stat {
161 struct regpair fcoe_rx_byte_cnt;
162 struct regpair fcoe_rx_data_pkt_cnt;
163 struct regpair fcoe_rx_xfer_pkt_cnt;
164 struct regpair fcoe_rx_other_pkt_cnt;
165 __le32 fcoe_silent_drop_pkt_cmdq_full_cnt;
166 __le32 fcoe_silent_drop_pkt_rq_full_cnt;
167 __le32 fcoe_silent_drop_pkt_crc_error_cnt;
168 __le32 fcoe_silent_drop_pkt_task_invalid_cnt;
169 __le32 fcoe_silent_drop_total_pkt_cnt;
170 __le32 rsrv;
171};
172
173struct fcoe_stat_ramrod_data {
174 struct regpair stat_params_addr;
175};
176
177struct protection_info_ctx {
178 __le16 flags;
179#define PROTECTION_INFO_CTX_HOST_INTERFACE_MASK 0x3
180#define PROTECTION_INFO_CTX_HOST_INTERFACE_SHIFT 0
181#define PROTECTION_INFO_CTX_DIF_TO_PEER_MASK 0x1
182#define PROTECTION_INFO_CTX_DIF_TO_PEER_SHIFT 2
183#define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_MASK 0x1
184#define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_SHIFT 3
185#define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_MASK 0xF
186#define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_SHIFT 4
187#define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1
188#define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_SHIFT 8
189#define PROTECTION_INFO_CTX_RESERVED0_MASK 0x7F
190#define PROTECTION_INFO_CTX_RESERVED0_SHIFT 9
191 u8 dix_block_size;
192 u8 dst_size;
193};
194
195union protection_info_union_ctx {
196 struct protection_info_ctx info;
197 __le32 value;
198};
199
200struct fcp_rsp_payload_padded { 54struct fcp_rsp_payload_padded {
201 struct fcoe_fcp_rsp_payload rsp_payload; 55 struct fcoe_fcp_rsp_payload rsp_payload;
202 __le32 reserved[2]; 56 __le32 reserved[2];
203}; 57};
204 58
59/* FCP RSP payload */
60struct fcoe_fcp_xfer_payload {
61 __le32 opaque[3];
62};
63
64/* FCP RSP payload */
205struct fcp_xfer_payload_padded { 65struct fcp_xfer_payload_padded {
206 struct fcoe_fcp_xfer_payload xfer_payload; 66 struct fcoe_fcp_xfer_payload xfer_payload;
207 __le32 reserved[5]; 67 __le32 reserved[5];
208}; 68};
209 69
70/* Task params */
210struct fcoe_tx_data_params { 71struct fcoe_tx_data_params {
211 __le32 data_offset; 72 __le32 data_offset;
212 __le32 offset_in_io; 73 __le32 offset_in_io;
213 u8 flags; 74 u8 flags;
214#define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_MASK 0x1 75#define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_MASK 0x1
215#define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_SHIFT 0 76#define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_SHIFT 0
216#define FCOE_TX_DATA_PARAMS_DROP_DATA_MASK 0x1 77#define FCOE_TX_DATA_PARAMS_DROP_DATA_MASK 0x1
217#define FCOE_TX_DATA_PARAMS_DROP_DATA_SHIFT 1 78#define FCOE_TX_DATA_PARAMS_DROP_DATA_SHIFT 1
218#define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_MASK 0x1 79#define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_MASK 0x1
219#define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_SHIFT 2 80#define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_SHIFT 2
220#define FCOE_TX_DATA_PARAMS_RESERVED0_MASK 0x1F 81#define FCOE_TX_DATA_PARAMS_RESERVED0_MASK 0x1F
221#define FCOE_TX_DATA_PARAMS_RESERVED0_SHIFT 3 82#define FCOE_TX_DATA_PARAMS_RESERVED0_SHIFT 3
222 u8 dif_residual; 83 u8 dif_residual;
223 __le16 seq_cnt; 84 __le16 seq_cnt;
224 __le16 single_sge_saved_offset; 85 __le16 single_sge_saved_offset;
@@ -227,6 +88,7 @@ struct fcoe_tx_data_params {
227 __le16 reserved3; 88 __le16 reserved3;
228}; 89};
229 90
91/* Middle path parameters: FC header fields provided by the driver */
230struct fcoe_tx_mid_path_params { 92struct fcoe_tx_mid_path_params {
231 __le32 parameter; 93 __le32 parameter;
232 u8 r_ctl; 94 u8 r_ctl;
@@ -237,11 +99,13 @@ struct fcoe_tx_mid_path_params {
237 __le16 ox_id; 99 __le16 ox_id;
238}; 100};
239 101
102/* Task params */
240struct fcoe_tx_params { 103struct fcoe_tx_params {
241 struct fcoe_tx_data_params data; 104 struct fcoe_tx_data_params data;
242 struct fcoe_tx_mid_path_params mid_path; 105 struct fcoe_tx_mid_path_params mid_path;
243}; 106};
244 107
108/* Union of FCP CMD payload \ TX params \ ABTS \ Cleanup */
245union fcoe_tx_info_union_ctx { 109union fcoe_tx_info_union_ctx {
246 struct fcoe_fcp_cmd_payload fcp_cmd_payload; 110 struct fcoe_fcp_cmd_payload fcp_cmd_payload;
247 struct fcp_rsp_payload_padded fcp_rsp_payload; 111 struct fcp_rsp_payload_padded fcp_rsp_payload;
@@ -249,13 +113,29 @@ union fcoe_tx_info_union_ctx {
249 struct fcoe_tx_params tx_params; 113 struct fcoe_tx_params tx_params;
250}; 114};
251 115
116/* Data sgl */
117struct fcoe_slow_sgl_ctx {
118 struct regpair base_sgl_addr;
119 __le16 curr_sge_off;
120 __le16 remainder_num_sges;
121 __le16 curr_sgl_index;
122 __le16 reserved;
123};
124
125/* Union of DIX SGL \ cached DIX sges */
126union fcoe_dix_desc_ctx {
127 struct fcoe_slow_sgl_ctx dix_sgl;
128 struct scsi_sge cached_dix_sge;
129};
130
131/* The fcoe storm task context of Ystorm */
252struct ystorm_fcoe_task_st_ctx { 132struct ystorm_fcoe_task_st_ctx {
253 u8 task_type; 133 u8 task_type;
254 u8 sgl_mode; 134 u8 sgl_mode;
255#define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 135#define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1
256#define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 0 136#define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 0
257#define YSTORM_FCOE_TASK_ST_CTX_RSRV_MASK 0x7F 137#define YSTORM_FCOE_TASK_ST_CTX_RSRV_MASK 0x7F
258#define YSTORM_FCOE_TASK_ST_CTX_RSRV_SHIFT 1 138#define YSTORM_FCOE_TASK_ST_CTX_RSRV_SHIFT 1
259 u8 cached_dix_sge; 139 u8 cached_dix_sge;
260 u8 expect_first_xfer; 140 u8 expect_first_xfer;
261 __le32 num_pbf_zero_write; 141 __le32 num_pbf_zero_write;
@@ -272,49 +152,49 @@ struct ystorm_fcoe_task_st_ctx {
272 u8 reserved2[8]; 152 u8 reserved2[8];
273}; 153};
274 154
275struct ystorm_fcoe_task_ag_ctx { 155struct e4_ystorm_fcoe_task_ag_ctx {
276 u8 byte0; 156 u8 byte0;
277 u8 byte1; 157 u8 byte1;
278 __le16 word0; 158 __le16 word0;
279 u8 flags0; 159 u8 flags0;
280#define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_MASK 0xF 160#define E4_YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_MASK 0xF
281#define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_SHIFT 0 161#define E4_YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_SHIFT 0
282#define YSTORM_FCOE_TASK_AG_CTX_BIT0_MASK 0x1 162#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT0_MASK 0x1
283#define YSTORM_FCOE_TASK_AG_CTX_BIT0_SHIFT 4 163#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT0_SHIFT 4
284#define YSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 164#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
285#define YSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 165#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
286#define YSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 166#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1
287#define YSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 167#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6
288#define YSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 168#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1
289#define YSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 169#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7
290 u8 flags1; 170 u8 flags1;
291#define YSTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 171#define E4_YSTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3
292#define YSTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 0 172#define E4_YSTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 0
293#define YSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 173#define E4_YSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
294#define YSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 174#define E4_YSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2
295#define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 175#define E4_YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
296#define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 176#define E4_YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
297#define YSTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 177#define E4_YSTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1
298#define YSTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 6 178#define E4_YSTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 6
299#define YSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 179#define E4_YSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
300#define YSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 180#define E4_YSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7
301 u8 flags2; 181 u8 flags2;
302#define YSTORM_FCOE_TASK_AG_CTX_BIT4_MASK 0x1 182#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT4_MASK 0x1
303#define YSTORM_FCOE_TASK_AG_CTX_BIT4_SHIFT 0 183#define E4_YSTORM_FCOE_TASK_AG_CTX_BIT4_SHIFT 0
304#define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 184#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
305#define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 185#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1
306#define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 186#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
307#define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 187#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2
308#define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 188#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
309#define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 189#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3
310#define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 190#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
311#define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 191#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4
312#define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 192#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
313#define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 193#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5
314#define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 194#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
315#define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 6 195#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 6
316#define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 196#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
317#define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 197#define E4_YSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7
318 u8 byte2; 198 u8 byte2;
319 __le32 reg0; 199 __le32 reg0;
320 u8 byte3; 200 u8 byte3;
@@ -328,73 +208,73 @@ struct ystorm_fcoe_task_ag_ctx {
328 __le32 reg2; 208 __le32 reg2;
329}; 209};
330 210
331struct tstorm_fcoe_task_ag_ctx { 211struct e4_tstorm_fcoe_task_ag_ctx {
332 u8 reserved; 212 u8 reserved;
333 u8 byte1; 213 u8 byte1;
334 __le16 icid; 214 __le16 icid;
335 u8 flags0; 215 u8 flags0;
336#define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 216#define E4_TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
337#define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 217#define E4_TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
338#define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 218#define E4_TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
339#define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 219#define E4_TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
340#define TSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 220#define E4_TSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
341#define TSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 221#define E4_TSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
342#define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_MASK 0x1 222#define E4_TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_MASK 0x1
343#define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_SHIFT 6 223#define E4_TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_SHIFT 6
344#define TSTORM_FCOE_TASK_AG_CTX_VALID_MASK 0x1 224#define E4_TSTORM_FCOE_TASK_AG_CTX_VALID_MASK 0x1
345#define TSTORM_FCOE_TASK_AG_CTX_VALID_SHIFT 7 225#define E4_TSTORM_FCOE_TASK_AG_CTX_VALID_SHIFT 7
346 u8 flags1; 226 u8 flags1;
347#define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_MASK 0x1 227#define E4_TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_MASK 0x1
348#define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_SHIFT 0 228#define E4_TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_SHIFT 0
349#define TSTORM_FCOE_TASK_AG_CTX_BIT5_MASK 0x1 229#define E4_TSTORM_FCOE_TASK_AG_CTX_BIT5_MASK 0x1
350#define TSTORM_FCOE_TASK_AG_CTX_BIT5_SHIFT 1 230#define E4_TSTORM_FCOE_TASK_AG_CTX_BIT5_SHIFT 1
351#define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_MASK 0x3 231#define E4_TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_MASK 0x3
352#define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_SHIFT 2 232#define E4_TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_SHIFT 2
353#define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_MASK 0x3 233#define E4_TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_MASK 0x3
354#define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_SHIFT 4 234#define E4_TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_SHIFT 4
355#define TSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 235#define E4_TSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
356#define TSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 6 236#define E4_TSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 6
357 u8 flags2; 237 u8 flags2;
358#define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_MASK 0x3 238#define E4_TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_MASK 0x3
359#define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_SHIFT 0 239#define E4_TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_SHIFT 0
360#define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 240#define E4_TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3
361#define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 2 241#define E4_TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 2
362#define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_MASK 0x3 242#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_MASK 0x3
363#define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_SHIFT 4 243#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_SHIFT 4
364#define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_MASK 0x3 244#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_MASK 0x3
365#define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_SHIFT 6 245#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_SHIFT 6
366 u8 flags3; 246 u8 flags3;
367#define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_MASK 0x3 247#define E4_TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_MASK 0x3
368#define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_SHIFT 0 248#define E4_TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_SHIFT 0
369#define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_MASK 0x1 249#define E4_TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_MASK 0x1
370#define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_SHIFT 2 250#define E4_TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_SHIFT 2
371#define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_MASK 0x1 251#define E4_TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_MASK 0x1
372#define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_SHIFT 3 252#define E4_TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_SHIFT 3
373#define TSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 253#define E4_TSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
374#define TSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 4 254#define E4_TSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 4
375#define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 255#define E4_TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
376#define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 5 256#define E4_TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 5
377#define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 257#define E4_TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1
378#define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 258#define E4_TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6
379#define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_MASK 0x1 259#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_MASK 0x1
380#define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_SHIFT 7 260#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_SHIFT 7
381 u8 flags4; 261 u8 flags4;
382#define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_MASK 0x1 262#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_MASK 0x1
383#define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_SHIFT 0 263#define E4_TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_SHIFT 0
384#define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_MASK 0x1 264#define E4_TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_MASK 0x1
385#define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_SHIFT 1 265#define E4_TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_SHIFT 1
386#define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 266#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
387#define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 2 267#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 2
388#define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 268#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
389#define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 3 269#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 3
390#define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 270#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
391#define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 4 271#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 4
392#define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 272#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
393#define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 5 273#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 5
394#define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 274#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
395#define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 6 275#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 6
396#define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 276#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
397#define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 7 277#define E4_TSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 7
398 u8 cleanup_state; 278 u8 cleanup_state;
399 __le16 last_sent_tid; 279 __le16 last_sent_tid;
400 __le32 rec_rr_tov_exp_timeout; 280 __le32 rec_rr_tov_exp_timeout;
@@ -407,25 +287,46 @@ struct tstorm_fcoe_task_ag_ctx {
407 __le32 data_offset_next; 287 __le32 data_offset_next;
408}; 288};
409 289
290/* Cached data sges */
291struct fcoe_exp_ro {
292 __le32 data_offset;
293 __le32 reserved;
294};
295
296/* Union of Cleanup address \ expected relative offsets */
297union fcoe_cleanup_addr_exp_ro_union {
298 struct regpair abts_rsp_fc_payload_hi;
299 struct fcoe_exp_ro exp_ro;
300};
301
302/* Fields coppied from ABTSrsp pckt */
303struct fcoe_abts_pkt {
304 __le32 abts_rsp_fc_payload_lo;
305 __le16 abts_rsp_rx_id;
306 u8 abts_rsp_rctl;
307 u8 reserved2;
308};
309
310/* FW read- write (modifyable) part The fcoe task storm context of Tstorm */
410struct fcoe_tstorm_fcoe_task_st_ctx_read_write { 311struct fcoe_tstorm_fcoe_task_st_ctx_read_write {
411 union fcoe_cleanup_addr_exp_ro_union cleanup_addr_exp_ro_union; 312 union fcoe_cleanup_addr_exp_ro_union cleanup_addr_exp_ro_union;
412 __le16 flags; 313 __le16 flags;
413#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_MASK 0x1 314#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_MASK 0x1
414#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_SHIFT 0 315#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_SHIFT 0
415#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_MASK 0x1 316#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_MASK 0x1
416#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_SHIFT 1 317#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_SHIFT 1
417#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_MASK 0x1 318#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_MASK 0x1
418#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_SHIFT 2 319#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_SHIFT 2
419#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_MASK 0x1 320#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_MASK 0x1
420#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_SHIFT 3 321#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_SHIFT 3
421#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_MASK 0x1 322#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_MASK 0x1
422#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_SHIFT 4 323#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_SHIFT 4
423#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_MASK 0x1 324#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_MASK 0x1
424#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_SHIFT 5 325#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_SHIFT 5
425#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_MASK 0x3 326#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_MASK 0x3
426#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_SHIFT 6 327#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_SHIFT 6
427#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_MASK 0xFF 328#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_MASK 0xFF
428#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_SHIFT 8 329#define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_SHIFT 8
429 __le16 seq_cnt; 330 __le16 seq_cnt;
430 u8 seq_id; 331 u8 seq_id;
431 u8 ooo_rx_seq_id; 332 u8 ooo_rx_seq_id;
@@ -436,6 +337,7 @@ struct fcoe_tstorm_fcoe_task_st_ctx_read_write {
436 __le16 reserved1; 337 __le16 reserved1;
437}; 338};
438 339
340/* FW read only part The fcoe task storm context of Tstorm */
439struct fcoe_tstorm_fcoe_task_st_ctx_read_only { 341struct fcoe_tstorm_fcoe_task_st_ctx_read_only {
440 u8 task_type; 342 u8 task_type;
441 u8 dev_type; 343 u8 dev_type;
@@ -446,54 +348,55 @@ struct fcoe_tstorm_fcoe_task_st_ctx_read_only {
446 __le32 rsrv; 348 __le32 rsrv;
447}; 349};
448 350
351/** The fcoe task storm context of Tstorm */
449struct tstorm_fcoe_task_st_ctx { 352struct tstorm_fcoe_task_st_ctx {
450 struct fcoe_tstorm_fcoe_task_st_ctx_read_write read_write; 353 struct fcoe_tstorm_fcoe_task_st_ctx_read_write read_write;
451 struct fcoe_tstorm_fcoe_task_st_ctx_read_only read_only; 354 struct fcoe_tstorm_fcoe_task_st_ctx_read_only read_only;
452}; 355};
453 356
454struct mstorm_fcoe_task_ag_ctx { 357struct e4_mstorm_fcoe_task_ag_ctx {
455 u8 byte0; 358 u8 byte0;
456 u8 byte1; 359 u8 byte1;
457 __le16 icid; 360 __le16 icid;
458 u8 flags0; 361 u8 flags0;
459#define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 362#define E4_MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
460#define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 363#define E4_MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
461#define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 364#define E4_MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
462#define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 365#define E4_MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
463#define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_MASK 0x1 366#define E4_MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_MASK 0x1
464#define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_SHIFT 5 367#define E4_MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_SHIFT 5
465#define MSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 368#define E4_MSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1
466#define MSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 369#define E4_MSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6
467#define MSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 370#define E4_MSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1
468#define MSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 371#define E4_MSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7
469 u8 flags1; 372 u8 flags1;
470#define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 373#define E4_MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3
471#define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 0 374#define E4_MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 0
472#define MSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 375#define E4_MSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
473#define MSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 376#define E4_MSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2
474#define MSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 377#define E4_MSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
475#define MSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 4 378#define E4_MSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 4
476#define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 379#define E4_MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1
477#define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 380#define E4_MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6
478#define MSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 381#define E4_MSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
479#define MSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 382#define E4_MSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7
480 u8 flags2; 383 u8 flags2;
481#define MSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 384#define E4_MSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
482#define MSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 0 385#define E4_MSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 0
483#define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 386#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
484#define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 387#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1
485#define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 388#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
486#define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 389#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2
487#define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 390#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
488#define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 391#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3
489#define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 392#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
490#define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 393#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4
491#define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 394#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
492#define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 395#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5
493#define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_MASK 0x1 396#define E4_MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_MASK 0x1
494#define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_SHIFT 6 397#define E4_MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_SHIFT 6
495#define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 398#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
496#define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 399#define E4_MSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7
497 u8 cleanup_state; 400 u8 cleanup_state;
498 __le32 received_bytes; 401 __le32 received_bytes;
499 u8 byte3; 402 u8 byte3;
@@ -507,6 +410,7 @@ struct mstorm_fcoe_task_ag_ctx {
507 __le32 reg2; 410 __le32 reg2;
508}; 411};
509 412
413/* The fcoe task storm context of Mstorm */
510struct mstorm_fcoe_task_st_ctx { 414struct mstorm_fcoe_task_st_ctx {
511 struct regpair rsp_buf_addr; 415 struct regpair rsp_buf_addr;
512 __le32 rsrv[2]; 416 __le32 rsrv[2];
@@ -515,79 +419,79 @@ struct mstorm_fcoe_task_st_ctx {
515 __le32 data_buffer_offset; 419 __le32 data_buffer_offset;
516 __le16 parent_id; 420 __le16 parent_id;
517 __le16 flags; 421 __le16 flags;
518#define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_MASK 0xF 422#define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_MASK 0xF
519#define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_SHIFT 0 423#define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_SHIFT 0
520#define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_MASK 0x3 424#define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_MASK 0x3
521#define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_SHIFT 4 425#define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_SHIFT 4
522#define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_MASK 0x1 426#define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_MASK 0x1
523#define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_SHIFT 6 427#define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_SHIFT 6
524#define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_MASK 0x1 428#define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_MASK 0x1
525#define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_SHIFT 7 429#define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_SHIFT 7
526#define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_MASK 0x3 430#define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_MASK 0x3
527#define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_SHIFT 8 431#define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_SHIFT 8
528#define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1 432#define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1
529#define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_SHIFT 10 433#define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_SHIFT 10
530#define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_MASK 0x1 434#define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_MASK 0x1
531#define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_SHIFT 11 435#define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_SHIFT 11
532#define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_MASK 0x1 436#define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_MASK 0x1
533#define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_SHIFT 12 437#define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_SHIFT 12
534#define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 438#define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1
535#define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 13 439#define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 13
536#define MSTORM_FCOE_TASK_ST_CTX_RESERVED_MASK 0x3 440#define MSTORM_FCOE_TASK_ST_CTX_RESERVED_MASK 0x3
537#define MSTORM_FCOE_TASK_ST_CTX_RESERVED_SHIFT 14 441#define MSTORM_FCOE_TASK_ST_CTX_RESERVED_SHIFT 14
538 struct scsi_cached_sges data_desc; 442 struct scsi_cached_sges data_desc;
539}; 443};
540 444
541struct ustorm_fcoe_task_ag_ctx { 445struct e4_ustorm_fcoe_task_ag_ctx {
542 u8 reserved; 446 u8 reserved;
543 u8 byte1; 447 u8 byte1;
544 __le16 icid; 448 __le16 icid;
545 u8 flags0; 449 u8 flags0;
546#define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 450#define E4_USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
547#define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 451#define E4_USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
548#define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 452#define E4_USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
549#define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 453#define E4_USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
550#define USTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 454#define E4_USTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1
551#define USTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 455#define E4_USTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5
552#define USTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 456#define E4_USTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3
553#define USTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 6 457#define E4_USTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 6
554 u8 flags1; 458 u8 flags1;
555#define USTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 459#define E4_USTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3
556#define USTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 0 460#define E4_USTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 0
557#define USTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 461#define E4_USTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3
558#define USTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 2 462#define E4_USTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 2
559#define USTORM_FCOE_TASK_AG_CTX_CF3_MASK 0x3 463#define E4_USTORM_FCOE_TASK_AG_CTX_CF3_MASK 0x3
560#define USTORM_FCOE_TASK_AG_CTX_CF3_SHIFT 4 464#define E4_USTORM_FCOE_TASK_AG_CTX_CF3_SHIFT 4
561#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 465#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
562#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 466#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
563 u8 flags2; 467 u8 flags2;
564#define USTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 468#define E4_USTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1
565#define USTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 0 469#define E4_USTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 0
566#define USTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 470#define E4_USTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1
567#define USTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 1 471#define E4_USTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 1
568#define USTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 472#define E4_USTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1
569#define USTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 2 473#define E4_USTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 2
570#define USTORM_FCOE_TASK_AG_CTX_CF3EN_MASK 0x1 474#define E4_USTORM_FCOE_TASK_AG_CTX_CF3EN_MASK 0x1
571#define USTORM_FCOE_TASK_AG_CTX_CF3EN_SHIFT 3 475#define E4_USTORM_FCOE_TASK_AG_CTX_CF3EN_SHIFT 3
572#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 476#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
573#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 477#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
574#define USTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 478#define E4_USTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1
575#define USTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 5 479#define E4_USTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 5
576#define USTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 480#define E4_USTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1
577#define USTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 6 481#define E4_USTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 6
578#define USTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 482#define E4_USTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1
579#define USTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 7 483#define E4_USTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 7
580 u8 flags3; 484 u8 flags3;
581#define USTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 485#define E4_USTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1
582#define USTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 0 486#define E4_USTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 0
583#define USTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 487#define E4_USTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1
584#define USTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 1 488#define E4_USTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 1
585#define USTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 489#define E4_USTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1
586#define USTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 2 490#define E4_USTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 2
587#define USTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 491#define E4_USTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1
588#define USTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 3 492#define E4_USTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 3
589#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF 493#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
590#define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 494#define E4_USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
591 __le32 dif_err_intervals; 495 __le32 dif_err_intervals;
592 __le32 dif_error_1st_interval; 496 __le32 dif_error_1st_interval;
593 __le32 global_cq_num; 497 __le32 global_cq_num;
@@ -596,21 +500,189 @@ struct ustorm_fcoe_task_ag_ctx {
596 __le32 reg5; 500 __le32 reg5;
597}; 501};
598 502
599struct fcoe_task_context { 503/* FCoE task context */
504struct e4_fcoe_task_context {
600 struct ystorm_fcoe_task_st_ctx ystorm_st_context; 505 struct ystorm_fcoe_task_st_ctx ystorm_st_context;
601 struct regpair ystorm_st_padding[2]; 506 struct regpair ystorm_st_padding[2];
602 struct tdif_task_context tdif_context; 507 struct tdif_task_context tdif_context;
603 struct ystorm_fcoe_task_ag_ctx ystorm_ag_context; 508 struct e4_ystorm_fcoe_task_ag_ctx ystorm_ag_context;
604 struct tstorm_fcoe_task_ag_ctx tstorm_ag_context; 509 struct e4_tstorm_fcoe_task_ag_ctx tstorm_ag_context;
605 struct timers_context timer_context; 510 struct timers_context timer_context;
606 struct tstorm_fcoe_task_st_ctx tstorm_st_context; 511 struct tstorm_fcoe_task_st_ctx tstorm_st_context;
607 struct regpair tstorm_st_padding[2]; 512 struct regpair tstorm_st_padding[2];
608 struct mstorm_fcoe_task_ag_ctx mstorm_ag_context; 513 struct e4_mstorm_fcoe_task_ag_ctx mstorm_ag_context;
609 struct mstorm_fcoe_task_st_ctx mstorm_st_context; 514 struct mstorm_fcoe_task_st_ctx mstorm_st_context;
610 struct ustorm_fcoe_task_ag_ctx ustorm_ag_context; 515 struct e4_ustorm_fcoe_task_ag_ctx ustorm_ag_context;
611 struct rdif_task_context rdif_context; 516 struct rdif_task_context rdif_context;
612}; 517};
613 518
519/* FCoE additional WQE (Sq/XferQ) information */
520union fcoe_additional_info_union {
521 __le32 previous_tid;
522 __le32 parent_tid;
523 __le32 burst_length;
524 __le32 seq_rec_updated_offset;
525};
526
527/* FCoE Ramrod Command IDs */
528enum fcoe_completion_status {
529 FCOE_COMPLETION_STATUS_SUCCESS,
530 FCOE_COMPLETION_STATUS_FCOE_VER_ERR,
531 FCOE_COMPLETION_STATUS_SRC_MAC_ADD_ARR_ERR,
532 MAX_FCOE_COMPLETION_STATUS
533};
534
535/* FC address (SID/DID) network presentation */
536struct fc_addr_nw {
537 u8 addr_lo;
538 u8 addr_mid;
539 u8 addr_hi;
540};
541
542/* FCoE connection offload */
543struct fcoe_conn_offload_ramrod_data {
544 struct regpair sq_pbl_addr;
545 struct regpair sq_curr_page_addr;
546 struct regpair sq_next_page_addr;
547 struct regpair xferq_pbl_addr;
548 struct regpair xferq_curr_page_addr;
549 struct regpair xferq_next_page_addr;
550 struct regpair respq_pbl_addr;
551 struct regpair respq_curr_page_addr;
552 struct regpair respq_next_page_addr;
553 __le16 dst_mac_addr_lo;
554 __le16 dst_mac_addr_mid;
555 __le16 dst_mac_addr_hi;
556 __le16 src_mac_addr_lo;
557 __le16 src_mac_addr_mid;
558 __le16 src_mac_addr_hi;
559 __le16 tx_max_fc_pay_len;
560 __le16 e_d_tov_timer_val;
561 __le16 rx_max_fc_pay_len;
562 __le16 vlan_tag;
563#define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_MASK 0xFFF
564#define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_SHIFT 0
565#define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_MASK 0x1
566#define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_SHIFT 12
567#define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_MASK 0x7
568#define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_SHIFT 13
569 __le16 physical_q0;
570 __le16 rec_rr_tov_timer_val;
571 struct fc_addr_nw s_id;
572 u8 max_conc_seqs_c3;
573 struct fc_addr_nw d_id;
574 u8 flags;
575#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_MASK 0x1
576#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_SHIFT 0
577#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_MASK 0x1
578#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_SHIFT 1
579#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_MASK 0x1
580#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_SHIFT 2
581#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_MASK 0x1
582#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_SHIFT 3
583#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_SINGLE_VLAN_MASK 0x1
584#define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_SINGLE_VLAN_SHIFT 4
585#define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_MASK 0x3
586#define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_SHIFT 5
587#define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_MASK 0x1
588#define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_SHIFT 7
589 __le16 conn_id;
590 u8 def_q_idx;
591 u8 reserved[5];
592};
593
594/* FCoE terminate connection request */
595struct fcoe_conn_terminate_ramrod_data {
596 struct regpair terminate_params_addr;
597};
598
599/* FCoE device type */
600enum fcoe_device_type {
601 FCOE_TASK_DEV_TYPE_DISK,
602 FCOE_TASK_DEV_TYPE_TAPE,
603 MAX_FCOE_DEVICE_TYPE
604};
605
606/* Data sgl */
607struct fcoe_fast_sgl_ctx {
608 struct regpair sgl_start_addr;
609 __le32 sgl_byte_offset;
610 __le16 task_reuse_cnt;
611 __le16 init_offset_in_first_sge;
612};
613
614/* FCoE firmware function init */
615struct fcoe_init_func_ramrod_data {
616 struct scsi_init_func_params func_params;
617 struct scsi_init_func_queues q_params;
618 __le16 mtu;
619 __le16 sq_num_pages_in_pbl;
620 __le32 reserved[3];
621};
622
623/* FCoE: Mode of the connection: Target or Initiator or both */
624enum fcoe_mode_type {
625 FCOE_INITIATOR_MODE = 0x0,
626 FCOE_TARGET_MODE = 0x1,
627 FCOE_BOTH_OR_NOT_CHOSEN = 0x3,
628 MAX_FCOE_MODE_TYPE
629};
630
631/* Per PF FCoE receive path statistics - tStorm RAM structure */
632struct fcoe_rx_stat {
633 struct regpair fcoe_rx_byte_cnt;
634 struct regpair fcoe_rx_data_pkt_cnt;
635 struct regpair fcoe_rx_xfer_pkt_cnt;
636 struct regpair fcoe_rx_other_pkt_cnt;
637 __le32 fcoe_silent_drop_pkt_cmdq_full_cnt;
638 __le32 fcoe_silent_drop_pkt_rq_full_cnt;
639 __le32 fcoe_silent_drop_pkt_crc_error_cnt;
640 __le32 fcoe_silent_drop_pkt_task_invalid_cnt;
641 __le32 fcoe_silent_drop_total_pkt_cnt;
642 __le32 rsrv;
643};
644
645/* FCoE SQE request type */
646enum fcoe_sqe_request_type {
647 SEND_FCOE_CMD,
648 SEND_FCOE_MIDPATH,
649 SEND_FCOE_ABTS_REQUEST,
650 FCOE_EXCHANGE_CLEANUP,
651 FCOE_SEQUENCE_RECOVERY,
652 SEND_FCOE_XFER_RDY,
653 SEND_FCOE_RSP,
654 SEND_FCOE_RSP_WITH_SENSE_DATA,
655 SEND_FCOE_TARGET_DATA,
656 SEND_FCOE_INITIATOR_DATA,
657 SEND_FCOE_XFER_CONTINUATION_RDY,
658 SEND_FCOE_TARGET_ABTS_RSP,
659 MAX_FCOE_SQE_REQUEST_TYPE
660};
661
662/* FCoe statistics request */
663struct fcoe_stat_ramrod_data {
664 struct regpair stat_params_addr;
665};
666
667/* FCoE task type */
668enum fcoe_task_type {
669 FCOE_TASK_TYPE_WRITE_INITIATOR,
670 FCOE_TASK_TYPE_READ_INITIATOR,
671 FCOE_TASK_TYPE_MIDPATH,
672 FCOE_TASK_TYPE_UNSOLICITED,
673 FCOE_TASK_TYPE_ABTS,
674 FCOE_TASK_TYPE_EXCHANGE_CLEANUP,
675 FCOE_TASK_TYPE_SEQUENCE_CLEANUP,
676 FCOE_TASK_TYPE_WRITE_TARGET,
677 FCOE_TASK_TYPE_READ_TARGET,
678 FCOE_TASK_TYPE_RSP,
679 FCOE_TASK_TYPE_RSP_SENSE_DATA,
680 FCOE_TASK_TYPE_ABTS_TARGET,
681 FCOE_TASK_TYPE_ENUM_SIZE,
682 MAX_FCOE_TASK_TYPE
683};
684
685/* Per PF FCoE transmit path statistics - pStorm RAM structure */
614struct fcoe_tx_stat { 686struct fcoe_tx_stat {
615 struct regpair fcoe_tx_byte_cnt; 687 struct regpair fcoe_tx_byte_cnt;
616 struct regpair fcoe_tx_data_pkt_cnt; 688 struct regpair fcoe_tx_data_pkt_cnt;
@@ -618,51 +690,55 @@ struct fcoe_tx_stat {
618 struct regpair fcoe_tx_other_pkt_cnt; 690 struct regpair fcoe_tx_other_pkt_cnt;
619}; 691};
620 692
693/* FCoE SQ/XferQ element */
621struct fcoe_wqe { 694struct fcoe_wqe {
622 __le16 task_id; 695 __le16 task_id;
623 __le16 flags; 696 __le16 flags;
624#define FCOE_WQE_REQ_TYPE_MASK 0xF 697#define FCOE_WQE_REQ_TYPE_MASK 0xF
625#define FCOE_WQE_REQ_TYPE_SHIFT 0 698#define FCOE_WQE_REQ_TYPE_SHIFT 0
626#define FCOE_WQE_SGL_MODE_MASK 0x1 699#define FCOE_WQE_SGL_MODE_MASK 0x1
627#define FCOE_WQE_SGL_MODE_SHIFT 4 700#define FCOE_WQE_SGL_MODE_SHIFT 4
628#define FCOE_WQE_CONTINUATION_MASK 0x1 701#define FCOE_WQE_CONTINUATION_MASK 0x1
629#define FCOE_WQE_CONTINUATION_SHIFT 5 702#define FCOE_WQE_CONTINUATION_SHIFT 5
630#define FCOE_WQE_SEND_AUTO_RSP_MASK 0x1 703#define FCOE_WQE_SEND_AUTO_RSP_MASK 0x1
631#define FCOE_WQE_SEND_AUTO_RSP_SHIFT 6 704#define FCOE_WQE_SEND_AUTO_RSP_SHIFT 6
632#define FCOE_WQE_RESERVED_MASK 0x1 705#define FCOE_WQE_RESERVED_MASK 0x1
633#define FCOE_WQE_RESERVED_SHIFT 7 706#define FCOE_WQE_RESERVED_SHIFT 7
634#define FCOE_WQE_NUM_SGES_MASK 0xF 707#define FCOE_WQE_NUM_SGES_MASK 0xF
635#define FCOE_WQE_NUM_SGES_SHIFT 8 708#define FCOE_WQE_NUM_SGES_SHIFT 8
636#define FCOE_WQE_RESERVED1_MASK 0xF 709#define FCOE_WQE_RESERVED1_MASK 0xF
637#define FCOE_WQE_RESERVED1_SHIFT 12 710#define FCOE_WQE_RESERVED1_SHIFT 12
638 union fcoe_additional_info_union additional_info_union; 711 union fcoe_additional_info_union additional_info_union;
639}; 712};
640 713
714/* FCoE XFRQ element */
641struct xfrqe_prot_flags { 715struct xfrqe_prot_flags {
642 u8 flags; 716 u8 flags;
643#define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF 717#define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF
644#define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 718#define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0
645#define XFRQE_PROT_FLAGS_DIF_TO_PEER_MASK 0x1 719#define XFRQE_PROT_FLAGS_DIF_TO_PEER_MASK 0x1
646#define XFRQE_PROT_FLAGS_DIF_TO_PEER_SHIFT 4 720#define XFRQE_PROT_FLAGS_DIF_TO_PEER_SHIFT 4
647#define XFRQE_PROT_FLAGS_HOST_INTERFACE_MASK 0x3 721#define XFRQE_PROT_FLAGS_HOST_INTERFACE_MASK 0x3
648#define XFRQE_PROT_FLAGS_HOST_INTERFACE_SHIFT 5 722#define XFRQE_PROT_FLAGS_HOST_INTERFACE_SHIFT 5
649#define XFRQE_PROT_FLAGS_RESERVED_MASK 0x1 723#define XFRQE_PROT_FLAGS_RESERVED_MASK 0x1
650#define XFRQE_PROT_FLAGS_RESERVED_SHIFT 7 724#define XFRQE_PROT_FLAGS_RESERVED_SHIFT 7
651}; 725};
652 726
727/* FCoE doorbell data */
653struct fcoe_db_data { 728struct fcoe_db_data {
654 u8 params; 729 u8 params;
655#define FCOE_DB_DATA_DEST_MASK 0x3 730#define FCOE_DB_DATA_DEST_MASK 0x3
656#define FCOE_DB_DATA_DEST_SHIFT 0 731#define FCOE_DB_DATA_DEST_SHIFT 0
657#define FCOE_DB_DATA_AGG_CMD_MASK 0x3 732#define FCOE_DB_DATA_AGG_CMD_MASK 0x3
658#define FCOE_DB_DATA_AGG_CMD_SHIFT 2 733#define FCOE_DB_DATA_AGG_CMD_SHIFT 2
659#define FCOE_DB_DATA_BYPASS_EN_MASK 0x1 734#define FCOE_DB_DATA_BYPASS_EN_MASK 0x1
660#define FCOE_DB_DATA_BYPASS_EN_SHIFT 4 735#define FCOE_DB_DATA_BYPASS_EN_SHIFT 4
661#define FCOE_DB_DATA_RESERVED_MASK 0x1 736#define FCOE_DB_DATA_RESERVED_MASK 0x1
662#define FCOE_DB_DATA_RESERVED_SHIFT 5 737#define FCOE_DB_DATA_RESERVED_SHIFT 5
663#define FCOE_DB_DATA_AGG_VAL_SEL_MASK 0x3 738#define FCOE_DB_DATA_AGG_VAL_SEL_MASK 0x3
664#define FCOE_DB_DATA_AGG_VAL_SEL_SHIFT 6 739#define FCOE_DB_DATA_AGG_VAL_SEL_SHIFT 6
665 u8 agg_flags; 740 u8 agg_flags;
666 __le16 sq_prod; 741 __le16 sq_prod;
667}; 742};
743
668#endif /* __FCOE_COMMON__ */ 744#endif /* __FCOE_COMMON__ */