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 | ||
43 | enum fw_retval { | |
44 | FW_SUCCESS = 0, /* completed sucessfully */ | |
45 | FW_EPERM = 1, /* operation not permitted */ | |
46 | FW_ENOENT = 2, /* no such file or directory */ | |
47 | FW_EIO = 5, /* input/output error; hw bad */ | |
48 | FW_ENOEXEC = 8, /* exec format error; inv microcode */ | |
49 | FW_EAGAIN = 11, /* try again */ | |
50 | FW_ENOMEM = 12, /* out of memory */ | |
51 | FW_EFAULT = 14, /* bad address; fw bad */ | |
52 | FW_EBUSY = 16, /* resource busy */ | |
53 | FW_EEXIST = 17, /* file exists */ | |
54 | FW_EINVAL = 22, /* invalid argument */ | |
55 | FW_ENOSPC = 28, /* no space left on device */ | |
56 | FW_ENOSYS = 38, /* functionality not implemented */ | |
57 | FW_EPROTO = 71, /* protocol error */ | |
58 | FW_EADDRINUSE = 98, /* address already in use */ | |
59 | FW_EADDRNOTAVAIL = 99, /* cannot assigned requested address */ | |
60 | FW_ENETDOWN = 100, /* network is down */ | |
61 | FW_ENETUNREACH = 101, /* network is unreachable */ | |
62 | FW_ENOBUFS = 105, /* no buffer space available */ | |
63 | FW_ETIMEDOUT = 110, /* timeout */ | |
64 | FW_EINPROGRESS = 115, /* fw internal */ | |
65 | FW_SCSI_ABORT_REQUESTED = 128, /* */ | |
66 | FW_SCSI_ABORT_TIMEDOUT = 129, /* */ | |
67 | FW_SCSI_ABORTED = 130, /* */ | |
68 | FW_SCSI_CLOSE_REQUESTED = 131, /* */ | |
69 | FW_ERR_LINK_DOWN = 132, /* */ | |
70 | FW_RDEV_NOT_READY = 133, /* */ | |
71 | FW_ERR_RDEV_LOST = 134, /* */ | |
72 | FW_ERR_RDEV_LOGO = 135, /* */ | |
73 | FW_FCOE_NO_XCHG = 136, /* */ | |
74 | FW_SCSI_RSP_ERR = 137, /* */ | |
75 | FW_ERR_RDEV_IMPL_LOGO = 138, /* */ | |
76 | FW_SCSI_UNDER_FLOW_ERR = 139, /* */ | |
77 | FW_SCSI_OVER_FLOW_ERR = 140, /* */ | |
78 | FW_SCSI_DDP_ERR = 141, /* DDP error*/ | |
79 | FW_SCSI_TASK_ERR = 142, /* No SCSI tasks available */ | |
80 | }; | |
81 | ||
82 | enum fw_fcoe_link_sub_op { | |
83 | FCOE_LINK_DOWN = 0x0, | |
84 | FCOE_LINK_UP = 0x1, | |
85 | FCOE_LINK_COND = 0x2, | |
86 | }; | |
87 | ||
88 | enum fw_fcoe_link_status { | |
89 | FCOE_LINKDOWN = 0x0, | |
90 | FCOE_LINKUP = 0x1, | |
91 | }; | |
92 | ||
93 | enum fw_ofld_prot { | |
94 | PROT_FCOE = 0x1, | |
95 | PROT_ISCSI = 0x2, | |
96 | }; | |
97 | ||
98 | enum rport_type_fcoe { | |
99 | FLOGI_VFPORT = 0x1, /* 0xfffffe */ | |
100 | FDISC_VFPORT = 0x2, /* 0xfffffe */ | |
101 | NS_VNPORT = 0x3, /* 0xfffffc */ | |
102 | REG_FC4_VNPORT = 0x4, /* any FC4 type VN_PORT */ | |
103 | REG_VNPORT = 0x5, /* 0xfffxxx - non FC4 port in switch */ | |
104 | FDMI_VNPORT = 0x6, /* 0xfffffa */ | |
105 | FAB_CTLR_VNPORT = 0x7, /* 0xfffffd */ | |
106 | }; | |
107 | ||
108 | enum event_cause_fcoe { | |
109 | PLOGI_ACC_RCVD = 0x01, | |
110 | PLOGI_RJT_RCVD = 0x02, | |
111 | PLOGI_RCVD = 0x03, | |
112 | PLOGO_RCVD = 0x04, | |
113 | PRLI_ACC_RCVD = 0x05, | |
114 | PRLI_RJT_RCVD = 0x06, | |
115 | PRLI_RCVD = 0x07, | |
116 | PRLO_RCVD = 0x08, | |
117 | NPORT_ID_CHGD = 0x09, | |
118 | FLOGO_RCVD = 0x0a, | |
119 | CLR_VIRT_LNK_RCVD = 0x0b, | |
120 | FLOGI_ACC_RCVD = 0x0c, | |
121 | FLOGI_RJT_RCVD = 0x0d, | |
122 | FDISC_ACC_RCVD = 0x0e, | |
123 | FDISC_RJT_RCVD = 0x0f, | |
124 | FLOGI_TMO_MAX_RETRY = 0x10, | |
125 | IMPL_LOGO_ADISC_ACC = 0x11, | |
126 | IMPL_LOGO_ADISC_RJT = 0x12, | |
127 | IMPL_LOGO_ADISC_CNFLT = 0x13, | |
128 | PRLI_TMO = 0x14, | |
129 | ADISC_TMO = 0x15, | |
130 | RSCN_DEV_LOST = 0x16, | |
131 | SCR_ACC_RCVD = 0x17, | |
132 | ADISC_RJT_RCVD = 0x18, | |
133 | LOGO_SNT = 0x19, | |
134 | PROTO_ERR_IMPL_LOGO = 0x1a, | |
135 | }; | |
136 | ||
137 | enum fcoe_cmn_type { | |
138 | FCOE_ELS, | |
139 | FCOE_CT, | |
140 | FCOE_SCSI_CMD, | |
141 | FCOE_UNSOL_ELS, | |
142 | }; | |
143 | ||
144 | enum fw_wr_stor_opcodes { | |
145 | FW_RDEV_WR = 0x38, | |
146 | FW_FCOE_ELS_CT_WR = 0x30, | |
147 | FW_SCSI_WRITE_WR = 0x31, | |
148 | FW_SCSI_READ_WR = 0x32, | |
149 | FW_SCSI_CMD_WR = 0x33, | |
150 | FW_SCSI_ABRT_CLS_WR = 0x34, | |
151 | }; | |
152 | ||
153 | struct fw_rdev_wr { | |
154 | __be32 op_to_immdlen; | |
155 | __be32 alloc_to_len16; | |
156 | __be64 cookie; | |
157 | u8 protocol; | |
158 | u8 event_cause; | |
159 | u8 cur_state; | |
160 | u8 prev_state; | |
161 | __be32 flags_to_assoc_flowid; | |
162 | union rdev_entry { | |
163 | struct fcoe_rdev_entry { | |
164 | __be32 flowid; | |
165 | u8 protocol; | |
166 | u8 event_cause; | |
167 | u8 flags; | |
168 | u8 rjt_reason; | |
169 | u8 cur_login_st; | |
170 | u8 prev_login_st; | |
171 | __be16 rcv_fr_sz; | |
172 | u8 rd_xfer_rdy_to_rport_type; | |
173 | u8 vft_to_qos; | |
174 | u8 org_proc_assoc_to_acc_rsp_code; | |
175 | u8 enh_disc_to_tgt; | |
176 | u8 wwnn[8]; | |
177 | u8 wwpn[8]; | |
178 | __be16 iqid; | |
179 | u8 fc_oui[3]; | |
180 | u8 r_id[3]; | |
181 | } fcoe_rdev; | |
182 | struct iscsi_rdev_entry { | |
183 | __be32 flowid; | |
184 | u8 protocol; | |
185 | u8 event_cause; | |
186 | u8 flags; | |
187 | u8 r3; | |
188 | __be16 iscsi_opts; | |
189 | __be16 tcp_opts; | |
190 | __be16 ip_opts; | |
191 | __be16 max_rcv_len; | |
192 | __be16 max_snd_len; | |
193 | __be16 first_brst_len; | |
194 | __be16 max_brst_len; | |
195 | __be16 r4; | |
196 | __be16 def_time2wait; | |
197 | __be16 def_time2ret; | |
198 | __be16 nop_out_intrvl; | |
199 | __be16 non_scsi_to; | |
200 | __be16 isid; | |
201 | __be16 tsid; | |
202 | __be16 port; | |
203 | __be16 tpgt; | |
204 | u8 r5[6]; | |
205 | __be16 iqid; | |
206 | } iscsi_rdev; | |
207 | } u; | |
208 | }; | |
209 | ||
210 | #define FW_RDEV_WR_FLOWID_GET(x) (((x) >> 8) & 0xfffff) | |
211 | #define FW_RDEV_WR_ASSOC_FLOWID_GET(x) (((x) >> 0) & 0xfffff) | |
212 | #define FW_RDEV_WR_RPORT_TYPE_GET(x) (((x) >> 0) & 0x1f) | |
213 | #define FW_RDEV_WR_NPIV_GET(x) (((x) >> 6) & 0x1) | |
214 | #define FW_RDEV_WR_CLASS_GET(x) (((x) >> 4) & 0x3) | |
215 | #define FW_RDEV_WR_TASK_RETRY_ID_GET(x) (((x) >> 5) & 0x1) | |
216 | #define FW_RDEV_WR_RETRY_GET(x) (((x) >> 4) & 0x1) | |
217 | #define FW_RDEV_WR_CONF_CMPL_GET(x) (((x) >> 3) & 0x1) | |
218 | #define FW_RDEV_WR_INI_GET(x) (((x) >> 1) & 0x1) | |
219 | #define FW_RDEV_WR_TGT_GET(x) (((x) >> 0) & 0x1) | |
220 | ||
221 | struct fw_fcoe_els_ct_wr { | |
222 | __be32 op_immdlen; | |
223 | __be32 flowid_len16; | |
5036f0a0 | 224 | u64 cookie; |
a3667aae NKI |
225 | __be16 iqid; |
226 | u8 tmo_val; | |
227 | u8 els_ct_type; | |
228 | u8 ctl_pri; | |
229 | u8 cp_en_class; | |
230 | __be16 xfer_cnt; | |
231 | u8 fl_to_sp; | |
232 | u8 l_id[3]; | |
233 | u8 r5; | |
234 | u8 r_id[3]; | |
235 | __be64 rsp_dmaaddr; | |
236 | __be32 rsp_dmalen; | |
237 | __be32 r6; | |
238 | }; | |
239 | ||
240 | #define FW_FCOE_ELS_CT_WR_OPCODE(x) ((x) << 24) | |
241 | #define FW_FCOE_ELS_CT_WR_OPCODE_GET(x) (((x) >> 24) & 0xff) | |
242 | #define FW_FCOE_ELS_CT_WR_IMMDLEN(x) ((x) << 0) | |
243 | #define FW_FCOE_ELS_CT_WR_IMMDLEN_GET(x) (((x) >> 0) & 0xff) | |
244 | #define FW_FCOE_ELS_CT_WR_SP(x) ((x) << 0) | |
245 | ||
246 | struct fw_scsi_write_wr { | |
247 | __be32 op_immdlen; | |
248 | __be32 flowid_len16; | |
5036f0a0 | 249 | u64 cookie; |
a3667aae NKI |
250 | __be16 iqid; |
251 | u8 tmo_val; | |
252 | u8 use_xfer_cnt; | |
253 | union fw_scsi_write_priv { | |
254 | struct fcoe_write_priv { | |
255 | u8 ctl_pri; | |
256 | u8 cp_en_class; | |
257 | u8 r3_lo[2]; | |
258 | } fcoe; | |
259 | struct iscsi_write_priv { | |
260 | u8 r3[4]; | |
261 | } iscsi; | |
262 | } u; | |
263 | __be32 xfer_cnt; | |
264 | __be32 ini_xfer_cnt; | |
265 | __be64 rsp_dmaaddr; | |
266 | __be32 rsp_dmalen; | |
267 | __be32 r4; | |
268 | }; | |
269 | ||
270 | #define FW_SCSI_WRITE_WR_IMMDLEN(x) ((x) << 0) | |
271 | ||
272 | struct fw_scsi_read_wr { | |
273 | __be32 op_immdlen; | |
274 | __be32 flowid_len16; | |
5036f0a0 | 275 | u64 cookie; |
a3667aae NKI |
276 | __be16 iqid; |
277 | u8 tmo_val; | |
278 | u8 use_xfer_cnt; | |
279 | union fw_scsi_read_priv { | |
280 | struct fcoe_read_priv { | |
281 | u8 ctl_pri; | |
282 | u8 cp_en_class; | |
283 | u8 r3_lo[2]; | |
284 | } fcoe; | |
285 | struct iscsi_read_priv { | |
286 | u8 r3[4]; | |
287 | } iscsi; | |
288 | } u; | |
289 | __be32 xfer_cnt; | |
290 | __be32 ini_xfer_cnt; | |
291 | __be64 rsp_dmaaddr; | |
292 | __be32 rsp_dmalen; | |
293 | __be32 r4; | |
294 | }; | |
295 | ||
296 | #define FW_SCSI_READ_WR_IMMDLEN(x) ((x) << 0) | |
297 | ||
298 | struct fw_scsi_cmd_wr { | |
299 | __be32 op_immdlen; | |
300 | __be32 flowid_len16; | |
5036f0a0 | 301 | u64 cookie; |
a3667aae NKI |
302 | __be16 iqid; |
303 | u8 tmo_val; | |
304 | u8 r3; | |
305 | union fw_scsi_cmd_priv { | |
306 | struct fcoe_cmd_priv { | |
307 | u8 ctl_pri; | |
308 | u8 cp_en_class; | |
309 | u8 r4_lo[2]; | |
310 | } fcoe; | |
311 | struct iscsi_cmd_priv { | |
312 | u8 r4[4]; | |
313 | } iscsi; | |
314 | } u; | |
315 | u8 r5[8]; | |
316 | __be64 rsp_dmaaddr; | |
317 | __be32 rsp_dmalen; | |
318 | __be32 r6; | |
319 | }; | |
320 | ||
321 | #define FW_SCSI_CMD_WR_IMMDLEN(x) ((x) << 0) | |
322 | ||
323 | #define SCSI_ABORT 0 | |
324 | #define SCSI_CLOSE 1 | |
325 | ||
326 | struct fw_scsi_abrt_cls_wr { | |
327 | __be32 op_immdlen; | |
328 | __be32 flowid_len16; | |
5036f0a0 | 329 | u64 cookie; |
a3667aae NKI |
330 | __be16 iqid; |
331 | u8 tmo_val; | |
332 | u8 sub_opcode_to_chk_all_io; | |
333 | u8 r3[4]; | |
5036f0a0 | 334 | u64 t_cookie; |
a3667aae NKI |
335 | }; |
336 | ||
337 | #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE(x) ((x) << 2) | |
338 | #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE_GET(x) (((x) >> 2) & 0x3f) | |
339 | #define FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(x) ((x) << 0) | |
340 | ||
341 | enum fw_cmd_stor_opcodes { | |
342 | FW_FCOE_RES_INFO_CMD = 0x31, | |
343 | FW_FCOE_LINK_CMD = 0x32, | |
344 | FW_FCOE_VNP_CMD = 0x33, | |
345 | FW_FCOE_SPARAMS_CMD = 0x35, | |
346 | FW_FCOE_STATS_CMD = 0x37, | |
347 | FW_FCOE_FCF_CMD = 0x38, | |
348 | }; | |
349 | ||
350 | struct fw_fcoe_res_info_cmd { | |
351 | __be32 op_to_read; | |
352 | __be32 retval_len16; | |
353 | __be16 e_d_tov; | |
354 | __be16 r_a_tov_seq; | |
355 | __be16 r_a_tov_els; | |
356 | __be16 r_r_tov; | |
357 | __be32 max_xchgs; | |
358 | __be32 max_ssns; | |
359 | __be32 used_xchgs; | |
360 | __be32 used_ssns; | |
361 | __be32 max_fcfs; | |
362 | __be32 max_vnps; | |
363 | __be32 used_fcfs; | |
364 | __be32 used_vnps; | |
365 | }; | |
366 | ||
367 | struct fw_fcoe_link_cmd { | |
368 | __be32 op_to_portid; | |
369 | __be32 retval_len16; | |
370 | __be32 sub_opcode_fcfi; | |
371 | u8 r3; | |
372 | u8 lstatus; | |
373 | __be16 flags; | |
374 | u8 r4; | |
375 | u8 set_vlan; | |
376 | __be16 vlan_id; | |
377 | __be32 vnpi_pkd; | |
378 | __be16 r6; | |
379 | u8 phy_mac[6]; | |
380 | u8 vnport_wwnn[8]; | |
381 | u8 vnport_wwpn[8]; | |
382 | }; | |
383 | ||
384 | #define FW_FCOE_LINK_CMD_PORTID(x) ((x) << 0) | |
385 | #define FW_FCOE_LINK_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) | |
386 | #define FW_FCOE_LINK_CMD_SUB_OPCODE(x) ((x) << 24U) | |
387 | #define FW_FCOE_LINK_CMD_FCFI(x) ((x) << 0) | |
388 | #define FW_FCOE_LINK_CMD_FCFI_GET(x) (((x) >> 0) & 0xffffff) | |
389 | #define FW_FCOE_LINK_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) | |
390 | ||
391 | struct fw_fcoe_vnp_cmd { | |
392 | __be32 op_to_fcfi; | |
393 | __be32 alloc_to_len16; | |
394 | __be32 gen_wwn_to_vnpi; | |
395 | __be32 vf_id; | |
396 | __be16 iqid; | |
397 | u8 vnport_mac[6]; | |
398 | u8 vnport_wwnn[8]; | |
399 | u8 vnport_wwpn[8]; | |
400 | u8 cmn_srv_parms[16]; | |
401 | u8 clsp_word_0_1[8]; | |
402 | }; | |
403 | ||
404 | #define FW_FCOE_VNP_CMD_FCFI(x) ((x) << 0) | |
405 | #define FW_FCOE_VNP_CMD_ALLOC (1U << 31) | |
406 | #define FW_FCOE_VNP_CMD_FREE (1U << 30) | |
407 | #define FW_FCOE_VNP_CMD_MODIFY (1U << 29) | |
408 | #define FW_FCOE_VNP_CMD_GEN_WWN (1U << 22) | |
409 | #define FW_FCOE_VNP_CMD_VFID_EN (1U << 20) | |
410 | #define FW_FCOE_VNP_CMD_VNPI(x) ((x) << 0) | |
411 | #define FW_FCOE_VNP_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) | |
412 | ||
413 | struct fw_fcoe_sparams_cmd { | |
414 | __be32 op_to_portid; | |
415 | __be32 retval_len16; | |
416 | u8 r3[7]; | |
417 | u8 cos; | |
418 | u8 lport_wwnn[8]; | |
419 | u8 lport_wwpn[8]; | |
420 | u8 cmn_srv_parms[16]; | |
421 | u8 cls_srv_parms[16]; | |
422 | }; | |
423 | ||
424 | #define FW_FCOE_SPARAMS_CMD_PORTID(x) ((x) << 0) | |
425 | ||
426 | struct fw_fcoe_stats_cmd { | |
427 | __be32 op_to_flowid; | |
428 | __be32 free_to_len16; | |
429 | union fw_fcoe_stats { | |
430 | struct fw_fcoe_stats_ctl { | |
431 | u8 nstats_port; | |
432 | u8 port_valid_ix; | |
433 | __be16 r6; | |
434 | __be32 r7; | |
435 | __be64 stat0; | |
436 | __be64 stat1; | |
437 | __be64 stat2; | |
438 | __be64 stat3; | |
439 | __be64 stat4; | |
440 | __be64 stat5; | |
441 | } ctl; | |
442 | struct fw_fcoe_port_stats { | |
443 | __be64 tx_bcast_bytes; | |
444 | __be64 tx_bcast_frames; | |
445 | __be64 tx_mcast_bytes; | |
446 | __be64 tx_mcast_frames; | |
447 | __be64 tx_ucast_bytes; | |
448 | __be64 tx_ucast_frames; | |
449 | __be64 tx_drop_frames; | |
450 | __be64 tx_offload_bytes; | |
451 | __be64 tx_offload_frames; | |
452 | __be64 rx_bcast_bytes; | |
453 | __be64 rx_bcast_frames; | |
454 | __be64 rx_mcast_bytes; | |
455 | __be64 rx_mcast_frames; | |
456 | __be64 rx_ucast_bytes; | |
457 | __be64 rx_ucast_frames; | |
458 | __be64 rx_err_frames; | |
459 | } port_stats; | |
460 | struct fw_fcoe_fcf_stats { | |
461 | __be32 fip_tx_bytes; | |
462 | __be32 fip_tx_fr; | |
463 | __be64 fcf_ka; | |
464 | __be64 mcast_adv_rcvd; | |
465 | __be16 ucast_adv_rcvd; | |
466 | __be16 sol_sent; | |
467 | __be16 vlan_req; | |
468 | __be16 vlan_rpl; | |
469 | __be16 clr_vlink; | |
470 | __be16 link_down; | |
471 | __be16 link_up; | |
472 | __be16 logo; | |
473 | __be16 flogi_req; | |
474 | __be16 flogi_rpl; | |
475 | __be16 fdisc_req; | |
476 | __be16 fdisc_rpl; | |
477 | __be16 fka_prd_chg; | |
478 | __be16 fc_map_chg; | |
479 | __be16 vfid_chg; | |
480 | u8 no_fka_req; | |
481 | u8 no_vnp; | |
482 | } fcf_stats; | |
483 | struct fw_fcoe_pcb_stats { | |
484 | __be64 tx_bytes; | |
485 | __be64 tx_frames; | |
486 | __be64 rx_bytes; | |
487 | __be64 rx_frames; | |
488 | __be32 vnp_ka; | |
489 | __be32 unsol_els_rcvd; | |
490 | __be64 unsol_cmd_rcvd; | |
491 | __be16 implicit_logo; | |
492 | __be16 flogi_inv_sparm; | |
493 | __be16 fdisc_inv_sparm; | |
494 | __be16 flogi_rjt; | |
495 | __be16 fdisc_rjt; | |
496 | __be16 no_ssn; | |
497 | __be16 mac_flt_fail; | |
498 | __be16 inv_fr_rcvd; | |
499 | } pcb_stats; | |
500 | struct fw_fcoe_scb_stats { | |
501 | __be64 tx_bytes; | |
502 | __be64 tx_frames; | |
503 | __be64 rx_bytes; | |
504 | __be64 rx_frames; | |
505 | __be32 host_abrt_req; | |
506 | __be32 adap_auto_abrt; | |
507 | __be32 adap_abrt_rsp; | |
508 | __be32 host_ios_req; | |
509 | __be16 ssn_offl_ios; | |
510 | __be16 ssn_not_rdy_ios; | |
511 | u8 rx_data_ddp_err; | |
512 | u8 ddp_flt_set_err; | |
513 | __be16 rx_data_fr_err; | |
514 | u8 bad_st_abrt_req; | |
515 | u8 no_io_abrt_req; | |
516 | u8 abort_tmo; | |
517 | u8 abort_tmo_2; | |
518 | __be32 abort_req; | |
519 | u8 no_ppod_res_tmo; | |
520 | u8 bp_tmo; | |
521 | u8 adap_auto_cls; | |
522 | u8 no_io_cls_req; | |
523 | __be32 host_cls_req; | |
524 | __be64 unsol_cmd_rcvd; | |
525 | __be32 plogi_req_rcvd; | |
526 | __be32 prli_req_rcvd; | |
527 | __be16 logo_req_rcvd; | |
528 | __be16 prlo_req_rcvd; | |
529 | __be16 plogi_rjt_rcvd; | |
530 | __be16 prli_rjt_rcvd; | |
531 | __be32 adisc_req_rcvd; | |
532 | __be32 rscn_rcvd; | |
533 | __be32 rrq_req_rcvd; | |
534 | __be32 unsol_els_rcvd; | |
535 | u8 adisc_rjt_rcvd; | |
536 | u8 scr_rjt; | |
537 | u8 ct_rjt; | |
538 | u8 inval_bls_rcvd; | |
539 | __be32 ba_rjt_rcvd; | |
540 | } scb_stats; | |
541 | } u; | |
542 | }; | |
543 | ||
544 | #define FW_FCOE_STATS_CMD_FLOWID(x) ((x) << 0) | |
545 | #define FW_FCOE_STATS_CMD_FREE (1U << 30) | |
546 | #define FW_FCOE_STATS_CMD_NSTATS(x) ((x) << 4) | |
547 | #define FW_FCOE_STATS_CMD_PORT(x) ((x) << 0) | |
548 | #define FW_FCOE_STATS_CMD_PORT_VALID (1U << 7) | |
549 | #define FW_FCOE_STATS_CMD_IX(x) ((x) << 0) | |
550 | ||
551 | struct fw_fcoe_fcf_cmd { | |
552 | __be32 op_to_fcfi; | |
553 | __be32 retval_len16; | |
554 | __be16 priority_pkd; | |
555 | u8 mac[6]; | |
556 | u8 name_id[8]; | |
557 | u8 fabric[8]; | |
558 | __be16 vf_id; | |
559 | __be16 max_fcoe_size; | |
560 | u8 vlan_id; | |
561 | u8 fc_map[3]; | |
562 | __be32 fka_adv; | |
563 | __be32 r6; | |
564 | u8 r7_hi; | |
565 | u8 fpma_to_portid; | |
566 | u8 spma_mac[6]; | |
567 | __be64 r8; | |
568 | }; | |
569 | ||
570 | #define FW_FCOE_FCF_CMD_FCFI(x) ((x) << 0) | |
571 | #define FW_FCOE_FCF_CMD_FCFI_GET(x) (((x) >> 0) & 0xfffff) | |
572 | #define FW_FCOE_FCF_CMD_PRIORITY_GET(x) (((x) >> 0) & 0xff) | |
573 | #define FW_FCOE_FCF_CMD_FPMA_GET(x) (((x) >> 6) & 0x1) | |
574 | #define FW_FCOE_FCF_CMD_SPMA_GET(x) (((x) >> 5) & 0x1) | |
575 | #define FW_FCOE_FCF_CMD_LOGIN_GET(x) (((x) >> 4) & 0x1) | |
576 | #define FW_FCOE_FCF_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) | |
577 | ||
578 | #endif /* _T4FW_API_STOR_H_ */ |