[SCSI] csiostor: Fix sparse warnings.
[deliverable/linux.git] / drivers / scsi / csiostor / t4fw_api_stor.h
CommitLineData
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
43enum 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
82enum fw_fcoe_link_sub_op {
83 FCOE_LINK_DOWN = 0x0,
84 FCOE_LINK_UP = 0x1,
85 FCOE_LINK_COND = 0x2,
86};
87
88enum fw_fcoe_link_status {
89 FCOE_LINKDOWN = 0x0,
90 FCOE_LINKUP = 0x1,
91};
92
93enum fw_ofld_prot {
94 PROT_FCOE = 0x1,
95 PROT_ISCSI = 0x2,
96};
97
98enum 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
108enum 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
137enum fcoe_cmn_type {
138 FCOE_ELS,
139 FCOE_CT,
140 FCOE_SCSI_CMD,
141 FCOE_UNSOL_ELS,
142};
143
144enum 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
153struct 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
221struct 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
246struct 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
272struct 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
298struct 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
326struct 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
341enum 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
350struct 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
367struct 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
391struct 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
413struct 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
426struct 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
551struct 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_ */
This page took 0.04623 seconds and 5 git commands to generate.