USB: usb-storage: unusual_devs update for Super TOP SATA bridge
[linux/fpc-iii.git] / drivers / scsi / bfa / bfad_bsg.h
blob17ad67283130d1f1528ade5e97893766e6534eac
1 /*
2 * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
3 * All rights reserved
4 * www.brocade.com
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License (GPL) Version 2 as
10 * published by the Free Software Foundation
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
17 #ifndef BFAD_BSG_H
18 #define BFAD_BSG_H
20 #include "bfa_defs.h"
21 #include "bfa_defs_fcs.h"
23 /* Definitions of vendor unique structures and command codes passed in
24 * using FC_BSG_HST_VENDOR message code.
26 enum {
27 IOCMD_IOC_ENABLE = 0x1,
28 IOCMD_IOC_DISABLE,
29 IOCMD_IOC_GET_ATTR,
30 IOCMD_IOC_GET_INFO,
31 IOCMD_IOC_GET_STATS,
32 IOCMD_IOC_GET_FWSTATS,
33 IOCMD_IOC_RESET_STATS,
34 IOCMD_IOC_RESET_FWSTATS,
35 IOCMD_IOC_SET_ADAPTER_NAME,
36 IOCMD_IOC_SET_PORT_NAME,
37 IOCMD_IOCFC_GET_ATTR,
38 IOCMD_IOCFC_SET_INTR,
39 IOCMD_PORT_ENABLE,
40 IOCMD_PORT_DISABLE,
41 IOCMD_PORT_GET_ATTR,
42 IOCMD_PORT_GET_STATS,
43 IOCMD_PORT_RESET_STATS,
44 IOCMD_PORT_CFG_TOPO,
45 IOCMD_PORT_CFG_SPEED,
46 IOCMD_PORT_CFG_ALPA,
47 IOCMD_PORT_CFG_MAXFRSZ,
48 IOCMD_PORT_CLR_ALPA,
49 IOCMD_PORT_BBSC_ENABLE,
50 IOCMD_PORT_BBSC_DISABLE,
51 IOCMD_LPORT_GET_ATTR,
52 IOCMD_LPORT_GET_RPORTS,
53 IOCMD_LPORT_GET_STATS,
54 IOCMD_LPORT_RESET_STATS,
55 IOCMD_LPORT_GET_IOSTATS,
56 IOCMD_RPORT_GET_ATTR,
57 IOCMD_RPORT_GET_ADDR,
58 IOCMD_RPORT_GET_STATS,
59 IOCMD_RPORT_RESET_STATS,
60 IOCMD_RPORT_SET_SPEED,
61 IOCMD_VPORT_GET_ATTR,
62 IOCMD_VPORT_GET_STATS,
63 IOCMD_VPORT_RESET_STATS,
64 IOCMD_FABRIC_GET_LPORTS,
65 IOCMD_RATELIM_ENABLE,
66 IOCMD_RATELIM_DISABLE,
67 IOCMD_RATELIM_DEF_SPEED,
68 IOCMD_FCPIM_FAILOVER,
69 IOCMD_FCPIM_MODSTATS,
70 IOCMD_FCPIM_MODSTATSCLR,
71 IOCMD_FCPIM_DEL_ITN_STATS,
72 IOCMD_ITNIM_GET_ATTR,
73 IOCMD_ITNIM_GET_IOSTATS,
74 IOCMD_ITNIM_RESET_STATS,
75 IOCMD_ITNIM_GET_ITNSTATS,
76 IOCMD_IOC_PCIFN_CFG,
77 IOCMD_FCPORT_ENABLE,
78 IOCMD_FCPORT_DISABLE,
79 IOCMD_PCIFN_CREATE,
80 IOCMD_PCIFN_DELETE,
81 IOCMD_PCIFN_BW,
82 IOCMD_ADAPTER_CFG_MODE,
83 IOCMD_PORT_CFG_MODE,
84 IOCMD_FLASH_ENABLE_OPTROM,
85 IOCMD_FLASH_DISABLE_OPTROM,
86 IOCMD_FAA_QUERY,
87 IOCMD_CEE_GET_ATTR,
88 IOCMD_CEE_GET_STATS,
89 IOCMD_CEE_RESET_STATS,
90 IOCMD_SFP_MEDIA,
91 IOCMD_SFP_SPEED,
92 IOCMD_FLASH_GET_ATTR,
93 IOCMD_FLASH_ERASE_PART,
94 IOCMD_FLASH_UPDATE_PART,
95 IOCMD_FLASH_READ_PART,
96 IOCMD_DIAG_TEMP,
97 IOCMD_DIAG_MEMTEST,
98 IOCMD_DIAG_LOOPBACK,
99 IOCMD_DIAG_FWPING,
100 IOCMD_DIAG_QUEUETEST,
101 IOCMD_DIAG_SFP,
102 IOCMD_DIAG_LED,
103 IOCMD_DIAG_BEACON_LPORT,
104 IOCMD_DIAG_LB_STAT,
105 IOCMD_PHY_GET_ATTR,
106 IOCMD_PHY_GET_STATS,
107 IOCMD_PHY_UPDATE_FW,
108 IOCMD_PHY_READ_FW,
109 IOCMD_VHBA_QUERY,
110 IOCMD_DEBUG_PORTLOG,
111 IOCMD_DEBUG_FW_CORE,
112 IOCMD_DEBUG_FW_STATE_CLR,
113 IOCMD_DEBUG_PORTLOG_CLR,
114 IOCMD_DEBUG_START_DTRC,
115 IOCMD_DEBUG_STOP_DTRC,
116 IOCMD_DEBUG_PORTLOG_CTL,
117 IOCMD_FCPIM_PROFILE_ON,
118 IOCMD_FCPIM_PROFILE_OFF,
119 IOCMD_ITNIM_GET_IOPROFILE,
120 IOCMD_FCPORT_GET_STATS,
121 IOCMD_FCPORT_RESET_STATS,
122 IOCMD_BOOT_CFG,
123 IOCMD_BOOT_QUERY,
124 IOCMD_PREBOOT_QUERY,
125 IOCMD_ETHBOOT_CFG,
126 IOCMD_ETHBOOT_QUERY,
127 IOCMD_TRUNK_ENABLE,
128 IOCMD_TRUNK_DISABLE,
129 IOCMD_TRUNK_GET_ATTR,
130 IOCMD_QOS_ENABLE,
131 IOCMD_QOS_DISABLE,
132 IOCMD_QOS_GET_ATTR,
133 IOCMD_QOS_GET_VC_ATTR,
134 IOCMD_QOS_GET_STATS,
135 IOCMD_QOS_RESET_STATS,
136 IOCMD_VF_GET_STATS,
137 IOCMD_VF_RESET_STATS,
138 IOCMD_FCPIM_LUNMASK_ENABLE,
139 IOCMD_FCPIM_LUNMASK_DISABLE,
140 IOCMD_FCPIM_LUNMASK_CLEAR,
141 IOCMD_FCPIM_LUNMASK_QUERY,
142 IOCMD_FCPIM_LUNMASK_ADD,
143 IOCMD_FCPIM_LUNMASK_DELETE,
146 struct bfa_bsg_gen_s {
147 bfa_status_t status;
148 u16 bfad_num;
149 u16 rsvd;
152 struct bfa_bsg_portlogctl_s {
153 bfa_status_t status;
154 u16 bfad_num;
155 u16 rsvd;
156 bfa_boolean_t ctl;
157 int inst_no;
160 struct bfa_bsg_fcpim_profile_s {
161 bfa_status_t status;
162 u16 bfad_num;
163 u16 rsvd;
166 struct bfa_bsg_itnim_ioprofile_s {
167 bfa_status_t status;
168 u16 bfad_num;
169 u16 vf_id;
170 wwn_t lpwwn;
171 wwn_t rpwwn;
172 struct bfa_itnim_ioprofile_s ioprofile;
175 struct bfa_bsg_fcport_stats_s {
176 bfa_status_t status;
177 u16 bfad_num;
178 u16 rsvd;
179 union bfa_fcport_stats_u stats;
182 struct bfa_bsg_ioc_name_s {
183 bfa_status_t status;
184 u16 bfad_num;
185 u16 rsvd;
186 char name[BFA_ADAPTER_SYM_NAME_LEN];
189 struct bfa_bsg_ioc_info_s {
190 bfa_status_t status;
191 u16 bfad_num;
192 u16 rsvd;
193 char serialnum[64];
194 char hwpath[BFA_STRING_32];
195 char adapter_hwpath[BFA_STRING_32];
196 char guid[BFA_ADAPTER_SYM_NAME_LEN*2];
197 char name[BFA_ADAPTER_SYM_NAME_LEN];
198 char port_name[BFA_ADAPTER_SYM_NAME_LEN];
199 char eth_name[BFA_ADAPTER_SYM_NAME_LEN];
200 wwn_t pwwn;
201 wwn_t nwwn;
202 wwn_t factorypwwn;
203 wwn_t factorynwwn;
204 mac_t mac;
205 mac_t factory_mac; /* Factory mac address */
206 mac_t current_mac; /* Currently assigned mac address */
207 enum bfa_ioc_type_e ioc_type;
208 u16 pvid; /* Port vlan id */
209 u16 rsvd1;
210 u32 host;
211 u32 bandwidth; /* For PF support */
212 u32 rsvd2;
215 struct bfa_bsg_ioc_attr_s {
216 bfa_status_t status;
217 u16 bfad_num;
218 u16 rsvd;
219 struct bfa_ioc_attr_s ioc_attr;
222 struct bfa_bsg_ioc_stats_s {
223 bfa_status_t status;
224 u16 bfad_num;
225 u16 rsvd;
226 struct bfa_ioc_stats_s ioc_stats;
229 struct bfa_bsg_ioc_fwstats_s {
230 bfa_status_t status;
231 u16 bfad_num;
232 u16 rsvd;
233 u32 buf_size;
234 u32 rsvd1;
235 u64 buf_ptr;
238 struct bfa_bsg_iocfc_attr_s {
239 bfa_status_t status;
240 u16 bfad_num;
241 u16 rsvd;
242 struct bfa_iocfc_attr_s iocfc_attr;
245 struct bfa_bsg_iocfc_intr_s {
246 bfa_status_t status;
247 u16 bfad_num;
248 u16 rsvd;
249 struct bfa_iocfc_intr_attr_s attr;
252 struct bfa_bsg_port_attr_s {
253 bfa_status_t status;
254 u16 bfad_num;
255 u16 rsvd;
256 struct bfa_port_attr_s attr;
259 struct bfa_bsg_port_cfg_s {
260 bfa_status_t status;
261 u16 bfad_num;
262 u16 rsvd;
263 u32 param;
264 u32 rsvd1;
267 struct bfa_bsg_port_cfg_maxfrsize_s {
268 bfa_status_t status;
269 u16 bfad_num;
270 u16 maxfrsize;
273 struct bfa_bsg_port_stats_s {
274 bfa_status_t status;
275 u16 bfad_num;
276 u16 rsvd;
277 u32 buf_size;
278 u32 rsvd1;
279 u64 buf_ptr;
282 struct bfa_bsg_lport_attr_s {
283 bfa_status_t status;
284 u16 bfad_num;
285 u16 vf_id;
286 wwn_t pwwn;
287 struct bfa_lport_attr_s port_attr;
290 struct bfa_bsg_lport_stats_s {
291 bfa_status_t status;
292 u16 bfad_num;
293 u16 vf_id;
294 wwn_t pwwn;
295 struct bfa_lport_stats_s port_stats;
298 struct bfa_bsg_lport_iostats_s {
299 bfa_status_t status;
300 u16 bfad_num;
301 u16 vf_id;
302 wwn_t pwwn;
303 struct bfa_itnim_iostats_s iostats;
306 struct bfa_bsg_lport_get_rports_s {
307 bfa_status_t status;
308 u16 bfad_num;
309 u16 vf_id;
310 wwn_t pwwn;
311 u64 rbuf_ptr;
312 u32 nrports;
313 u32 rsvd;
316 struct bfa_bsg_rport_attr_s {
317 bfa_status_t status;
318 u16 bfad_num;
319 u16 vf_id;
320 wwn_t pwwn;
321 wwn_t rpwwn;
322 struct bfa_rport_attr_s attr;
325 struct bfa_bsg_rport_stats_s {
326 bfa_status_t status;
327 u16 bfad_num;
328 u16 vf_id;
329 wwn_t pwwn;
330 wwn_t rpwwn;
331 struct bfa_rport_stats_s stats;
334 struct bfa_bsg_rport_scsi_addr_s {
335 bfa_status_t status;
336 u16 bfad_num;
337 u16 vf_id;
338 wwn_t pwwn;
339 wwn_t rpwwn;
340 u32 host;
341 u32 bus;
342 u32 target;
343 u32 lun;
346 struct bfa_bsg_rport_reset_stats_s {
347 bfa_status_t status;
348 u16 bfad_num;
349 u16 vf_id;
350 wwn_t pwwn;
351 wwn_t rpwwn;
354 struct bfa_bsg_rport_set_speed_s {
355 bfa_status_t status;
356 u16 bfad_num;
357 u16 vf_id;
358 enum bfa_port_speed speed;
359 u32 rsvd;
360 wwn_t pwwn;
361 wwn_t rpwwn;
364 struct bfa_bsg_vport_attr_s {
365 bfa_status_t status;
366 u16 bfad_num;
367 u16 vf_id;
368 wwn_t vpwwn;
369 struct bfa_vport_attr_s vport_attr;
372 struct bfa_bsg_vport_stats_s {
373 bfa_status_t status;
374 u16 bfad_num;
375 u16 vf_id;
376 wwn_t vpwwn;
377 struct bfa_vport_stats_s vport_stats;
380 struct bfa_bsg_reset_stats_s {
381 bfa_status_t status;
382 u16 bfad_num;
383 u16 vf_id;
384 wwn_t vpwwn;
387 struct bfa_bsg_fabric_get_lports_s {
388 bfa_status_t status;
389 u16 bfad_num;
390 u16 vf_id;
391 u64 buf_ptr;
392 u32 nports;
393 u32 rsvd;
396 struct bfa_bsg_trl_speed_s {
397 bfa_status_t status;
398 u16 bfad_num;
399 u16 rsvd;
400 enum bfa_port_speed speed;
403 struct bfa_bsg_fcpim_s {
404 bfa_status_t status;
405 u16 bfad_num;
406 u16 param;
409 struct bfa_bsg_fcpim_modstats_s {
410 bfa_status_t status;
411 u16 bfad_num;
412 struct bfa_itnim_iostats_s modstats;
415 struct bfa_bsg_fcpim_del_itn_stats_s {
416 bfa_status_t status;
417 u16 bfad_num;
418 struct bfa_fcpim_del_itn_stats_s modstats;
421 struct bfa_bsg_fcpim_modstatsclr_s {
422 bfa_status_t status;
423 u16 bfad_num;
426 struct bfa_bsg_itnim_attr_s {
427 bfa_status_t status;
428 u16 bfad_num;
429 u16 vf_id;
430 wwn_t lpwwn;
431 wwn_t rpwwn;
432 struct bfa_itnim_attr_s attr;
435 struct bfa_bsg_itnim_iostats_s {
436 bfa_status_t status;
437 u16 bfad_num;
438 u16 vf_id;
439 wwn_t lpwwn;
440 wwn_t rpwwn;
441 struct bfa_itnim_iostats_s iostats;
444 struct bfa_bsg_itnim_itnstats_s {
445 bfa_status_t status;
446 u16 bfad_num;
447 u16 vf_id;
448 wwn_t lpwwn;
449 wwn_t rpwwn;
450 struct bfa_itnim_stats_s itnstats;
453 struct bfa_bsg_pcifn_cfg_s {
454 bfa_status_t status;
455 u16 bfad_num;
456 u16 rsvd;
457 struct bfa_ablk_cfg_s pcifn_cfg;
460 struct bfa_bsg_pcifn_s {
461 bfa_status_t status;
462 u16 bfad_num;
463 u16 pcifn_id;
464 u32 bandwidth;
465 u8 port;
466 enum bfi_pcifn_class pcifn_class;
467 u8 rsvd[1];
470 struct bfa_bsg_adapter_cfg_mode_s {
471 bfa_status_t status;
472 u16 bfad_num;
473 u16 rsvd;
474 struct bfa_adapter_cfg_mode_s cfg;
477 struct bfa_bsg_port_cfg_mode_s {
478 bfa_status_t status;
479 u16 bfad_num;
480 u16 instance;
481 struct bfa_port_cfg_mode_s cfg;
484 struct bfa_bsg_faa_attr_s {
485 bfa_status_t status;
486 u16 bfad_num;
487 u16 rsvd;
488 struct bfa_faa_attr_s faa_attr;
491 struct bfa_bsg_cee_attr_s {
492 bfa_status_t status;
493 u16 bfad_num;
494 u16 rsvd;
495 u32 buf_size;
496 u32 rsvd1;
497 u64 buf_ptr;
500 struct bfa_bsg_cee_stats_s {
501 bfa_status_t status;
502 u16 bfad_num;
503 u16 rsvd;
504 u32 buf_size;
505 u32 rsvd1;
506 u64 buf_ptr;
509 struct bfa_bsg_sfp_media_s {
510 bfa_status_t status;
511 u16 bfad_num;
512 u16 rsvd;
513 enum bfa_defs_sfp_media_e media;
516 struct bfa_bsg_sfp_speed_s {
517 bfa_status_t status;
518 u16 bfad_num;
519 u16 rsvd;
520 enum bfa_port_speed speed;
523 struct bfa_bsg_flash_attr_s {
524 bfa_status_t status;
525 u16 bfad_num;
526 u16 rsvd;
527 struct bfa_flash_attr_s attr;
530 struct bfa_bsg_flash_s {
531 bfa_status_t status;
532 u16 bfad_num;
533 u8 instance;
534 u8 rsvd;
535 enum bfa_flash_part_type type;
536 int bufsz;
537 u64 buf_ptr;
540 struct bfa_bsg_diag_get_temp_s {
541 bfa_status_t status;
542 u16 bfad_num;
543 u16 rsvd;
544 struct bfa_diag_results_tempsensor_s result;
547 struct bfa_bsg_diag_memtest_s {
548 bfa_status_t status;
549 u16 bfad_num;
550 u16 rsvd[3];
551 u32 pat;
552 struct bfa_diag_memtest_result result;
553 struct bfa_diag_memtest_s memtest;
556 struct bfa_bsg_diag_loopback_s {
557 bfa_status_t status;
558 u16 bfad_num;
559 u16 rsvd;
560 enum bfa_port_opmode opmode;
561 enum bfa_port_speed speed;
562 u32 lpcnt;
563 u32 pat;
564 struct bfa_diag_loopback_result_s result;
567 struct bfa_bsg_diag_fwping_s {
568 bfa_status_t status;
569 u16 bfad_num;
570 u16 rsvd;
571 u32 cnt;
572 u32 pattern;
573 struct bfa_diag_results_fwping result;
576 struct bfa_bsg_diag_qtest_s {
577 bfa_status_t status;
578 u16 bfad_num;
579 u16 rsvd;
580 u32 force;
581 u32 queue;
582 struct bfa_diag_qtest_result_s result;
585 struct bfa_bsg_sfp_show_s {
586 bfa_status_t status;
587 u16 bfad_num;
588 u16 rsvd;
589 struct sfp_mem_s sfp;
592 struct bfa_bsg_diag_led_s {
593 bfa_status_t status;
594 u16 bfad_num;
595 u16 rsvd;
596 struct bfa_diag_ledtest_s ledtest;
599 struct bfa_bsg_diag_beacon_s {
600 bfa_status_t status;
601 u16 bfad_num;
602 u16 rsvd;
603 bfa_boolean_t beacon;
604 bfa_boolean_t link_e2e_beacon;
605 u32 second;
608 struct bfa_bsg_diag_lb_stat_s {
609 bfa_status_t status;
610 u16 bfad_num;
611 u16 rsvd;
614 struct bfa_bsg_phy_attr_s {
615 bfa_status_t status;
616 u16 bfad_num;
617 u16 instance;
618 struct bfa_phy_attr_s attr;
621 struct bfa_bsg_phy_s {
622 bfa_status_t status;
623 u16 bfad_num;
624 u16 instance;
625 u64 bufsz;
626 u64 buf_ptr;
629 struct bfa_bsg_debug_s {
630 bfa_status_t status;
631 u16 bfad_num;
632 u16 rsvd;
633 u32 bufsz;
634 int inst_no;
635 u64 buf_ptr;
636 u64 offset;
639 struct bfa_bsg_phy_stats_s {
640 bfa_status_t status;
641 u16 bfad_num;
642 u16 instance;
643 struct bfa_phy_stats_s stats;
646 struct bfa_bsg_vhba_attr_s {
647 bfa_status_t status;
648 u16 bfad_num;
649 u16 pcifn_id;
650 struct bfa_vhba_attr_s attr;
653 struct bfa_bsg_boot_s {
654 bfa_status_t status;
655 u16 bfad_num;
656 u16 rsvd;
657 struct bfa_boot_cfg_s cfg;
660 struct bfa_bsg_preboot_s {
661 bfa_status_t status;
662 u16 bfad_num;
663 u16 rsvd;
664 struct bfa_boot_pbc_s cfg;
667 struct bfa_bsg_ethboot_s {
668 bfa_status_t status;
669 u16 bfad_num;
670 u16 rsvd;
671 struct bfa_ethboot_cfg_s cfg;
674 struct bfa_bsg_trunk_attr_s {
675 bfa_status_t status;
676 u16 bfad_num;
677 u16 rsvd;
678 struct bfa_trunk_attr_s attr;
681 struct bfa_bsg_qos_attr_s {
682 bfa_status_t status;
683 u16 bfad_num;
684 u16 rsvd;
685 struct bfa_qos_attr_s attr;
688 struct bfa_bsg_qos_vc_attr_s {
689 bfa_status_t status;
690 u16 bfad_num;
691 u16 rsvd;
692 struct bfa_qos_vc_attr_s attr;
695 struct bfa_bsg_vf_stats_s {
696 bfa_status_t status;
697 u16 bfad_num;
698 u16 vf_id;
699 struct bfa_vf_stats_s stats;
702 struct bfa_bsg_vf_reset_stats_s {
703 bfa_status_t status;
704 u16 bfad_num;
705 u16 vf_id;
708 struct bfa_bsg_fcpim_lunmask_query_s {
709 bfa_status_t status;
710 u16 bfad_num;
711 struct bfa_lunmask_cfg_s lun_mask;
714 struct bfa_bsg_fcpim_lunmask_s {
715 bfa_status_t status;
716 u16 bfad_num;
717 u16 vf_id;
718 wwn_t pwwn;
719 wwn_t rpwwn;
720 struct scsi_lun lun;
723 struct bfa_bsg_fcpt_s {
724 bfa_status_t status;
725 u16 vf_id;
726 wwn_t lpwwn;
727 wwn_t dpwwn;
728 u32 tsecs;
729 int cts;
730 enum fc_cos cos;
731 struct fchs_s fchs;
733 #define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
735 struct bfa_bsg_data {
736 int payload_len;
737 void *payload;
740 #define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz) \
741 (((__payload_len) != ((__hdrsz) + (__bufsz))) ? \
742 BFA_STATUS_FAILED : BFA_STATUS_OK)
744 #endif /* BFAD_BSG_H */