Commit | Line | Data |
---|---|---|
a3667aae NKI |
1 | /* |
2 | * This file is part of the Chelsio FCoE driver for Linux. | |
3 | * | |
4 | * Copyright (c) 2009-2010 Chelsio Communications, Inc. All rights reserved. | |
5 | * | |
6 | * This software is available to you under a choice of one of two | |
7 | * licenses. You may choose to be licensed under the terms of the GNU | |
8 | * General Public License (GPL) Version 2, available from the file | |
9 | * COPYING in the main directory of this source tree, or the | |
10 | * OpenIB.org BSD license below: | |
11 | * | |
12 | * Redistribution and use in source and binary forms, with or | |
13 | * without modification, are permitted provided that the following | |
14 | * conditions are met: | |
15 | * | |
16 | * - Redistributions of source code must retain the above | |
17 | * copyright notice, this list of conditions and the following | |
18 | * disclaimer. | |
19 | * | |
20 | * - Redistributions in binary form must reproduce the above | |
21 | * copyright notice, this list of conditions and the following | |
22 | * disclaimer in the documentation and/or other materials | |
23 | * provided with the distribution. | |
24 | * | |
25 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
26 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
27 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
28 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | |
29 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | |
30 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
31 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
32 | * SOFTWARE. | |
33 | */ | |
34 | ||
35 | #ifndef _T4FW_API_STOR_H_ | |
36 | #define _T4FW_API_STOR_H_ | |
37 | ||
38 | ||
39 | /****************************************************************************** | |
40 | * R E T U R N V A L U E S | |
41 | ********************************/ | |
42 | ||
a3667aae NKI |
43 | enum fw_fcoe_link_sub_op { |
44 | FCOE_LINK_DOWN = 0x0, | |
45 | FCOE_LINK_UP = 0x1, | |
46 | FCOE_LINK_COND = 0x2, | |
47 | }; | |
48 | ||
49 | enum fw_fcoe_link_status { | |
50 | FCOE_LINKDOWN = 0x0, | |
51 | FCOE_LINKUP = 0x1, | |
52 | }; | |
53 | ||
54 | enum fw_ofld_prot { | |
55 | PROT_FCOE = 0x1, | |
56 | PROT_ISCSI = 0x2, | |
57 | }; | |
58 | ||
59 | enum rport_type_fcoe { | |
60 | FLOGI_VFPORT = 0x1, /* 0xfffffe */ | |
61 | FDISC_VFPORT = 0x2, /* 0xfffffe */ | |
62 | NS_VNPORT = 0x3, /* 0xfffffc */ | |
63 | REG_FC4_VNPORT = 0x4, /* any FC4 type VN_PORT */ | |
64 | REG_VNPORT = 0x5, /* 0xfffxxx - non FC4 port in switch */ | |
65 | FDMI_VNPORT = 0x6, /* 0xfffffa */ | |
66 | FAB_CTLR_VNPORT = 0x7, /* 0xfffffd */ | |
67 | }; | |
68 | ||
69 | enum event_cause_fcoe { | |
70 | PLOGI_ACC_RCVD = 0x01, | |
71 | PLOGI_RJT_RCVD = 0x02, | |
72 | PLOGI_RCVD = 0x03, | |
73 | PLOGO_RCVD = 0x04, | |
74 | PRLI_ACC_RCVD = 0x05, | |
75 | PRLI_RJT_RCVD = 0x06, | |
76 | PRLI_RCVD = 0x07, | |
77 | PRLO_RCVD = 0x08, | |
78 | NPORT_ID_CHGD = 0x09, | |
79 | FLOGO_RCVD = 0x0a, | |
80 | CLR_VIRT_LNK_RCVD = 0x0b, | |
81 | FLOGI_ACC_RCVD = 0x0c, | |
82 | FLOGI_RJT_RCVD = 0x0d, | |
83 | FDISC_ACC_RCVD = 0x0e, | |
84 | FDISC_RJT_RCVD = 0x0f, | |
85 | FLOGI_TMO_MAX_RETRY = 0x10, | |
86 | IMPL_LOGO_ADISC_ACC = 0x11, | |
87 | IMPL_LOGO_ADISC_RJT = 0x12, | |
88 | IMPL_LOGO_ADISC_CNFLT = 0x13, | |
89 | PRLI_TMO = 0x14, | |
90 | ADISC_TMO = 0x15, | |
91 | RSCN_DEV_LOST = 0x16, | |
92 | SCR_ACC_RCVD = 0x17, | |
93 | ADISC_RJT_RCVD = 0x18, | |
94 | LOGO_SNT = 0x19, | |
95 | PROTO_ERR_IMPL_LOGO = 0x1a, | |
96 | }; | |
97 | ||
98 | enum fcoe_cmn_type { | |
99 | FCOE_ELS, | |
100 | FCOE_CT, | |
101 | FCOE_SCSI_CMD, | |
102 | FCOE_UNSOL_ELS, | |
103 | }; | |
104 | ||
105 | enum fw_wr_stor_opcodes { | |
106 | FW_RDEV_WR = 0x38, | |
107 | FW_FCOE_ELS_CT_WR = 0x30, | |
108 | FW_SCSI_WRITE_WR = 0x31, | |
109 | FW_SCSI_READ_WR = 0x32, | |
110 | FW_SCSI_CMD_WR = 0x33, | |
111 | FW_SCSI_ABRT_CLS_WR = 0x34, | |
112 | }; | |
113 | ||
114 | struct fw_rdev_wr { | |
115 | __be32 op_to_immdlen; | |
116 | __be32 alloc_to_len16; | |
117 | __be64 cookie; | |
118 | u8 protocol; | |
119 | u8 event_cause; | |
120 | u8 cur_state; | |
121 | u8 prev_state; | |
122 | __be32 flags_to_assoc_flowid; | |
123 | union rdev_entry { | |
124 | struct fcoe_rdev_entry { | |
125 | __be32 flowid; | |
126 | u8 protocol; | |
127 | u8 event_cause; | |
128 | u8 flags; | |
129 | u8 rjt_reason; | |
130 | u8 cur_login_st; | |
131 | u8 prev_login_st; | |
132 | __be16 rcv_fr_sz; | |
133 | u8 rd_xfer_rdy_to_rport_type; | |
134 | u8 vft_to_qos; | |
135 | u8 org_proc_assoc_to_acc_rsp_code; | |
136 | u8 enh_disc_to_tgt; | |
137 | u8 wwnn[8]; | |
138 | u8 wwpn[8]; | |
139 | __be16 iqid; | |
140 | u8 fc_oui[3]; | |
141 | u8 r_id[3]; | |
142 | } fcoe_rdev; | |
143 | struct iscsi_rdev_entry { | |
144 | __be32 flowid; | |
145 | u8 protocol; | |
146 | u8 event_cause; | |
147 | u8 flags; | |
148 | u8 r3; | |
149 | __be16 iscsi_opts; | |
150 | __be16 tcp_opts; | |
151 | __be16 ip_opts; | |
152 | __be16 max_rcv_len; | |
153 | __be16 max_snd_len; | |
154 | __be16 first_brst_len; | |
155 | __be16 max_brst_len; | |
156 | __be16 r4; | |
157 | __be16 def_time2wait; | |
158 | __be16 def_time2ret; | |
159 | __be16 nop_out_intrvl; | |
160 | __be16 non_scsi_to; | |
161 | __be16 isid; | |
162 | __be16 tsid; | |
163 | __be16 port; | |
164 | __be16 tpgt; | |
165 | u8 r5[6]; | |
166 | __be16 iqid; | |
167 | } iscsi_rdev; | |
168 | } u; | |
169 | }; | |
170 | ||
171 | #define FW_RDEV_WR_FLOWID_GET(x) (((x) >> 8) & 0xfffff) | |
172 | #define FW_RDEV_WR_ASSOC_FLOWID_GET(x) (((x) >> 0) & 0xfffff) | |
173 | #define FW_RDEV_WR_RPORT_TYPE_GET(x) (((x) >> 0) & 0x1f) | |
174 | #define FW_RDEV_WR_NPIV_GET(x) (((x) >> 6) & 0x1) | |
175 | #define FW_RDEV_WR_CLASS_GET(x) (((x) >> 4) & 0x3) | |
176 | #define FW_RDEV_WR_TASK_RETRY_ID_GET(x) (((x) >> 5) & 0x1) | |
177 | #define FW_RDEV_WR_RETRY_GET(x) (((x) >> 4) & 0x1) | |
178 | #define FW_RDEV_WR_CONF_CMPL_GET(x) (((x) >> 3) & 0x1) | |
179 | #define FW_RDEV_WR_INI_GET(x) (((x) >> 1) & 0x1) | |
180 | #define FW_RDEV_WR_TGT_GET(x) (((x) >> 0) & 0x1) | |
181 | ||
182 | struct fw_fcoe_els_ct_wr { | |
183 | __be32 op_immdlen; | |
184 | __be32 flowid_len16; | |
5036f0a0 | 185 | u64 cookie; |
a3667aae NKI |
186 | __be16 iqid; |
187 | u8 tmo_val; | |
188 | u8 els_ct_type; | |
189 | u8 ctl_pri; | |
190 | u8 cp_en_class; | |
191 | __be16 xfer_cnt; | |
192 | u8 fl_to_sp; | |
193 | u8 l_id[3]; | |
194 | u8 r5; | |
195 | u8 r_id[3]; | |
196 | __be64 rsp_dmaaddr; | |
197 | __be32 rsp_dmalen; | |
198 | __be32 r6; | |
199 | }; | |
200 | ||
201 | #define FW_FCOE_ELS_CT_WR_OPCODE(x) ((x) << 24) | |
202 | #define FW_FCOE_ELS_CT_WR_OPCODE_GET(x) (((x) >> 24) & 0xff) | |
203 | #define FW_FCOE_ELS_CT_WR_IMMDLEN(x) ((x) << 0) | |
204 | #define FW_FCOE_ELS_CT_WR_IMMDLEN_GET(x) (((x) >> 0) & 0xff) | |
205 | #define FW_FCOE_ELS_CT_WR_SP(x) ((x) << 0) | |
206 | ||
207 | struct fw_scsi_write_wr { | |
208 | __be32 op_immdlen; | |
209 | __be32 flowid_len16; | |
5036f0a0 | 210 | u64 cookie; |
a3667aae NKI |
211 | __be16 iqid; |
212 | u8 tmo_val; | |
213 | u8 use_xfer_cnt; | |
214 | union fw_scsi_write_priv { | |
215 | struct fcoe_write_priv { | |
216 | u8 ctl_pri; | |
217 | u8 cp_en_class; | |
218 | u8 r3_lo[2]; | |
219 | } fcoe; | |
220 | struct iscsi_write_priv { | |
221 | u8 r3[4]; | |
222 | } iscsi; | |
223 | } u; | |
224 | __be32 xfer_cnt; | |
225 | __be32 ini_xfer_cnt; | |
226 | __be64 rsp_dmaaddr; | |
227 | __be32 rsp_dmalen; | |
228 | __be32 r4; | |
229 | }; | |
230 | ||
231 | #define FW_SCSI_WRITE_WR_IMMDLEN(x) ((x) << 0) | |
232 | ||
233 | struct fw_scsi_read_wr { | |
234 | __be32 op_immdlen; | |
235 | __be32 flowid_len16; | |
5036f0a0 | 236 | u64 cookie; |
a3667aae NKI |
237 | __be16 iqid; |
238 | u8 tmo_val; | |
239 | u8 use_xfer_cnt; | |
240 | union fw_scsi_read_priv { | |
241 | struct fcoe_read_priv { | |
242 | u8 ctl_pri; | |
243 | u8 cp_en_class; | |
244 | u8 r3_lo[2]; | |
245 | } fcoe; | |
246 | struct iscsi_read_priv { | |
247 | u8 r3[4]; | |
248 | } iscsi; | |
249 | } u; | |
250 | __be32 xfer_cnt; | |
251 | __be32 ini_xfer_cnt; | |
252 | __be64 rsp_dmaaddr; | |
253 | __be32 rsp_dmalen; | |
254 | __be32 r4; | |
255 | }; | |
256 | ||
257 | #define FW_SCSI_READ_WR_IMMDLEN(x) ((x) << 0) | |
258 | ||
259 | struct fw_scsi_cmd_wr { | |
260 | __be32 op_immdlen; | |
261 | __be32 flowid_len16; | |
5036f0a0 | 262 | u64 cookie; |
a3667aae NKI |
263 | __be16 iqid; |
264 | u8 tmo_val; | |
265 | u8 r3; | |
266 | union fw_scsi_cmd_priv { | |
267 | struct fcoe_cmd_priv { | |
268 | u8 ctl_pri; | |
269 | u8 cp_en_class; | |
270 | u8 r4_lo[2]; | |
271 | } fcoe; | |
272 | struct iscsi_cmd_priv { | |
273 | u8 r4[4]; | |
274 | } iscsi; | |
275 | } u; | |
276 | u8 r5[8]; | |
277 | __be64 rsp_dmaaddr; | |
278 | __be32 rsp_dmalen; | |
279 | __be32 r6; | |
280 | }; | |
281 | ||
282 | #define FW_SCSI_CMD_WR_IMMDLEN(x) ((x) << 0) | |
283 | ||
284 | #define SCSI_ABORT 0 | |
285 | #define SCSI_CLOSE 1 | |
286 | ||
287 | struct fw_scsi_abrt_cls_wr { | |
288 | __be32 op_immdlen; | |
289 | __be32 flowid_len16; | |
5036f0a0 | 290 | u64 cookie; |
a3667aae NKI |
291 | __be16 iqid; |
292 | u8 tmo_val; | |
293 | u8 sub_opcode_to_chk_all_io; | |
294 | u8 r3[4]; | |
5036f0a0 | 295 | u64 t_cookie; |
a3667aae NKI |
296 | }; |
297 | ||
298 | #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE(x) ((x) << 2) | |
299 | #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE_GET(x) (((x) >> 2) & 0x3f) | |
300 | #define FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(x) ((x) << 0) | |
301 | ||
302 | enum fw_cmd_stor_opcodes { | |
303 | FW_FCOE_RES_INFO_CMD = 0x31, | |
304 | FW_FCOE_LINK_CMD = 0x32, | |
305 | FW_FCOE_VNP_CMD = 0x33, | |
306 | FW_FCOE_SPARAMS_CMD = 0x35, | |
307 | FW_FCOE_STATS_CMD = 0x37, | |
308 | FW_FCOE_FCF_CMD = 0x38, | |
309 | }; | |
310 | ||
311 | struct fw_fcoe_res_info_cmd { | |
312 | __be32 op_to_read; | |
313 | __be32 retval_len16; | |
314 | __be16 e_d_tov; | |
315 | __be16 r_a_tov_seq; | |
316 | __be16 r_a_tov_els; | |
317 | __be16 r_r_tov; | |
318 | __be32 max_xchgs; | |
319 | __be32 max_ssns; | |
320 | __be32 used_xchgs; | |
321 | __be32 used_ssns; | |
322 | __be32 max_fcfs; | |
323 | __be32 max_vnps; | |
324 | __be32 used_fcfs; | |
325 | __be32 used_vnps; | |
326 | }; | |
327 | ||
328 | struct fw_fcoe_link_cmd { | |
329 | __be32 op_to_portid; | |
330 | __be32 retval_len16; | |
331 | __be32 sub_opcode_fcfi; | |
332 | u8 r3; | |
333 | u8 lstatus; | |
334 | __be16 flags; | |
335 | u8 r4; | |
336 | u8 set_vlan; | |
337 | __be16 vlan_id; | |
338 | __be32 vnpi_pkd; | |
339 | __be16 r6; | |
340 | u8 phy_mac[6]; | |
341 | u8 vnport_wwnn[8]; | |
342 | u8 vnport_wwpn[8]; | |
343 | }; | |
344 | ||
345 | #define FW_FCOE_LINK_CMD_PORTID(x) ((x) << 0) | |
346 | #define FW_FCOE_LINK_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) | |
347 | #define FW_FCOE_LINK_CMD_SUB_OPCODE(x) ((x) << 24U) | |
348 | #define FW_FCOE_LINK_CMD_FCFI(x) ((x) << 0) | |
349 | #define FW_FCOE_LINK_CMD_FCFI_GET(x) (((x) >> 0) & 0xffffff) | |
350 | #define FW_FCOE_LINK_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) | |
351 | ||
352 | struct fw_fcoe_vnp_cmd { | |
353 | __be32 op_to_fcfi; | |
354 | __be32 alloc_to_len16; | |
355 | __be32 gen_wwn_to_vnpi; | |
356 | __be32 vf_id; | |
357 | __be16 iqid; | |
358 | u8 vnport_mac[6]; | |
359 | u8 vnport_wwnn[8]; | |
360 | u8 vnport_wwpn[8]; | |
361 | u8 cmn_srv_parms[16]; | |
362 | u8 clsp_word_0_1[8]; | |
363 | }; | |
364 | ||
365 | #define FW_FCOE_VNP_CMD_FCFI(x) ((x) << 0) | |
366 | #define FW_FCOE_VNP_CMD_ALLOC (1U << 31) | |
367 | #define FW_FCOE_VNP_CMD_FREE (1U << 30) | |
368 | #define FW_FCOE_VNP_CMD_MODIFY (1U << 29) | |
369 | #define FW_FCOE_VNP_CMD_GEN_WWN (1U << 22) | |
370 | #define FW_FCOE_VNP_CMD_VFID_EN (1U << 20) | |
371 | #define FW_FCOE_VNP_CMD_VNPI(x) ((x) << 0) | |
372 | #define FW_FCOE_VNP_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) | |
373 | ||
374 | struct fw_fcoe_sparams_cmd { | |
375 | __be32 op_to_portid; | |
376 | __be32 retval_len16; | |
377 | u8 r3[7]; | |
378 | u8 cos; | |
379 | u8 lport_wwnn[8]; | |
380 | u8 lport_wwpn[8]; | |
381 | u8 cmn_srv_parms[16]; | |
382 | u8 cls_srv_parms[16]; | |
383 | }; | |
384 | ||
385 | #define FW_FCOE_SPARAMS_CMD_PORTID(x) ((x) << 0) | |
386 | ||
387 | struct fw_fcoe_stats_cmd { | |
388 | __be32 op_to_flowid; | |
389 | __be32 free_to_len16; | |
390 | union fw_fcoe_stats { | |
391 | struct fw_fcoe_stats_ctl { | |
392 | u8 nstats_port; | |
393 | u8 port_valid_ix; | |
394 | __be16 r6; | |
395 | __be32 r7; | |
396 | __be64 stat0; | |
397 | __be64 stat1; | |
398 | __be64 stat2; | |
399 | __be64 stat3; | |
400 | __be64 stat4; | |
401 | __be64 stat5; | |
402 | } ctl; | |
403 | struct fw_fcoe_port_stats { | |
404 | __be64 tx_bcast_bytes; | |
405 | __be64 tx_bcast_frames; | |
406 | __be64 tx_mcast_bytes; | |
407 | __be64 tx_mcast_frames; | |
408 | __be64 tx_ucast_bytes; | |
409 | __be64 tx_ucast_frames; | |
410 | __be64 tx_drop_frames; | |
411 | __be64 tx_offload_bytes; | |
412 | __be64 tx_offload_frames; | |
413 | __be64 rx_bcast_bytes; | |
414 | __be64 rx_bcast_frames; | |
415 | __be64 rx_mcast_bytes; | |
416 | __be64 rx_mcast_frames; | |
417 | __be64 rx_ucast_bytes; | |
418 | __be64 rx_ucast_frames; | |
419 | __be64 rx_err_frames; | |
420 | } port_stats; | |
421 | struct fw_fcoe_fcf_stats { | |
422 | __be32 fip_tx_bytes; | |
423 | __be32 fip_tx_fr; | |
424 | __be64 fcf_ka; | |
425 | __be64 mcast_adv_rcvd; | |
426 | __be16 ucast_adv_rcvd; | |
427 | __be16 sol_sent; | |
428 | __be16 vlan_req; | |
429 | __be16 vlan_rpl; | |
430 | __be16 clr_vlink; | |
431 | __be16 link_down; | |
432 | __be16 link_up; | |
433 | __be16 logo; | |
434 | __be16 flogi_req; | |
435 | __be16 flogi_rpl; | |
436 | __be16 fdisc_req; | |
437 | __be16 fdisc_rpl; | |
438 | __be16 fka_prd_chg; | |
439 | __be16 fc_map_chg; | |
440 | __be16 vfid_chg; | |
441 | u8 no_fka_req; | |
442 | u8 no_vnp; | |
443 | } fcf_stats; | |
444 | struct fw_fcoe_pcb_stats { | |
445 | __be64 tx_bytes; | |
446 | __be64 tx_frames; | |
447 | __be64 rx_bytes; | |
448 | __be64 rx_frames; | |
449 | __be32 vnp_ka; | |
450 | __be32 unsol_els_rcvd; | |
451 | __be64 unsol_cmd_rcvd; | |
452 | __be16 implicit_logo; | |
453 | __be16 flogi_inv_sparm; | |
454 | __be16 fdisc_inv_sparm; | |
455 | __be16 flogi_rjt; | |
456 | __be16 fdisc_rjt; | |
457 | __be16 no_ssn; | |
458 | __be16 mac_flt_fail; | |
459 | __be16 inv_fr_rcvd; | |
460 | } pcb_stats; | |
461 | struct fw_fcoe_scb_stats { | |
462 | __be64 tx_bytes; | |
463 | __be64 tx_frames; | |
464 | __be64 rx_bytes; | |
465 | __be64 rx_frames; | |
466 | __be32 host_abrt_req; | |
467 | __be32 adap_auto_abrt; | |
468 | __be32 adap_abrt_rsp; | |
469 | __be32 host_ios_req; | |
470 | __be16 ssn_offl_ios; | |
471 | __be16 ssn_not_rdy_ios; | |
472 | u8 rx_data_ddp_err; | |
473 | u8 ddp_flt_set_err; | |
474 | __be16 rx_data_fr_err; | |
475 | u8 bad_st_abrt_req; | |
476 | u8 no_io_abrt_req; | |
477 | u8 abort_tmo; | |
478 | u8 abort_tmo_2; | |
479 | __be32 abort_req; | |
480 | u8 no_ppod_res_tmo; | |
481 | u8 bp_tmo; | |
482 | u8 adap_auto_cls; | |
483 | u8 no_io_cls_req; | |
484 | __be32 host_cls_req; | |
485 | __be64 unsol_cmd_rcvd; | |
486 | __be32 plogi_req_rcvd; | |
487 | __be32 prli_req_rcvd; | |
488 | __be16 logo_req_rcvd; | |
489 | __be16 prlo_req_rcvd; | |
490 | __be16 plogi_rjt_rcvd; | |
491 | __be16 prli_rjt_rcvd; | |
492 | __be32 adisc_req_rcvd; | |
493 | __be32 rscn_rcvd; | |
494 | __be32 rrq_req_rcvd; | |
495 | __be32 unsol_els_rcvd; | |
496 | u8 adisc_rjt_rcvd; | |
497 | u8 scr_rjt; | |
498 | u8 ct_rjt; | |
499 | u8 inval_bls_rcvd; | |
500 | __be32 ba_rjt_rcvd; | |
501 | } scb_stats; | |
502 | } u; | |
503 | }; | |
504 | ||
505 | #define FW_FCOE_STATS_CMD_FLOWID(x) ((x) << 0) | |
506 | #define FW_FCOE_STATS_CMD_FREE (1U << 30) | |
507 | #define FW_FCOE_STATS_CMD_NSTATS(x) ((x) << 4) | |
508 | #define FW_FCOE_STATS_CMD_PORT(x) ((x) << 0) | |
509 | #define FW_FCOE_STATS_CMD_PORT_VALID (1U << 7) | |
510 | #define FW_FCOE_STATS_CMD_IX(x) ((x) << 0) | |
511 | ||
512 | struct fw_fcoe_fcf_cmd { | |
513 | __be32 op_to_fcfi; | |
514 | __be32 retval_len16; | |
515 | __be16 priority_pkd; | |
516 | u8 mac[6]; | |
517 | u8 name_id[8]; | |
518 | u8 fabric[8]; | |
519 | __be16 vf_id; | |
520 | __be16 max_fcoe_size; | |
521 | u8 vlan_id; | |
522 | u8 fc_map[3]; | |
523 | __be32 fka_adv; | |
524 | __be32 r6; | |
525 | u8 r7_hi; | |
526 | u8 fpma_to_portid; | |
527 | u8 spma_mac[6]; | |
528 | __be64 r8; | |
529 | }; | |
530 | ||
531 | #define FW_FCOE_FCF_CMD_FCFI(x) ((x) << 0) | |
532 | #define FW_FCOE_FCF_CMD_FCFI_GET(x) (((x) >> 0) & 0xfffff) | |
533 | #define FW_FCOE_FCF_CMD_PRIORITY_GET(x) (((x) >> 0) & 0xff) | |
534 | #define FW_FCOE_FCF_CMD_FPMA_GET(x) (((x) >> 6) & 0x1) | |
535 | #define FW_FCOE_FCF_CMD_SPMA_GET(x) (((x) >> 5) & 0x1) | |
536 | #define FW_FCOE_FCF_CMD_LOGIN_GET(x) (((x) >> 4) & 0x1) | |
537 | #define FW_FCOE_FCF_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) | |
538 | ||
539 | #endif /* _T4FW_API_STOR_H_ */ |