aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/bfa')
-rw-r--r--drivers/scsi/bfa/bfa.h2
-rw-r--r--drivers/scsi/bfa/bfa_core.c12
-rw-r--r--drivers/scsi/bfa/bfa_fc.h588
-rw-r--r--drivers/scsi/bfa/bfa_fcpim.c2
-rw-r--r--drivers/scsi/bfa/bfa_ioc.c38
-rw-r--r--drivers/scsi/bfa/bfa_ioc.h9
-rw-r--r--drivers/scsi/bfa/bfa_ioc_cb.c9
-rw-r--r--drivers/scsi/bfa/bfa_ioc_ct.c6
-rw-r--r--drivers/scsi/bfa/bfa_svc.c6
9 files changed, 158 insertions, 514 deletions
diff --git a/drivers/scsi/bfa/bfa.h b/drivers/scsi/bfa/bfa.h
index 56a227b023ae..7be6b5a8114b 100644
--- a/drivers/scsi/bfa/bfa.h
+++ b/drivers/scsi/bfa/bfa.h
@@ -334,8 +334,6 @@ void bfa_hwct_msix_get_rme_range(struct bfa_s *bfa, u32 *start,
334void bfa_iocfc_get_bootwwns(struct bfa_s *bfa, u8 *nwwns, wwn_t *wwns); 334void bfa_iocfc_get_bootwwns(struct bfa_s *bfa, u8 *nwwns, wwn_t *wwns);
335wwn_t bfa_iocfc_get_pwwn(struct bfa_s *bfa); 335wwn_t bfa_iocfc_get_pwwn(struct bfa_s *bfa);
336wwn_t bfa_iocfc_get_nwwn(struct bfa_s *bfa); 336wwn_t bfa_iocfc_get_nwwn(struct bfa_s *bfa);
337void bfa_iocfc_get_pbc_boot_cfg(struct bfa_s *bfa,
338 struct bfa_boot_pbc_s *pbcfg);
339int bfa_iocfc_get_pbc_vports(struct bfa_s *bfa, 337int bfa_iocfc_get_pbc_vports(struct bfa_s *bfa,
340 struct bfi_pbc_vport_s *pbc_vport); 338 struct bfi_pbc_vport_s *pbc_vport);
341 339
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c
index d6c7e05ae4ce..1cd5c8b0618d 100644
--- a/drivers/scsi/bfa/bfa_core.c
+++ b/drivers/scsi/bfa/bfa_core.c
@@ -998,18 +998,6 @@ bfa_iocfc_get_bootwwns(struct bfa_s *bfa, u8 *nwwns, wwn_t *wwns)
998 memcpy(wwns, cfgrsp->bootwwns.wwn, sizeof(cfgrsp->bootwwns.wwn)); 998 memcpy(wwns, cfgrsp->bootwwns.wwn, sizeof(cfgrsp->bootwwns.wwn));
999} 999}
1000 1000
1001void
1002bfa_iocfc_get_pbc_boot_cfg(struct bfa_s *bfa, struct bfa_boot_pbc_s *pbcfg)
1003{
1004 struct bfa_iocfc_s *iocfc = &bfa->iocfc;
1005 struct bfi_iocfc_cfgrsp_s *cfgrsp = iocfc->cfgrsp;
1006
1007 pbcfg->enable = cfgrsp->pbc_cfg.boot_enabled;
1008 pbcfg->nbluns = cfgrsp->pbc_cfg.nbluns;
1009 pbcfg->speed = cfgrsp->pbc_cfg.port_speed;
1010 memcpy(pbcfg->pblun, cfgrsp->pbc_cfg.blun, sizeof(pbcfg->pblun));
1011}
1012
1013int 1001int
1014bfa_iocfc_get_pbc_vports(struct bfa_s *bfa, struct bfi_pbc_vport_s *pbc_vport) 1002bfa_iocfc_get_pbc_vports(struct bfa_s *bfa, struct bfi_pbc_vport_s *pbc_vport)
1015{ 1003{
diff --git a/drivers/scsi/bfa/bfa_fc.h b/drivers/scsi/bfa/bfa_fc.h
index 0d04ba9574f9..8e764fae8dc9 100644
--- a/drivers/scsi/bfa/bfa_fc.h
+++ b/drivers/scsi/bfa/bfa_fc.h
@@ -24,7 +24,6 @@ typedef u64 wwn_t;
24 24
25#define WWN_NULL (0) 25#define WWN_NULL (0)
26#define FC_SYMNAME_MAX 256 /* max name server symbolic name size */ 26#define FC_SYMNAME_MAX 256 /* max name server symbolic name size */
27#define FC_ALPA_MAX 128
28 27
29#pragma pack(1) 28#pragma pack(1)
30 29
@@ -39,7 +38,6 @@ struct mac_s { u8 mac[MAC_ADDRLEN]; };
39struct scsi_cdb_s { 38struct scsi_cdb_s {
40 u8 scsi_cdb[SCSI_MAX_CDBLEN]; 39 u8 scsi_cdb[SCSI_MAX_CDBLEN];
41}; 40};
42#define scsi_cdb_t struct scsi_cdb_s
43 41
44/* ------------------------------------------------------------ 42/* ------------------------------------------------------------
45 * SCSI status byte values 43 * SCSI status byte values
@@ -74,34 +72,19 @@ struct fchs_s {
74 u32 cs_ctl:8; /* class specific control */ 72 u32 cs_ctl:8; /* class specific control */
75 u32 s_id:24; /* source identifier */ 73 u32 s_id:24; /* source identifier */
76 74
77 u32 type:8; /* data structure type */ 75 u32 type:8; /* data structure type */
78 u32 f_ctl:24; /* initial frame control */ 76 u32 f_ctl:24; /* initial frame control */
79 77
80 u8 seq_id; /* sequence identifier */ 78 u8 seq_id; /* sequence identifier */
81 u8 df_ctl; /* data field control */ 79 u8 df_ctl; /* data field control */
82 u16 seq_cnt; /* sequence count */ 80 u16 seq_cnt; /* sequence count */
83 81
84 __be16 ox_id; /* originator exchange ID */ 82 __be16 ox_id; /* originator exchange ID */
85 u16 rx_id; /* responder exchange ID */ 83 u16 rx_id; /* responder exchange ID */
86 84
87 u32 ro; /* relative offset */ 85 u32 ro; /* relative offset */
88}; 86};
89 87
90#define FC_SOF_LEN 4
91#define FC_EOF_LEN 4
92#define FC_CRC_LEN 4
93
94/*
95 * Fibre Channel BB_E Header Structure
96 */
97struct fcbbehs_s {
98 u16 ver_rsvd;
99 u32 rsvd[2];
100 u32 rsvd__sof;
101};
102
103#define FC_SEQ_ID_MAX 256
104
105/* 88/*
106 * routing bit definitions 89 * routing bit definitions
107 */ 90 */
@@ -148,22 +131,6 @@ enum {
148}; 131};
149 132
150/* 133/*
151 * information category for Link Control
152 */
153enum {
154 FC_CAT_ACK_1 = 0x00,
155 FC_CAT_ACK_0_N = 0x01,
156 FC_CAT_P_RJT = 0x02,
157 FC_CAT_F_RJT = 0x03,
158 FC_CAT_P_BSY = 0x04,
159 FC_CAT_F_BSY_DATA = 0x05,
160 FC_CAT_F_BSY_LINK_CTL = 0x06,
161 FC_CAT_F_LCR = 0x07,
162 FC_CAT_NTY = 0x08,
163 FC_CAT_END = 0x09,
164};
165
166/*
167 * Type Field Definitions. FC-PH Section 18.5 pg. 165 134 * Type Field Definitions. FC-PH Section 18.5 pg. 165
168 */ 135 */
169enum { 136enum {
@@ -181,10 +148,6 @@ enum {
181 FC_TYPE_MAX = 256, /* 256 FC-4 types */ 148 FC_TYPE_MAX = 256, /* 256 FC-4 types */
182}; 149};
183 150
184struct fc_fc4types_s {
185 u8 bits[FC_TYPE_MAX / 8];
186};
187
188/* 151/*
189 * Frame Control Definitions. FC-PH Table-45. pg. 168 152 * Frame Control Definitions. FC-PH Table-45. pg. 168
190 */ 153 */
@@ -287,7 +250,6 @@ enum {
287 FC_ELS_AUTH = 0x90, /* Authentication. Ref FC-SP */ 250 FC_ELS_AUTH = 0x90, /* Authentication. Ref FC-SP */
288 FC_ELS_RFCN = 0x97, /* Request Fabric Change Notification. Ref 251 FC_ELS_RFCN = 0x97, /* Request Fabric Change Notification. Ref
289 *FC-SP */ 252 *FC-SP */
290
291}; 253};
292 254
293/* 255/*
@@ -313,12 +275,12 @@ enum {
313 * FC-PH-x. Figure-76. pg. 308. 275 * FC-PH-x. Figure-76. pg. 308.
314 */ 276 */
315struct fc_plogi_csp_s { 277struct fc_plogi_csp_s {
316 u8 verhi; /* FC-PH high version */ 278 u8 verhi; /* FC-PH high version */
317 u8 verlo; /* FC-PH low version */ 279 u8 verlo; /* FC-PH low version */
318 __be16 bbcred; /* BB_Credit */ 280 __be16 bbcred; /* BB_Credit */
319 281
320#ifdef __BIG_ENDIAN 282#ifdef __BIG_ENDIAN
321 u8 ciro:1, /* continuously increasing RO */ 283 u8 ciro:1, /* continuously increasing RO */
322 rro:1, /* random relative offset */ 284 rro:1, /* random relative offset */
323 npiv_supp:1, /* NPIV supported */ 285 npiv_supp:1, /* NPIV supported */
324 port_type:1, /* N_Port/F_port */ 286 port_type:1, /* N_Port/F_port */
@@ -327,7 +289,7 @@ struct fc_plogi_csp_s {
327 vvl_info:1, /* VVL Info included */ 289 vvl_info:1, /* VVL Info included */
328 reserved1:1; 290 reserved1:1;
329 291
330 u8 hg_supp:1, 292 u8 hg_supp:1,
331 query_dbc:1, 293 query_dbc:1,
332 security:1, 294 security:1,
333 sync_cap:1, 295 sync_cap:1,
@@ -336,7 +298,7 @@ struct fc_plogi_csp_s {
336 cisc:1, /* continuously increasing seq count */ 298 cisc:1, /* continuously increasing seq count */
337 payload:1; 299 payload:1;
338#else 300#else
339 u8 reserved2:2, 301 u8 reserved2:2,
340 resolution:1, /* ms/ns ED_TOV resolution */ 302 resolution:1, /* ms/ns ED_TOV resolution */
341 altbbcred:1, /* alternate BB_Credit */ 303 altbbcred:1, /* alternate BB_Credit */
342 port_type:1, /* N_Port/F_port */ 304 port_type:1, /* N_Port/F_port */
@@ -344,7 +306,7 @@ struct fc_plogi_csp_s {
344 rro:1, /* random relative offset */ 306 rro:1, /* random relative offset */
345 ciro:1; /* continuously increasing RO */ 307 ciro:1; /* continuously increasing RO */
346 308
347 u8 payload:1, 309 u8 payload:1,
348 cisc:1, /* continuously increasing seq count */ 310 cisc:1, /* continuously increasing seq count */
349 dh_dup_supp:1, 311 dh_dup_supp:1,
350 r_t_tov:1, 312 r_t_tov:1,
@@ -353,13 +315,10 @@ struct fc_plogi_csp_s {
353 query_dbc:1, 315 query_dbc:1,
354 hg_supp:1; 316 hg_supp:1;
355#endif 317#endif
356 318 __be16 rxsz; /* recieve data_field size */
357 __be16 rxsz; /* recieve data_field size */ 319 __be16 conseq;
358 320 __be16 ro_bitmap;
359 __be16 conseq; 321 __be32 e_d_tov;
360 __be16 ro_bitmap;
361
362 __be32 e_d_tov;
363}; 322};
364 323
365/* 324/*
@@ -370,9 +329,8 @@ struct fc_plogi_clp_s {
370#ifdef __BIG_ENDIAN 329#ifdef __BIG_ENDIAN
371 u32 class_valid:1; 330 u32 class_valid:1;
372 u32 intermix:1; /* class intermix supported if set =1. 331 u32 intermix:1; /* class intermix supported if set =1.
373 * valid only for class1. Reserved for 332 * valid only for class1. Reserved for
374 * class2 & class3 333 * class2 & class3 */
375 */
376 u32 reserved1:2; 334 u32 reserved1:2;
377 u32 sequential:1; 335 u32 sequential:1;
378 u32 reserved2:3; 336 u32 reserved2:3;
@@ -381,12 +339,10 @@ struct fc_plogi_clp_s {
381 u32 sequential:1; 339 u32 sequential:1;
382 u32 reserved1:2; 340 u32 reserved1:2;
383 u32 intermix:1; /* class intermix supported if set =1. 341 u32 intermix:1; /* class intermix supported if set =1.
384 * valid only for class1. Reserved for 342 * valid only for class1. Reserved for
385 * class2 & class3 343 * class2 & class3 */
386 */
387 u32 class_valid:1; 344 u32 class_valid:1;
388#endif 345#endif
389
390 u32 reserved3:24; 346 u32 reserved3:24;
391 347
392 u32 reserved4:16; 348 u32 reserved4:16;
@@ -394,7 +350,7 @@ struct fc_plogi_clp_s {
394 350
395 u32 reserved5:8; 351 u32 reserved5:8;
396 u32 conseq:8; 352 u32 conseq:8;
397 u32 e2e_credit:16; /* end to end credit */ 353 u32 e2e_credit:16; /* end to end credit */
398 354
399 u32 reserved7:8; 355 u32 reserved7:8;
400 u32 ospx:8; 356 u32 ospx:8;
@@ -408,24 +364,24 @@ struct fc_plogi_clp_s {
408 * PLOGI els command and reply payload 364 * PLOGI els command and reply payload
409 */ 365 */
410struct fc_logi_s { 366struct fc_logi_s {
411 struct fc_els_cmd_s els_cmd; /* ELS command code */ 367 struct fc_els_cmd_s els_cmd; /* ELS command code */
412 struct fc_plogi_csp_s csp; /* common service params */ 368 struct fc_plogi_csp_s csp; /* common service params */
413 wwn_t port_name; 369 wwn_t port_name;
414 wwn_t node_name; 370 wwn_t node_name;
415 struct fc_plogi_clp_s class1; /* class 1 service parameters */ 371 struct fc_plogi_clp_s class1; /* class 1 service parameters */
416 struct fc_plogi_clp_s class2; /* class 2 service parameters */ 372 struct fc_plogi_clp_s class2; /* class 2 service parameters */
417 struct fc_plogi_clp_s class3; /* class 3 service parameters */ 373 struct fc_plogi_clp_s class3; /* class 3 service parameters */
418 struct fc_plogi_clp_s class4; /* class 4 service parameters */ 374 struct fc_plogi_clp_s class4; /* class 4 service parameters */
419 u8 vvl[16]; /* vendor version level */ 375 u8 vvl[16]; /* vendor version level */
420}; 376};
421 377
422/* 378/*
423 * LOGO els command payload 379 * LOGO els command payload
424 */ 380 */
425struct fc_logo_s { 381struct fc_logo_s {
426 struct fc_els_cmd_s els_cmd; /* ELS command code */ 382 struct fc_els_cmd_s els_cmd; /* ELS command code */
427 u32 res1:8; 383 u32 res1:8;
428 u32 nport_id:24; /* N_Port identifier of source */ 384 u32 nport_id:24; /* N_Port identifier of source */
429 wwn_t orig_port_name; /* Port name of the LOGO originator */ 385 wwn_t orig_port_name; /* Port name of the LOGO originator */
430}; 386};
431 387
@@ -434,12 +390,12 @@ struct fc_logo_s {
434 */ 390 */
435struct fc_adisc_s { 391struct fc_adisc_s {
436 struct fc_els_cmd_s els_cmd; /* ELS command code */ 392 struct fc_els_cmd_s els_cmd; /* ELS command code */
437 u32 res1:8; 393 u32 res1:8;
438 u32 orig_HA:24; /* originator hard address */ 394 u32 orig_HA:24; /* originator hard address */
439 wwn_t orig_port_name; /* originator port name */ 395 wwn_t orig_port_name; /* originator port name */
440 wwn_t orig_node_name; /* originator node name */ 396 wwn_t orig_node_name; /* originator node name */
441 u32 res2:8; 397 u32 res2:8;
442 u32 nport_id:24; /* originator NPortID */ 398 u32 nport_id:24; /* originator NPortID */
443}; 399};
444 400
445/* 401/*
@@ -465,7 +421,7 @@ struct fc_exch_status_blk_s {
465struct fc_res_s { 421struct fc_res_s {
466 struct fc_els_cmd_s els_cmd; /* ELS command code */ 422 struct fc_els_cmd_s els_cmd; /* ELS command code */
467 u32 res1:8; 423 u32 res1:8;
468 u32 nport_id:24; /* N_Port identifier of source */ 424 u32 nport_id:24; /* N_Port identifier of source */
469 u32 oxid:16; 425 u32 oxid:16;
470 u32 rxid:16; 426 u32 rxid:16;
471 u8 assoc_hdr[32]; 427 u8 assoc_hdr[32];
@@ -511,8 +467,8 @@ struct fc_rec_acc_s {
511 u32 orig_id:24; /* N_Port id of exchange originator */ 467 u32 orig_id:24; /* N_Port id of exchange originator */
512 u32 res2:8; 468 u32 res2:8;
513 u32 resp_id:24; /* N_Port id of exchange responder */ 469 u32 resp_id:24; /* N_Port id of exchange responder */
514 u32 count; /* data transfer count */ 470 u32 count; /* data transfer count */
515 u32 e_stat; /* exchange status */ 471 u32 e_stat; /* exchange status */
516}; 472};
517 473
518/* 474/*
@@ -611,17 +567,13 @@ struct fc_prlo_params_page_s {
611 u32 type:8; 567 u32 type:8;
612 u32 type_ext:8; 568 u32 type_ext:8;
613#ifdef __BIG_ENDIAN 569#ifdef __BIG_ENDIAN
614 u32 opa_valid:1; /* originator process associator 570 u32 opa_valid:1; /* originator process associator valid */
615 * valid
616 */
617 u32 rpa_valid:1; /* responder process associator valid */ 571 u32 rpa_valid:1; /* responder process associator valid */
618 u32 res1:14; 572 u32 res1:14;
619#else 573#else
620 u32 res1:14; 574 u32 res1:14;
621 u32 rpa_valid:1; /* responder process associator valid */ 575 u32 rpa_valid:1; /* responder process associator valid */
622 u32 opa_valid:1; /* originator process associator 576 u32 opa_valid:1; /* originator process associator valid */
623 * valid
624 */
625#endif 577#endif
626 u32 orig_process_assc; 578 u32 orig_process_assc;
627 u32 resp_process_assc; 579 u32 resp_process_assc;
@@ -647,17 +599,13 @@ struct fc_prlo_acc_params_page_s {
647 u32 type_ext:8; 599 u32 type_ext:8;
648 600
649#ifdef __BIG_ENDIAN 601#ifdef __BIG_ENDIAN
650 u32 opa_valid:1; /* originator process associator 602 u32 opa_valid:1; /* originator process associator valid */
651 * valid
652 */
653 u32 rpa_valid:1; /* responder process associator valid */ 603 u32 rpa_valid:1; /* responder process associator valid */
654 u32 res1:14; 604 u32 res1:14;
655#else 605#else
656 u32 res1:14; 606 u32 res1:14;
657 u32 rpa_valid:1; /* responder process associator valid */ 607 u32 rpa_valid:1; /* responder process associator valid */
658 u32 opa_valid:1; /* originator process associator 608 u32 opa_valid:1; /* originator process associator valid */
659 * valid
660 */
661#endif 609#endif
662 u32 orig_process_assc; 610 u32 orig_process_assc;
663 u32 resp_process_assc; 611 u32 resp_process_assc;
@@ -714,9 +662,9 @@ enum {
714 * LS_RJT els reply payload 662 * LS_RJT els reply payload
715 */ 663 */
716struct fc_ls_rjt_s { 664struct fc_ls_rjt_s {
717 struct fc_els_cmd_s els_cmd; /* ELS command code */ 665 struct fc_els_cmd_s els_cmd; /* ELS command code */
718 u32 res1:8; 666 u32 res1:8;
719 u32 reason_code:8; /* Reason code for reject */ 667 u32 reason_code:8; /* Reason code for reject */
720 u32 reason_code_expl:8; /* Reason code explanation */ 668 u32 reason_code_expl:8; /* Reason code explanation */
721 u32 vendor_unique:8; /* Vendor specific */ 669 u32 vendor_unique:8; /* Vendor specific */
722}; 670};
@@ -778,12 +726,12 @@ struct fc_rrq_s {
778 */ 726 */
779struct fc_ba_acc_s { 727struct fc_ba_acc_s {
780 u32 seq_id_valid:8; /* set to 0x00 for Abort Exchange */ 728 u32 seq_id_valid:8; /* set to 0x00 for Abort Exchange */
781 u32 seq_id:8; /* invalid for Abort Exchange */ 729 u32 seq_id:8; /* invalid for Abort Exchange */
782 u32 res2:16; 730 u32 res2:16;
783 u32 ox_id:16; /* OX_ID from ABTS frame */ 731 u32 ox_id:16; /* OX_ID from ABTS frame */
784 u32 rx_id:16; /* RX_ID from ABTS frame */ 732 u32 rx_id:16; /* RX_ID from ABTS frame */
785 u32 low_seq_cnt:16; /* set to 0x0000 for Abort Exchange */ 733 u32 low_seq_cnt:16; /* set to 0x0000 for Abort Exchange */
786 u32 high_seq_cnt:16;/* set to 0xFFFF for Abort Exchange */ 734 u32 high_seq_cnt:16; /* set to 0xFFFF for Abort Exchange */
787}; 735};
788 736
789/* 737/*
@@ -793,15 +741,15 @@ struct fc_ba_rjt_s {
793 u32 res1:8; /* Reserved */ 741 u32 res1:8; /* Reserved */
794 u32 reason_code:8; /* reason code for reject */ 742 u32 reason_code:8; /* reason code for reject */
795 u32 reason_expl:8; /* reason code explanation */ 743 u32 reason_expl:8; /* reason code explanation */
796 u32 vendor_unique:8;/* vendor unique reason code,set to 0 */ 744 u32 vendor_unique:8; /* vendor unique reason code,set to 0 */
797}; 745};
798 746
799/* 747/*
800 * TPRLO logout parameter page 748 * TPRLO logout parameter page
801 */ 749 */
802struct fc_tprlo_params_page_s { 750struct fc_tprlo_params_page_s {
803u32 type:8; 751 u32 type:8;
804u32 type_ext:8; 752 u32 type_ext:8;
805 753
806#ifdef __BIG_ENDIAN 754#ifdef __BIG_ENDIAN
807 u32 opa_valid:1; 755 u32 opa_valid:1;
@@ -863,16 +811,16 @@ enum fc_rscn_format {
863}; 811};
864 812
865struct fc_rscn_event_s { 813struct fc_rscn_event_s {
866 u32 format:2; 814 u32 format:2;
867 u32 qualifier:4; 815 u32 qualifier:4;
868 u32 resvd:2; 816 u32 resvd:2;
869 u32 portid:24; 817 u32 portid:24;
870}; 818};
871 819
872struct fc_rscn_pl_s { 820struct fc_rscn_pl_s {
873 u8 command; 821 u8 command;
874 u8 pagelen; 822 u8 pagelen;
875 __be16 payldlen; 823 __be16 payldlen;
876 struct fc_rscn_event_s event[1]; 824 struct fc_rscn_event_s event[1];
877}; 825};
878 826
@@ -886,7 +834,6 @@ struct fc_echo_s {
886/* 834/*
887 * RNID els command 835 * RNID els command
888 */ 836 */
889
890#define RNID_NODEID_DATA_FORMAT_COMMON 0x00 837#define RNID_NODEID_DATA_FORMAT_COMMON 0x00
891#define RNID_NODEID_DATA_FORMAT_FCP3 0x08 838#define RNID_NODEID_DATA_FORMAT_FCP3 0x08
892#define RNID_NODEID_DATA_FORMAT_DISCOVERY 0xDF 839#define RNID_NODEID_DATA_FORMAT_DISCOVERY 0xDF
@@ -919,15 +866,15 @@ struct fc_rnid_cmd_s {
919 */ 866 */
920 867
921struct fc_rnid_common_id_data_s { 868struct fc_rnid_common_id_data_s {
922 wwn_t port_name; 869 wwn_t port_name;
923 wwn_t node_name; 870 wwn_t node_name;
924}; 871};
925 872
926struct fc_rnid_general_topology_data_s { 873struct fc_rnid_general_topology_data_s {
927 u32 vendor_unique[4]; 874 u32 vendor_unique[4];
928 __be32 asso_type; 875 __be32 asso_type;
929 u32 phy_port_num; 876 u32 phy_port_num;
930 __be32 num_attached_nodes; 877 __be32 num_attached_nodes;
931 u32 node_mgmt:8; 878 u32 node_mgmt:8;
932 u32 ip_version:8; 879 u32 ip_version:8;
933 u32 udp_tcp_port_num:16; 880 u32 udp_tcp_port_num:16;
@@ -979,59 +926,17 @@ enum fc_rpsc_op_speed {
979 RPSC_OP_SPEED_8G = 0x0800, 926 RPSC_OP_SPEED_8G = 0x0800,
980 RPSC_OP_SPEED_16G = 0x0400, 927 RPSC_OP_SPEED_16G = 0x0400,
981 928
982 RPSC_OP_SPEED_NOT_EST = 0x0001, /*! speed not established */ 929 RPSC_OP_SPEED_NOT_EST = 0x0001, /* speed not established */
983}; 930};
984 931
985struct fc_rpsc_speed_info_s { 932struct fc_rpsc_speed_info_s {
986 __be16 port_speed_cap; /*! see enum fc_rpsc_speed_cap */ 933 __be16 port_speed_cap; /* see enum fc_rpsc_speed_cap */
987 __be16 port_op_speed; /*! see enum fc_rpsc_op_speed */ 934 __be16 port_op_speed; /* see enum fc_rpsc_op_speed */
988};
989
990enum link_e2e_beacon_subcmd {
991 LINK_E2E_BEACON_ON = 1,
992 LINK_E2E_BEACON_OFF = 2
993};
994
995enum beacon_type {
996 BEACON_TYPE_NORMAL = 1, /*! Normal Beaconing. Green */
997 BEACON_TYPE_WARN = 2, /*! Warning Beaconing. Yellow/Amber */
998 BEACON_TYPE_CRITICAL = 3 /*! Critical Beaconing. Red */
999};
1000
1001struct link_e2e_beacon_param_s {
1002 u8 beacon_type; /* Beacon Type. See enum beacon_type */
1003 u8 beacon_frequency;
1004 /* Beacon frequency. Number of blinks
1005 * per 10 seconds
1006 */
1007 u16 beacon_duration;/* Beacon duration (in Seconds). The
1008 * command operation should be
1009 * terminated at the end of this
1010 * timeout value.
1011 *
1012 * Ignored if diag_sub_cmd is
1013 * LINK_E2E_BEACON_OFF.
1014 *
1015 * If 0, beaconing will continue till a
1016 * BEACON OFF request is received
1017 */
1018};
1019
1020/*
1021 * Link E2E beacon request/good response format.
1022 * For LS_RJTs use struct fc_ls_rjt_s
1023 */
1024struct link_e2e_beacon_req_s {
1025 u32 ls_code; /*! FC_ELS_E2E_LBEACON in requests *
1026 *or FC_ELS_ACC in good replies */
1027 u32 ls_sub_cmd; /*! See enum link_e2e_beacon_subcmd */
1028 struct link_e2e_beacon_param_s beacon_parm;
1029}; 935};
1030 936
1031/* 937/*
1032 * If RPSC request is sent to the Domain Controller, the request is for 938 * If RPSC request is sent to the Domain Controller, the request is for
1033 * all the ports within that domain (TODO - I don't think FOS implements 939 * all the ports within that domain.
1034 * this...).
1035 */ 940 */
1036struct fc_rpsc_cmd_s { 941struct fc_rpsc_cmd_s {
1037 struct fc_els_cmd_s els_cmd; 942 struct fc_els_cmd_s els_cmd;
@@ -1057,7 +962,7 @@ struct fc_rpsc2_cmd_s {
1057 struct fc_els_cmd_s els_cmd; 962 struct fc_els_cmd_s els_cmd;
1058 __be32 token; 963 __be32 token;
1059 u16 resvd; 964 u16 resvd;
1060 __be16 num_pids; /* Number of pids in the request */ 965 __be16 num_pids; /* Number of pids in the request */
1061 struct { 966 struct {
1062 u32 rsvd1:8; 967 u32 rsvd1:8;
1063 u32 pid:24; /* port identifier */ 968 u32 pid:24; /* port identifier */
@@ -1071,16 +976,17 @@ enum fc_rpsc2_port_type {
1071 RPSC2_PORT_TYPE_NPIV_PORT = 0x5f, 976 RPSC2_PORT_TYPE_NPIV_PORT = 0x5f,
1072 RPSC2_PORT_TYPE_NPORT_TRUNK = 0x6f, 977 RPSC2_PORT_TYPE_NPORT_TRUNK = 0x6f,
1073}; 978};
979
1074/* 980/*
1075 * RPSC2 portInfo entry structure 981 * RPSC2 portInfo entry structure
1076 */ 982 */
1077struct fc_rpsc2_port_info_s { 983struct fc_rpsc2_port_info_s {
1078 __be32 pid; /* PID */ 984 __be32 pid; /* PID */
1079 u16 resvd1; 985 u16 resvd1;
1080 __be16 index; /* port number / index */ 986 __be16 index; /* port number / index */
1081 u8 resvd2; 987 u8 resvd2;
1082 u8 type; /* port type N/NL/... */ 988 u8 type; /* port type N/NL/... */
1083 __be16 speed; /* port Operating Speed */ 989 __be16 speed; /* port Operating Speed */
1084}; 990};
1085 991
1086/* 992/*
@@ -1089,8 +995,8 @@ struct fc_rpsc2_port_info_s {
1089struct fc_rpsc2_acc_s { 995struct fc_rpsc2_acc_s {
1090 u8 els_cmd; 996 u8 els_cmd;
1091 u8 resvd; 997 u8 resvd;
1092 __be16 num_pids; /* Number of pids in the request */ 998 __be16 num_pids; /* Number of pids in the request */
1093 struct fc_rpsc2_port_info_s port_info[1]; /* port information */ 999 struct fc_rpsc2_port_info_s port_info[1]; /* port information */
1094}; 1000};
1095 1001
1096/* 1002/*
@@ -1109,18 +1015,14 @@ struct fc_symname_s {
1109 u8 symname[FC_SYMNAME_MAX]; 1015 u8 symname[FC_SYMNAME_MAX];
1110}; 1016};
1111 1017
1112struct fc_alpabm_s {
1113 u8 alpa_bm[FC_ALPA_MAX / 8];
1114};
1115
1116/* 1018/*
1117 * protocol default timeout values 1019 * protocol default timeout values
1118 */ 1020 */
1119#define FC_ED_TOV 2 1021#define FC_ED_TOV 2
1120#define FC_REC_TOV (FC_ED_TOV + 1) 1022#define FC_REC_TOV (FC_ED_TOV + 1)
1121#define FC_RA_TOV 10 1023#define FC_RA_TOV 10
1122#define FC_ELS_TOV (2 * FC_RA_TOV) 1024#define FC_ELS_TOV (2 * FC_RA_TOV)
1123#define FC_FCCT_TOV (3 * FC_RA_TOV) 1025#define FC_FCCT_TOV (3 * FC_RA_TOV)
1124 1026
1125/* 1027/*
1126 * virtual fabric related defines 1028 * virtual fabric related defines
@@ -1156,49 +1058,33 @@ enum {
1156}; 1058};
1157 1059
1158/* 1060/*
1159 * SRR FC-4 LS payload
1160 */
1161struct fc_srr_s {
1162 u32 ls_cmd;
1163 u32 ox_id:16; /* ox-id */
1164 u32 rx_id:16; /* rx-id */
1165 u32 ro; /* relative offset */
1166 u32 r_ctl:8; /* R_CTL for I.U. */
1167 u32 res:24;
1168};
1169
1170
1171/*
1172 * FCP_CMND definitions 1061 * FCP_CMND definitions
1173 */ 1062 */
1174#define FCP_CMND_CDB_LEN 16 1063#define FCP_CMND_CDB_LEN 16
1175#define FCP_CMND_LUN_LEN 8 1064#define FCP_CMND_LUN_LEN 8
1176 1065
1177struct fcp_cmnd_s { 1066struct fcp_cmnd_s {
1178 struct scsi_lun lun; /* 64-bit LU number */ 1067 struct scsi_lun lun; /* 64-bit LU number */
1179 u8 crn; /* command reference number */ 1068 u8 crn; /* command reference number */
1180#ifdef __BIG_ENDIAN 1069#ifdef __BIG_ENDIAN
1181 u8 resvd:1, 1070 u8 resvd:1,
1182 priority:4, /* FCP-3: SAM-3 priority */ 1071 priority:4, /* FCP-3: SAM-3 priority */
1183 taskattr:3; /* scsi task attribute */ 1072 taskattr:3; /* scsi task attribute */
1184#else 1073#else
1185 u8 taskattr:3, /* scsi task attribute */ 1074 u8 taskattr:3, /* scsi task attribute */
1186 priority:4, /* FCP-3: SAM-3 priority */ 1075 priority:4, /* FCP-3: SAM-3 priority */
1187 resvd:1; 1076 resvd:1;
1188#endif 1077#endif
1189 u8 tm_flags; /* task management flags */ 1078 u8 tm_flags; /* task management flags */
1190#ifdef __BIG_ENDIAN 1079#ifdef __BIG_ENDIAN
1191 u8 addl_cdb_len:6, /* additional CDB length words */ 1080 u8 addl_cdb_len:6, /* additional CDB length words */
1192 iodir:2; /* read/write FCP_DATA IUs */ 1081 iodir:2; /* read/write FCP_DATA IUs */
1193#else 1082#else
1194 u8 iodir:2, /* read/write FCP_DATA IUs */ 1083 u8 iodir:2, /* read/write FCP_DATA IUs */
1195 addl_cdb_len:6; /* additional CDB length */ 1084 addl_cdb_len:6; /* additional CDB length */
1196#endif 1085#endif
1197 scsi_cdb_t cdb; 1086 struct scsi_cdb_s cdb;
1198 1087
1199 /*
1200 * !!! additional cdb bytes follows here!!!
1201 */
1202 __be32 fcp_dl; /* bytes to be transferred */ 1088 __be32 fcp_dl; /* bytes to be transferred */
1203}; 1089};
1204 1090
@@ -1209,21 +1095,10 @@ struct fcp_cmnd_s {
1209 * struct fcp_cmnd_s .iodir field values 1095 * struct fcp_cmnd_s .iodir field values
1210 */ 1096 */
1211enum fcp_iodir { 1097enum fcp_iodir {
1212 FCP_IODIR_NONE = 0, 1098 FCP_IODIR_NONE = 0,
1213 FCP_IODIR_WRITE = 1, 1099 FCP_IODIR_WRITE = 1,
1214 FCP_IODIR_READ = 2, 1100 FCP_IODIR_READ = 2,
1215 FCP_IODIR_RW = 3, 1101 FCP_IODIR_RW = 3,
1216};
1217
1218/*
1219 * Task attribute field
1220 */
1221enum {
1222 FCP_TASK_ATTR_SIMPLE = 0,
1223 FCP_TASK_ATTR_HOQ = 1,
1224 FCP_TASK_ATTR_ORDERED = 2,
1225 FCP_TASK_ATTR_ACA = 4,
1226 FCP_TASK_ATTR_UNTAGGED = 5, /* obsolete in FCP-3 */
1227}; 1102};
1228 1103
1229/* 1104/*
@@ -1238,58 +1113,40 @@ enum fcp_tm_cmnd {
1238}; 1113};
1239 1114
1240/* 1115/*
1241 * FCP_XFER_RDY IU defines
1242 */
1243struct fcp_xfer_rdy_s {
1244 u32 data_ro;
1245 u32 burst_len;
1246 u32 reserved;
1247};
1248
1249/*
1250 * FCP_RSP residue flags 1116 * FCP_RSP residue flags
1251 */ 1117 */
1252enum fcp_residue { 1118enum fcp_residue {
1253 FCP_NO_RESIDUE = 0, /* no residue */ 1119 FCP_NO_RESIDUE = 0, /* no residue */
1254 FCP_RESID_OVER = 1, /* more data left that was not sent */ 1120 FCP_RESID_OVER = 1, /* more data left that was not sent */
1255 FCP_RESID_UNDER = 2, /* less data than requested */ 1121 FCP_RESID_UNDER = 2, /* less data than requested */
1256};
1257
1258enum {
1259 FCP_RSPINFO_GOOD = 0,
1260 FCP_RSPINFO_DATALEN_MISMATCH = 1,
1261 FCP_RSPINFO_CMND_INVALID = 2,
1262 FCP_RSPINFO_ROLEN_MISMATCH = 3,
1263 FCP_RSPINFO_TM_NOT_SUPP = 4,
1264 FCP_RSPINFO_TM_FAILED = 5,
1265}; 1122};
1266 1123
1267struct fcp_rspinfo_s { 1124struct fcp_rspinfo_s {
1268 u32 res0:24; 1125 u32 res0:24;
1269 u32 rsp_code:8; /* response code (as above) */ 1126 u32 rsp_code:8; /* response code (as above) */
1270 u32 res1; 1127 u32 res1;
1271}; 1128};
1272 1129
1273struct fcp_resp_s { 1130struct fcp_resp_s {
1274 u32 reserved[2]; /* 2 words reserved */ 1131 u32 reserved[2]; /* 2 words reserved */
1275 u16 reserved2; 1132 u16 reserved2;
1276#ifdef __BIG_ENDIAN 1133#ifdef __BIG_ENDIAN
1277 u8 reserved3:3; 1134 u8 reserved3:3;
1278 u8 fcp_conf_req:1; /* FCP_CONF is requested */ 1135 u8 fcp_conf_req:1; /* FCP_CONF is requested */
1279 u8 resid_flags:2; /* underflow/overflow */ 1136 u8 resid_flags:2; /* underflow/overflow */
1280 u8 sns_len_valid:1;/* sense len is valid */ 1137 u8 sns_len_valid:1; /* sense len is valid */
1281 u8 rsp_len_valid:1;/* response len is valid */ 1138 u8 rsp_len_valid:1; /* response len is valid */
1282#else 1139#else
1283 u8 rsp_len_valid:1;/* response len is valid */ 1140 u8 rsp_len_valid:1; /* response len is valid */
1284 u8 sns_len_valid:1;/* sense len is valid */ 1141 u8 sns_len_valid:1; /* sense len is valid */
1285 u8 resid_flags:2; /* underflow/overflow */ 1142 u8 resid_flags:2; /* underflow/overflow */
1286 u8 fcp_conf_req:1; /* FCP_CONF is requested */ 1143 u8 fcp_conf_req:1; /* FCP_CONF is requested */
1287 u8 reserved3:3; 1144 u8 reserved3:3;
1288#endif 1145#endif
1289 u8 scsi_status; /* one byte SCSI status */ 1146 u8 scsi_status; /* one byte SCSI status */
1290 u32 residue; /* residual data bytes */ 1147 u32 residue; /* residual data bytes */
1291 u32 sns_len; /* length od sense info */ 1148 u32 sns_len; /* length od sense info */
1292 u32 rsp_len; /* length of response info */ 1149 u32 rsp_len; /* length of response info */
1293}; 1150};
1294 1151
1295#define fcp_snslen(__fcprsp) ((__fcprsp)->sns_len_valid ? \ 1152#define fcp_snslen(__fcprsp) ((__fcprsp)->sns_len_valid ? \
@@ -1299,12 +1156,6 @@ struct fcp_resp_s {
1299#define fcp_rspinfo(__fcprsp) ((struct fcp_rspinfo_s *)((__fcprsp) + 1)) 1156#define fcp_rspinfo(__fcprsp) ((struct fcp_rspinfo_s *)((__fcprsp) + 1))
1300#define fcp_snsinfo(__fcprsp) (((u8 *)fcp_rspinfo(__fcprsp)) + \ 1157#define fcp_snsinfo(__fcprsp) (((u8 *)fcp_rspinfo(__fcprsp)) + \
1301 fcp_rsplen(__fcprsp)) 1158 fcp_rsplen(__fcprsp))
1302
1303struct fcp_cmnd_fr_s {
1304 struct fchs_s fchs;
1305 struct fcp_cmnd_s fcp;
1306};
1307
1308/* 1159/*
1309 * CT 1160 * CT
1310 */ 1161 */
@@ -1378,7 +1229,7 @@ enum {
1378 CT_RSN_LOGICAL_BUSY = 0x05, 1229 CT_RSN_LOGICAL_BUSY = 0x05,
1379 CT_RSN_PROTO_ERR = 0x07, 1230 CT_RSN_PROTO_ERR = 0x07,
1380 CT_RSN_UNABLE_TO_PERF = 0x09, 1231 CT_RSN_UNABLE_TO_PERF = 0x09,
1381 CT_RSN_NOT_SUPP = 0x0B, 1232 CT_RSN_NOT_SUPP = 0x0B,
1382 CT_RSN_SERVER_NOT_AVBL = 0x0D, 1233 CT_RSN_SERVER_NOT_AVBL = 0x0D,
1383 CT_RSN_SESSION_COULD_NOT_BE_ESTBD = 0x0E, 1234 CT_RSN_SESSION_COULD_NOT_BE_ESTBD = 0x0E,
1384 CT_RSN_VENDOR_SPECIFIC = 0xFF, 1235 CT_RSN_VENDOR_SPECIFIC = 0xFF,
@@ -1418,10 +1269,10 @@ enum {
1418 * defintions for the explanation code for all servers 1269 * defintions for the explanation code for all servers
1419 */ 1270 */
1420enum { 1271enum {
1421 CT_EXP_AUTH_EXCEPTION = 0xF1, 1272 CT_EXP_AUTH_EXCEPTION = 0xF1,
1422 CT_EXP_DB_FULL = 0xF2, 1273 CT_EXP_DB_FULL = 0xF2,
1423 CT_EXP_DB_EMPTY = 0xF3, 1274 CT_EXP_DB_EMPTY = 0xF3,
1424 CT_EXP_PROCESSING_REQ = 0xF4, 1275 CT_EXP_PROCESSING_REQ = 0xF4,
1425 CT_EXP_UNABLE_TO_VERIFY_CONN = 0xF5, 1276 CT_EXP_UNABLE_TO_VERIFY_CONN = 0xF5,
1426 CT_EXP_DEVICES_NOT_IN_CMN_ZONE = 0xF6 1277 CT_EXP_DEVICES_NOT_IN_CMN_ZONE = 0xF6
1427}; 1278};
@@ -1445,7 +1296,7 @@ enum {
1445 GS_RFF_ID = 0x021F, /* Register FC4 Feature */ 1296 GS_RFF_ID = 0x021F, /* Register FC4 Feature */
1446}; 1297};
1447 1298
1448struct fcgs_id_req_s{ 1299struct fcgs_id_req_s {
1449 u32 rsvd:8; 1300 u32 rsvd:8;
1450 u32 dap:24; /* port identifier */ 1301 u32 dap:24; /* port identifier */
1451}; 1302};
@@ -1459,7 +1310,7 @@ struct fcgs_gidpn_req_s {
1459 1310
1460struct fcgs_gidpn_resp_s { 1311struct fcgs_gidpn_resp_s {
1461 u32 rsvd:8; 1312 u32 rsvd:8;
1462 u32 dap:24; /* port identifier */ 1313 u32 dap:24; /* port identifier */
1463}; 1314};
1464 1315
1465/* 1316/*
@@ -1474,16 +1325,15 @@ struct fcgs_rftid_req_s {
1474/* 1325/*
1475 * RFF_ID : Register FC4 features. 1326 * RFF_ID : Register FC4 features.
1476 */ 1327 */
1477
1478#define FC_GS_FCP_FC4_FEATURE_INITIATOR 0x02 1328#define FC_GS_FCP_FC4_FEATURE_INITIATOR 0x02
1479#define FC_GS_FCP_FC4_FEATURE_TARGET 0x01 1329#define FC_GS_FCP_FC4_FEATURE_TARGET 0x01
1480 1330
1481struct fcgs_rffid_req_s { 1331struct fcgs_rffid_req_s {
1482 u32 rsvd:8; 1332 u32 rsvd:8;
1483 u32 dap:24; /* port identifier */ 1333 u32 dap:24; /* port identifier */
1484 u32 rsvd1:16; 1334 u32 rsvd1:16;
1485 u32 fc4ftr_bits:8; /* fc4 feature bits */ 1335 u32 fc4ftr_bits:8; /* fc4 feature bits */
1486 u32 fc4_type:8; /* corresponding FC4 Type */ 1336 u32 fc4_type:8; /* corresponding FC4 Type */
1487}; 1337};
1488 1338
1489/* 1339/*
@@ -1494,16 +1344,16 @@ struct fcgs_gidft_req_s {
1494 u8 domain_id; /* domain, 0 - all fabric */ 1344 u8 domain_id; /* domain, 0 - all fabric */
1495 u8 area_id; /* area, 0 - whole domain */ 1345 u8 area_id; /* area, 0 - whole domain */
1496 u8 fc4_type; /* FC_TYPE_FCP for SCSI devices */ 1346 u8 fc4_type; /* FC_TYPE_FCP for SCSI devices */
1497}; /* GID_FT Request */ 1347};
1498 1348
1499/* 1349/*
1500 * GID_FT Response 1350 * GID_FT Response
1501 */ 1351 */
1502struct fcgs_gidft_resp_s { 1352struct fcgs_gidft_resp_s {
1503 u8 last:1; /* last port identifier flag */ 1353 u8 last:1; /* last port identifier flag */
1504 u8 reserved:7; 1354 u8 reserved:7;
1505 u32 pid:24; /* port identifier */ 1355 u32 pid:24; /* port identifier */
1506}; /* GID_FT Response */ 1356};
1507 1357
1508/* 1358/*
1509 * RSPN_ID 1359 * RSPN_ID
@@ -1511,8 +1361,8 @@ struct fcgs_gidft_resp_s {
1511struct fcgs_rspnid_req_s { 1361struct fcgs_rspnid_req_s {
1512 u32 rsvd:8; 1362 u32 rsvd:8;
1513 u32 dap:24; /* port identifier */ 1363 u32 dap:24; /* port identifier */
1514 u8 spn_len; /* symbolic port name length */ 1364 u8 spn_len; /* symbolic port name length */
1515 u8 spn[256]; /* symbolic port name */ 1365 u8 spn[256]; /* symbolic port name */
1516}; 1366};
1517 1367
1518/* 1368/*
@@ -1521,7 +1371,7 @@ struct fcgs_rspnid_req_s {
1521struct fcgs_rpnid_req_s { 1371struct fcgs_rpnid_req_s {
1522 u32 rsvd:8; 1372 u32 rsvd:8;
1523 u32 port_id:24; 1373 u32 port_id:24;
1524 wwn_t port_name; 1374 wwn_t port_name;
1525}; 1375};
1526 1376
1527/* 1377/*
@@ -1530,7 +1380,7 @@ struct fcgs_rpnid_req_s {
1530struct fcgs_rnnid_req_s { 1380struct fcgs_rnnid_req_s {
1531 u32 rsvd:8; 1381 u32 rsvd:8;
1532 u32 port_id:24; 1382 u32 port_id:24;
1533 wwn_t node_name; 1383 wwn_t node_name;
1534}; 1384};
1535 1385
1536/* 1386/*
@@ -1564,8 +1414,8 @@ struct fcgs_ganxt_req_s {
1564 * GA_NXT Response 1414 * GA_NXT Response
1565 */ 1415 */
1566struct fcgs_ganxt_rsp_s { 1416struct fcgs_ganxt_rsp_s {
1567 u32 port_type:8; /* Port Type */ 1417 u32 port_type:8; /* Port Type */
1568 u32 port_id:24; /* Port Identifier */ 1418 u32 port_id:24; /* Port Identifier */
1569 wwn_t port_name; /* Port Name */ 1419 wwn_t port_name; /* Port Name */
1570 u8 spn_len; /* Length of Symbolic Port Name */ 1420 u8 spn_len; /* Length of Symbolic Port Name */
1571 char spn[255]; /* Symbolic Port Name */ 1421 char spn[255]; /* Symbolic Port Name */
@@ -1574,19 +1424,14 @@ struct fcgs_ganxt_rsp_s {
1574 char snn[255]; /* Symbolic Node Name */ 1424 char snn[255]; /* Symbolic Node Name */
1575 u8 ipa[8]; /* Initial Process Associator */ 1425 u8 ipa[8]; /* Initial Process Associator */
1576 u8 ip[16]; /* IP Address */ 1426 u8 ip[16]; /* IP Address */
1577 u32 cos; /* Class of Service */ 1427 u32 cos; /* Class of Service */
1578 u32 fc4types[8]; /* FC-4 TYPEs */ 1428 u32 fc4types[8]; /* FC-4 TYPEs */
1579 wwn_t fabric_port_name; 1429 wwn_t fabric_port_name; /* Fabric Port Name */
1580 /* Fabric Port Name */ 1430 u32 rsvd:8; /* Reserved */
1581 u32 rsvd:8; /* Reserved */ 1431 u32 hard_addr:24; /* Hard Address */
1582 u32 hard_addr:24; /* Hard Address */
1583}; 1432};
1584 1433
1585/* 1434/*
1586 * Fabric Config Server
1587 */
1588
1589/*
1590 * Command codes for Fabric Configuration Server 1435 * Command codes for Fabric Configuration Server
1591 */ 1436 */
1592enum { 1437enum {
@@ -1597,159 +1442,9 @@ enum {
1597}; 1442};
1598 1443
1599/* 1444/*
1600 * Source or Destination Port Tags.
1601 */
1602enum {
1603 GS_FTRACE_TAG_NPORT_ID = 1,
1604 GS_FTRACE_TAG_NPORT_NAME = 2,
1605};
1606
1607/*
1608* Port Value : Could be a Port id or wwn
1609 */
1610union fcgs_port_val_u {
1611 u32 nport_id;
1612 wwn_t nport_wwn;
1613};
1614
1615#define GS_FTRACE_MAX_HOP_COUNT 20
1616#define GS_FTRACE_REVISION 1
1617
1618/*
1619 * Ftrace Related Structures.
1620 */
1621
1622/*
1623 * STR (Switch Trace) Reject Reason Codes. From FC-SW.
1624 */
1625enum {
1626 GS_FTRACE_STR_CMD_COMPLETED_SUCC = 0,
1627 GS_FTRACE_STR_CMD_NOT_SUPP_IN_NEXT_SWITCH,
1628 GS_FTRACE_STR_NO_RESP_FROM_NEXT_SWITCH,
1629 GS_FTRACE_STR_MAX_HOP_CNT_REACHED,
1630 GS_FTRACE_STR_SRC_PORT_NOT_FOUND,
1631 GS_FTRACE_STR_DST_PORT_NOT_FOUND,
1632 GS_FTRACE_STR_DEVICES_NOT_IN_COMMON_ZONE,
1633 GS_FTRACE_STR_NO_ROUTE_BW_PORTS,
1634 GS_FTRACE_STR_NO_ADDL_EXPLN,
1635 GS_FTRACE_STR_FABRIC_BUSY,
1636 GS_FTRACE_STR_FABRIC_BUILD_IN_PROGRESS,
1637 GS_FTRACE_STR_VENDOR_SPECIFIC_ERR_START = 0xf0,
1638 GS_FTRACE_STR_VENDOR_SPECIFIC_ERR_END = 0xff,
1639};
1640
1641/*
1642 * Ftrace Request
1643 */
1644struct fcgs_ftrace_req_s {
1645 u32 revision;
1646 u16 src_port_tag; /* Source Port tag */
1647 u16 src_port_len; /* Source Port len */
1648 union fcgs_port_val_u src_port_val; /* Source Port value */
1649 u16 dst_port_tag; /* Destination Port tag */
1650 u16 dst_port_len; /* Destination Port len */
1651 union fcgs_port_val_u dst_port_val; /* Destination Port value */
1652 u32 token;
1653 u8 vendor_id[8]; /* T10 Vendor Identifier */
1654 u8 vendor_info[8]; /* Vendor specific Info */
1655 u32 max_hop_cnt; /* Max Hop Count */
1656};
1657
1658/*
1659 * Path info structure
1660 */
1661struct fcgs_ftrace_path_info_s {
1662 wwn_t switch_name; /* Switch WWN */
1663 u32 domain_id;
1664 wwn_t ingress_port_name; /* Ingress ports wwn */
1665 u32 ingress_phys_port_num; /* Ingress ports physical port
1666 * number
1667 */
1668 wwn_t egress_port_name; /* Ingress ports wwn */
1669 u32 egress_phys_port_num; /* Ingress ports physical port
1670 * number
1671 */
1672};
1673
1674/*
1675 * Ftrace Acc Response
1676 */
1677struct fcgs_ftrace_resp_s {
1678 u32 revision;
1679 u32 token;
1680 u8 vendor_id[8]; /* T10 Vendor Identifier */
1681 u8 vendor_info[8]; /* Vendor specific Info */
1682 u32 str_rej_reason_code; /* STR Reject Reason Code */
1683 u32 num_path_info_entries; /* No. of path info entries */
1684 /*
1685 * path info entry/entries.
1686 */
1687 struct fcgs_ftrace_path_info_s path_info[1];
1688
1689};
1690
1691/*
1692* Fabric Config Server : FCPing
1693 */
1694
1695/*
1696 * FC Ping Request
1697 */
1698struct fcgs_fcping_req_s {
1699 u32 revision;
1700 u16 port_tag;
1701 u16 port_len; /* Port len */
1702 union fcgs_port_val_u port_val; /* Port value */
1703 u32 token;
1704};
1705
1706/*
1707 * FC Ping Response
1708 */
1709struct fcgs_fcping_resp_s {
1710 u32 token;
1711};
1712
1713/*
1714 * Command codes for zone server query.
1715 */
1716enum {
1717 ZS_GZME = 0x0124, /* Get zone member extended */
1718};
1719
1720/*
1721 * ZS GZME request
1722 */
1723#define ZS_GZME_ZNAMELEN 32
1724struct zs_gzme_req_s {
1725 u8 znamelen;
1726 u8 rsvd[3];
1727 u8 zname[ZS_GZME_ZNAMELEN];
1728};
1729
1730enum zs_mbr_type {
1731 ZS_MBR_TYPE_PWWN = 1,
1732 ZS_MBR_TYPE_DOMPORT = 2,
1733 ZS_MBR_TYPE_PORTID = 3,
1734 ZS_MBR_TYPE_NWWN = 4,
1735};
1736
1737struct zs_mbr_wwn_s {
1738 u8 mbr_type;
1739 u8 rsvd[3];
1740 wwn_t wwn;
1741};
1742
1743struct zs_query_resp_s {
1744 u32 nmbrs; /* number of zone members */
1745 struct zs_mbr_wwn_s mbr[1];
1746};
1747
1748/*
1749 * GMAL Command ( Get ( interconnect Element) Management Address List) 1445 * GMAL Command ( Get ( interconnect Element) Management Address List)
1750 * To retrieve the IP Address of a Switch. 1446 * To retrieve the IP Address of a Switch.
1751 */ 1447 */
1752
1753#define CT_GMAL_RESP_PREFIX_TELNET "telnet://" 1448#define CT_GMAL_RESP_PREFIX_TELNET "telnet://"
1754#define CT_GMAL_RESP_PREFIX_HTTP "http://" 1449#define CT_GMAL_RESP_PREFIX_HTTP "http://"
1755 1450
@@ -1774,9 +1469,6 @@ struct fcgs_gmal_entry_s {
1774}; 1469};
1775 1470
1776/* 1471/*
1777 * FDMI
1778 */
1779/*
1780 * FDMI Command Codes 1472 * FDMI Command Codes
1781 */ 1473 */
1782#define FDMI_GRHL 0x0100 1474#define FDMI_GRHL 0x0100
@@ -1872,8 +1564,8 @@ struct fdmi_hba_attr_s {
1872 * Registered Port List 1564 * Registered Port List
1873 */ 1565 */
1874struct fdmi_port_list_s { 1566struct fdmi_port_list_s {
1875 __be32 num_ports; /* number Of Port Entries */ 1567 __be32 num_ports; /* number Of Port Entries */
1876 wwn_t port_entry; /* one or more */ 1568 wwn_t port_entry; /* one or more */
1877}; 1569};
1878 1570
1879/* 1571/*
@@ -1888,7 +1580,7 @@ struct fdmi_port_attr_s {
1888 * FDMI Register HBA Attributes 1580 * FDMI Register HBA Attributes
1889 */ 1581 */
1890struct fdmi_rhba_s { 1582struct fdmi_rhba_s {
1891 wwn_t hba_id; /* HBA Identifier */ 1583 wwn_t hba_id; /* HBA Identifier */
1892 struct fdmi_port_list_s port_list; /* Registered Port List */ 1584 struct fdmi_port_list_s port_list; /* Registered Port List */
1893 struct fdmi_hba_attr_s hba_attr_blk; /* HBA attribute block */ 1585 struct fdmi_hba_attr_s hba_attr_blk; /* HBA attribute block */
1894}; 1586};
@@ -1897,8 +1589,8 @@ struct fdmi_rhba_s {
1897 * FDMI Register Port 1589 * FDMI Register Port
1898 */ 1590 */
1899struct fdmi_rprt_s { 1591struct fdmi_rprt_s {
1900 wwn_t hba_id; /* HBA Identifier */ 1592 wwn_t hba_id; /* HBA Identifier */
1901 wwn_t port_name; /* Port wwn */ 1593 wwn_t port_name; /* Port wwn */
1902 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ 1594 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */
1903}; 1595};
1904 1596
@@ -1906,7 +1598,7 @@ struct fdmi_rprt_s {
1906 * FDMI Register Port Attributes 1598 * FDMI Register Port Attributes
1907 */ 1599 */
1908struct fdmi_rpa_s { 1600struct fdmi_rpa_s {
1909 wwn_t port_name; /* port wwn */ 1601 wwn_t port_name; /* port wwn */
1910 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */ 1602 struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */
1911}; 1603};
1912 1604
diff --git a/drivers/scsi/bfa/bfa_fcpim.c b/drivers/scsi/bfa/bfa_fcpim.c
index a4989a02e494..9c410b21db6d 100644
--- a/drivers/scsi/bfa/bfa_fcpim.c
+++ b/drivers/scsi/bfa/bfa_fcpim.c
@@ -2180,7 +2180,7 @@ bfa_ioim_send_ioreq(struct bfa_ioim_s *ioim)
2180 else 2180 else
2181 m->cmnd.iodir = FCP_IODIR_NONE; 2181 m->cmnd.iodir = FCP_IODIR_NONE;
2182 2182
2183 m->cmnd.cdb = *(scsi_cdb_t *) cmnd->cmnd; 2183 m->cmnd.cdb = *(struct scsi_cdb_s *) cmnd->cmnd;
2184 fcp_dl = scsi_bufflen(cmnd); 2184 fcp_dl = scsi_bufflen(cmnd);
2185 m->cmnd.fcp_dl = cpu_to_be32(fcp_dl); 2185 m->cmnd.fcp_dl = cpu_to_be32(fcp_dl);
2186 2186
diff --git a/drivers/scsi/bfa/bfa_ioc.c b/drivers/scsi/bfa/bfa_ioc.c
index 431cf72f7426..c1f72c49196f 100644
--- a/drivers/scsi/bfa/bfa_ioc.c
+++ b/drivers/scsi/bfa/bfa_ioc.c
@@ -957,7 +957,7 @@ bfa_iocpf_sm_disabling_sync_entry(struct bfa_iocpf_s *iocpf)
957 bfa_ioc_hw_sem_get(iocpf->ioc); 957 bfa_ioc_hw_sem_get(iocpf->ioc);
958} 958}
959 959
960/** 960/*
961 * IOC hb ack request is being removed. 961 * IOC hb ack request is being removed.
962 */ 962 */
963static void 963static void
@@ -1020,8 +1020,7 @@ bfa_iocpf_sm_initfail_sync_entry(struct bfa_iocpf_s *iocpf)
1020 bfa_ioc_hw_sem_get(iocpf->ioc); 1020 bfa_ioc_hw_sem_get(iocpf->ioc);
1021} 1021}
1022 1022
1023/** 1023/*
1024 * @brief
1025 * Hardware initialization failed. 1024 * Hardware initialization failed.
1026 */ 1025 */
1027static void 1026static void
@@ -1103,12 +1102,12 @@ bfa_iocpf_sm_initfail(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1103static void 1102static void
1104bfa_iocpf_sm_fail_sync_entry(struct bfa_iocpf_s *iocpf) 1103bfa_iocpf_sm_fail_sync_entry(struct bfa_iocpf_s *iocpf)
1105{ 1104{
1106 /** 1105 /*
1107 * Mark IOC as failed in hardware and stop firmware. 1106 * Mark IOC as failed in hardware and stop firmware.
1108 */ 1107 */
1109 bfa_ioc_lpu_stop(iocpf->ioc); 1108 bfa_ioc_lpu_stop(iocpf->ioc);
1110 1109
1111 /** 1110 /*
1112 * Flush any queued up mailbox requests. 1111 * Flush any queued up mailbox requests.
1113 */ 1112 */
1114 bfa_ioc_mbox_hbfail(iocpf->ioc); 1113 bfa_ioc_mbox_hbfail(iocpf->ioc);
@@ -1366,12 +1365,6 @@ bfa_ioc_fwver_valid(struct bfa_ioc_s *ioc, u32 boot_env)
1366{ 1365{
1367 struct bfi_ioc_image_hdr_s fwhdr, *drv_fwhdr; 1366 struct bfi_ioc_image_hdr_s fwhdr, *drv_fwhdr;
1368 1367
1369 /*
1370 * If bios/efi boot (flash based) -- return true
1371 */
1372 if (bfa_ioc_is_bios_optrom(ioc))
1373 return BFA_TRUE;
1374
1375 bfa_ioc_fwver_get(ioc, &fwhdr); 1368 bfa_ioc_fwver_get(ioc, &fwhdr);
1376 drv_fwhdr = (struct bfi_ioc_image_hdr_s *) 1369 drv_fwhdr = (struct bfi_ioc_image_hdr_s *)
1377 bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), 0); 1370 bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), 0);
@@ -1423,22 +1416,6 @@ bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force)
1423 boot_env = BFI_BOOT_LOADER_OS; 1416 boot_env = BFI_BOOT_LOADER_OS;
1424 1417
1425 /* 1418 /*
1426 * Flash based firmware boot BIOS env.
1427 */
1428 if (bfa_ioc_is_bios_optrom(ioc)) {
1429 boot_type = BFI_BOOT_TYPE_FLASH;
1430 boot_env = BFI_BOOT_LOADER_BIOS;
1431 }
1432
1433 /*
1434 * Flash based firmware boot UEFI env.
1435 */
1436 if (bfa_ioc_is_uefi(ioc)) {
1437 boot_type = BFI_BOOT_TYPE_FLASH;
1438 boot_env = BFI_BOOT_LOADER_UEFI;
1439 }
1440
1441 /*
1442 * check if firmware is valid 1419 * check if firmware is valid
1443 */ 1420 */
1444 fwvalid = (ioc_fwstate == BFI_IOC_UNINIT) ? 1421 fwvalid = (ioc_fwstate == BFI_IOC_UNINIT) ?
@@ -1466,8 +1443,7 @@ bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force)
1466 * convergence, IOC will be in operational state when 2nd driver 1443 * convergence, IOC will be in operational state when 2nd driver
1467 * is loaded. 1444 * is loaded.
1468 */ 1445 */
1469 if (ioc_fwstate == BFI_IOC_DISABLED || 1446 if (ioc_fwstate == BFI_IOC_DISABLED || ioc_fwstate == BFI_IOC_OP) {
1470 (!bfa_ioc_is_bios_optrom(ioc) && ioc_fwstate == BFI_IOC_OP)) {
1471 1447
1472 /* 1448 /*
1473 * When using MSI-X any pending firmware ready event should 1449 * When using MSI-X any pending firmware ready event should
@@ -1842,7 +1818,7 @@ bfa_ioc_fail_notify(struct bfa_ioc_s *ioc)
1842 struct bfa_ioc_hbfail_notify_s *notify; 1818 struct bfa_ioc_hbfail_notify_s *notify;
1843 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; 1819 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad;
1844 1820
1845 /** 1821 /*
1846 * Notify driver and common modules registered for notification. 1822 * Notify driver and common modules registered for notification.
1847 */ 1823 */
1848 ioc->cbfn->hbfail_cbfn(ioc->bfa); 1824 ioc->cbfn->hbfail_cbfn(ioc->bfa);
@@ -2279,7 +2255,7 @@ bfa_ioc_adapter_is_disabled(struct bfa_ioc_s *ioc)
2279 return BFA_TRUE; 2255 return BFA_TRUE;
2280} 2256}
2281 2257
2282/** 2258/*
2283 * Reset IOC fwstate registers. 2259 * Reset IOC fwstate registers.
2284 */ 2260 */
2285void 2261void
diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
index 5d2f34290e9d..ec9cf08b0e7f 100644
--- a/drivers/scsi/bfa/bfa_ioc.h
+++ b/drivers/scsi/bfa/bfa_ioc.h
@@ -296,15 +296,6 @@ struct bfa_ioc_hwif_s {
296#define BFA_IOC_FLASH_OFFSET_IN_CHUNK(off) (off % BFI_FLASH_CHUNK_SZ_WORDS) 296#define BFA_IOC_FLASH_OFFSET_IN_CHUNK(off) (off % BFI_FLASH_CHUNK_SZ_WORDS)
297#define BFA_IOC_FLASH_CHUNK_ADDR(chunkno) (chunkno * BFI_FLASH_CHUNK_SZ_WORDS) 297#define BFA_IOC_FLASH_CHUNK_ADDR(chunkno) (chunkno * BFI_FLASH_CHUNK_SZ_WORDS)
298 298
299#ifdef BFA_IOC_IS_UEFI
300#define bfa_ioc_is_bios_optrom(__ioc) (0)
301#define bfa_ioc_is_uefi(__ioc) BFA_IOC_IS_UEFI
302#else
303#define bfa_ioc_is_bios_optrom(__ioc) \
304 (bfa_cb_image_get_size(BFA_IOC_FWIMG_TYPE(__ioc)) < BFA_IOC_FWIMG_MINSZ)
305#define bfa_ioc_is_uefi(__ioc) (0)
306#endif
307
308/* 299/*
309 * IOC mailbox interface 300 * IOC mailbox interface
310 */ 301 */
diff --git a/drivers/scsi/bfa/bfa_ioc_cb.c b/drivers/scsi/bfa/bfa_ioc_cb.c
index 788ecca5aa01..e4a0713185b6 100644
--- a/drivers/scsi/bfa/bfa_ioc_cb.c
+++ b/drivers/scsi/bfa/bfa_ioc_cb.c
@@ -61,7 +61,7 @@ bfa_ioc_set_cb_hwif(struct bfa_ioc_s *ioc)
61 ioc->ioc_hwif = &hwif_cb; 61 ioc->ioc_hwif = &hwif_cb;
62} 62}
63 63
64/** 64/*
65 * Return true if firmware of current driver matches the running firmware. 65 * Return true if firmware of current driver matches the running firmware.
66 */ 66 */
67static bfa_boolean_t 67static bfa_boolean_t
@@ -70,8 +70,7 @@ bfa_ioc_cb_firmware_lock(struct bfa_ioc_s *ioc)
70 struct bfi_ioc_image_hdr_s fwhdr; 70 struct bfi_ioc_image_hdr_s fwhdr;
71 uint32_t fwstate = readl(ioc->ioc_regs.ioc_fwstate); 71 uint32_t fwstate = readl(ioc->ioc_regs.ioc_fwstate);
72 72
73 if ((fwstate == BFI_IOC_UNINIT) || bfa_ioc_is_uefi(ioc) || 73 if (fwstate == BFI_IOC_UNINIT)
74 bfa_ioc_is_bios_optrom(ioc))
75 return BFA_TRUE; 74 return BFA_TRUE;
76 75
77 bfa_ioc_fwver_get(ioc, &fwhdr); 76 bfa_ioc_fwver_get(ioc, &fwhdr);
@@ -211,7 +210,7 @@ bfa_ioc_cb_ownership_reset(struct bfa_ioc_s *ioc)
211 writel(1, ioc->ioc_regs.ioc_sem_reg); 210 writel(1, ioc->ioc_regs.ioc_sem_reg);
212} 211}
213 212
214/** 213/*
215 * Synchronized IOC failure processing routines 214 * Synchronized IOC failure processing routines
216 */ 215 */
217static void 216static void
@@ -236,7 +235,7 @@ bfa_ioc_cb_sync_complete(struct bfa_ioc_s *ioc)
236 uint32_t fwstate, alt_fwstate; 235 uint32_t fwstate, alt_fwstate;
237 fwstate = readl(ioc->ioc_regs.ioc_fwstate); 236 fwstate = readl(ioc->ioc_regs.ioc_fwstate);
238 237
239 /** 238 /*
240 * At this point, this IOC is hoding the hw sem in the 239 * At this point, this IOC is hoding the hw sem in the
241 * start path (fwcheck) OR in the disable/enable path 240 * start path (fwcheck) OR in the disable/enable path
242 * OR to check if the other IOC has acknowledged failure. 241 * OR to check if the other IOC has acknowledged failure.
diff --git a/drivers/scsi/bfa/bfa_ioc_ct.c b/drivers/scsi/bfa/bfa_ioc_ct.c
index ccfecfca0745..008d129ddfcd 100644
--- a/drivers/scsi/bfa/bfa_ioc_ct.c
+++ b/drivers/scsi/bfa/bfa_ioc_ct.c
@@ -351,7 +351,7 @@ bfa_ioc_ct_ownership_reset(struct bfa_ioc_s *ioc)
351 writel(1, ioc->ioc_regs.ioc_sem_reg); 351 writel(1, ioc->ioc_regs.ioc_sem_reg);
352} 352}
353 353
354/** 354/*
355 * Synchronized IOC failure processing routines 355 * Synchronized IOC failure processing routines
356 */ 356 */
357static void 357static void
@@ -393,7 +393,7 @@ bfa_ioc_ct_sync_complete(struct bfa_ioc_s *ioc)
393 if (sync_ackd == 0) 393 if (sync_ackd == 0)
394 return BFA_TRUE; 394 return BFA_TRUE;
395 395
396 /** 396 /*
397 * The check below is to see whether any other PCI fn 397 * The check below is to see whether any other PCI fn
398 * has reinitialized the ASIC (reset sync_ackd bits) 398 * has reinitialized the ASIC (reset sync_ackd bits)
399 * and failed again while this IOC was waiting for hw 399 * and failed again while this IOC was waiting for hw
@@ -412,7 +412,7 @@ bfa_ioc_ct_sync_complete(struct bfa_ioc_s *ioc)
412 return BFA_TRUE; 412 return BFA_TRUE;
413 } 413 }
414 414
415 /** 415 /*
416 * If another PCI fn reinitialized and failed again while 416 * If another PCI fn reinitialized and failed again while
417 * this IOC was waiting for hw sem, the sync_ackd bit for 417 * this IOC was waiting for hw sem, the sync_ackd bit for
418 * this IOC need to be set again to allow reinitialization. 418 * this IOC need to be set again to allow reinitialization.
diff --git a/drivers/scsi/bfa/bfa_svc.c b/drivers/scsi/bfa/bfa_svc.c
index 6577d0d922f6..1d34921f88bf 100644
--- a/drivers/scsi/bfa/bfa_svc.c
+++ b/drivers/scsi/bfa/bfa_svc.c
@@ -1372,7 +1372,7 @@ bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event)
1372 } 1372 }
1373} 1373}
1374 1374
1375/** 1375/*
1376 * login complete 1376 * login complete
1377 */ 1377 */
1378static void 1378static void
@@ -1691,7 +1691,7 @@ bfa_lps_send_logout(struct bfa_lps_s *lps)
1691 bfa_reqq_produce(lps->bfa, lps->reqq); 1691 bfa_reqq_produce(lps->bfa, lps->reqq);
1692} 1692}
1693 1693
1694/** 1694/*
1695 * send n2n pid set request to firmware 1695 * send n2n pid set request to firmware
1696 */ 1696 */
1697static void 1697static void
@@ -1930,7 +1930,7 @@ bfa_lps_get_base_pid(struct bfa_s *bfa)
1930 return BFA_LPS_FROM_TAG(mod, 0)->lp_pid; 1930 return BFA_LPS_FROM_TAG(mod, 0)->lp_pid;
1931} 1931}
1932 1932
1933/** 1933/*
1934 * Set PID in case of n2n (which is assigned during PLOGI) 1934 * Set PID in case of n2n (which is assigned during PLOGI)
1935 */ 1935 */
1936void 1936void