0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __BFA_DEFS_SVC_H__
0012 #define __BFA_DEFS_SVC_H__
0013
0014 #include "bfa_defs.h"
0015 #include "bfa_fc.h"
0016 #include "bfi.h"
0017
0018 #define BFA_IOCFC_INTR_DELAY 1125
0019 #define BFA_IOCFC_INTR_LATENCY 225
0020 #define BFA_IOCFCOE_INTR_DELAY 25
0021 #define BFA_IOCFCOE_INTR_LATENCY 5
0022
0023
0024
0025
0026 #pragma pack(1)
0027 struct bfa_iocfc_intr_attr_s {
0028 u8 coalesce;
0029 u8 rsvd[3];
0030 __be16 latency;
0031 __be16 delay;
0032 };
0033
0034
0035
0036
0037 struct bfa_iocfc_fwcfg_s {
0038 u16 num_fabrics;
0039 u16 num_lports;
0040 u16 num_rports;
0041 u16 num_ioim_reqs;
0042 u16 num_tskim_reqs;
0043 u16 num_fwtio_reqs;
0044 u16 num_fcxp_reqs;
0045 u16 num_uf_bufs;
0046 u8 num_cqs;
0047 u8 fw_tick_res;
0048 u8 rsvd[6];
0049 };
0050 #pragma pack()
0051
0052 struct bfa_iocfc_drvcfg_s {
0053 u16 num_reqq_elems;
0054 u16 num_rspq_elems;
0055 u16 num_sgpgs;
0056 u16 num_sboot_tgts;
0057 u16 num_sboot_luns;
0058 u16 ioc_recover;
0059 u16 min_cfg;
0060 u16 path_tov;
0061 u16 num_tio_reqs;
0062 u8 port_mode;
0063 u8 rsvd_a;
0064 bfa_boolean_t delay_comp;
0065
0066 u16 num_ttsk_reqs;
0067 u32 rsvd;
0068 };
0069
0070
0071
0072
0073 struct bfa_iocfc_cfg_s {
0074 struct bfa_iocfc_fwcfg_s fwcfg;
0075 struct bfa_iocfc_drvcfg_s drvcfg;
0076 };
0077
0078
0079
0080
0081 struct bfa_fw_ioim_stats_s {
0082 u32 host_abort;
0083 u32 host_cleanup;
0084
0085 u32 fw_io_timeout;
0086 u32 fw_frm_parse;
0087 u32 fw_frm_data;
0088 u32 fw_frm_rsp;
0089 u32 fw_frm_xfer_rdy;
0090 u32 fw_frm_bls_acc;
0091 u32 fw_frm_tgt_abort;
0092 u32 fw_frm_unknown;
0093 u32 fw_data_dma;
0094 u32 fw_frm_drop;
0095
0096 u32 rec_timeout;
0097 u32 error_rec;
0098
0099 u32 wait_for_si;
0100 u32 rec_rsp_inval;
0101 u32 rec_rsp_xchg_comp;
0102 u32 rec_rsp_rd_si_ownd;
0103
0104 u32 seqr_io_abort;
0105 u32 seqr_io_retry;
0106
0107 u32 itn_cisc_upd_rsp;
0108 u32 itn_cisc_upd_data;
0109 u32 itn_cisc_upd_xfer_rdy;
0110
0111 u32 fcp_data_lost;
0112
0113 u32 ro_set_in_xfer_rdy;
0114 u32 xfer_rdy_ooo_err;
0115 u32 xfer_rdy_unknown_err;
0116
0117 u32 io_abort_timeout;
0118 u32 sler_initiated;
0119
0120 u32 unexp_fcp_rsp;
0121
0122 u32 fcp_rsp_under_run;
0123 u32 fcp_rsp_under_run_wr;
0124 u32 fcp_rsp_under_run_err;
0125 u32 fcp_rsp_resid_inval;
0126 u32 fcp_rsp_over_run;
0127 u32 fcp_rsp_over_run_err;
0128 u32 fcp_rsp_proto_err;
0129 u32 fcp_rsp_sense_err;
0130 u32 fcp_conf_req;
0131
0132 u32 tgt_aborted_io;
0133
0134 u32 ioh_edtov_timeout_event;
0135 u32 ioh_fcp_rsp_excp_event;
0136 u32 ioh_fcp_conf_event;
0137 u32 ioh_mult_frm_rsp_event;
0138 u32 ioh_hit_class2_event;
0139 u32 ioh_miss_other_event;
0140 u32 ioh_seq_cnt_err_event;
0141 u32 ioh_len_err_event;
0142
0143 u32 ioh_seq_len_err_event;
0144 u32 ioh_data_oor_event;
0145 u32 ioh_ro_ooo_event;
0146 u32 ioh_cpu_owned_event;
0147 u32 ioh_unexp_frame_event;
0148
0149 u32 ioh_err_int;
0150
0151 };
0152
0153 struct bfa_fw_tio_stats_s {
0154 u32 tio_conf_proc;
0155 u32 tio_conf_drop;
0156 u32 tio_cleanup_req;
0157 u32 tio_cleanup_comp;
0158 u32 tio_abort_rsp;
0159 u32 tio_abort_rsp_comp;
0160 u32 tio_abts_req;
0161 u32 tio_abts_ack;
0162 u32 tio_abts_ack_nocomp;
0163 u32 tio_abts_tmo;
0164 u32 tio_snsdata_dma;
0165 u32 tio_rxwchan_wait;
0166 u32 tio_rxwchan_avail;
0167 u32 tio_hit_bls;
0168 u32 tio_uf_recv;
0169 u32 tio_rd_invalid_sm;
0170 u32 tio_wr_invalid_sm;
0171
0172 u32 ds_rxwchan_wait;
0173 u32 ds_rxwchan_avail;
0174 u32 ds_unaligned_rd;
0175 u32 ds_rdcomp_invalid_sm;
0176
0177 u32 ds_wrcomp_invalid_sm;
0178
0179 u32 ds_flush_req;
0180 u32 ds_flush_comp;
0181 u32 ds_xfrdy_exp;
0182 u32 ds_seq_cnt_err;
0183 u32 ds_seq_len_err;
0184 u32 ds_data_oor;
0185 u32 ds_hit_bls;
0186 u32 ds_edtov_timer_exp;
0187 u32 ds_cpu_owned;
0188 u32 ds_hit_class2;
0189 u32 ds_length_err;
0190 u32 ds_ro_ooo_err;
0191 u32 ds_rectov_timer_exp;
0192 u32 ds_unexp_fr_err;
0193 };
0194
0195
0196
0197
0198 struct bfa_fw_io_stats_s {
0199 struct bfa_fw_ioim_stats_s ioim_stats;
0200 struct bfa_fw_tio_stats_s tio_stats;
0201 };
0202
0203
0204
0205
0206
0207 struct bfa_fw_port_fpg_stats_s {
0208 u32 intr_evt;
0209 u32 intr;
0210 u32 intr_excess;
0211 u32 intr_cause0;
0212 u32 intr_other;
0213 u32 intr_other_ign;
0214 u32 sig_lost;
0215 u32 sig_regained;
0216 u32 sync_lost;
0217 u32 sync_to;
0218 u32 sync_regained;
0219 u32 div2_overflow;
0220 u32 div2_underflow;
0221 u32 efifo_overflow;
0222 u32 efifo_underflow;
0223 u32 idle_rx;
0224 u32 lrr_rx;
0225 u32 lr_rx;
0226 u32 ols_rx;
0227 u32 nos_rx;
0228 u32 lip_rx;
0229 u32 arbf0_rx;
0230 u32 arb_rx;
0231 u32 mrk_rx;
0232 u32 const_mrk_rx;
0233 u32 prim_unknown;
0234 };
0235
0236
0237 struct bfa_fw_port_lksm_stats_s {
0238 u32 hwsm_success;
0239 u32 hwsm_fails;
0240 u32 hwsm_wdtov;
0241 u32 swsm_success;
0242 u32 swsm_fails;
0243 u32 swsm_wdtov;
0244 u32 busybufs;
0245 u32 buf_waits;
0246 u32 link_fails;
0247 u32 psp_errors;
0248 u32 lr_unexp;
0249 u32 lrr_unexp;
0250 u32 lr_tx;
0251 u32 lrr_tx;
0252 u32 ols_tx;
0253 u32 nos_tx;
0254 u32 hwsm_lrr_rx;
0255 u32 hwsm_lr_rx;
0256 };
0257
0258 struct bfa_fw_port_snsm_stats_s {
0259 u32 hwsm_success;
0260 u32 hwsm_fails;
0261 u32 hwsm_wdtov;
0262 u32 swsm_success;
0263 u32 swsm_wdtov;
0264 u32 error_resets;
0265 u32 sync_lost;
0266 u32 sig_lost;
0267 u32 asn8g_attempts;
0268 u32 adapt_success;
0269 u32 adapt_fails;
0270 u32 adapt_ign_fails;
0271 };
0272
0273 struct bfa_fw_port_physm_stats_s {
0274 u32 module_inserts;
0275 u32 module_xtracts;
0276 u32 module_invalids;
0277 u32 module_read_ign;
0278 u32 laser_faults;
0279 u32 rsvd;
0280 };
0281
0282 struct bfa_fw_fip_stats_s {
0283 u32 vlan_req;
0284 u32 vlan_notify;
0285 u32 vlan_err;
0286 u32 vlan_timeouts;
0287 u32 vlan_invalids;
0288 u32 disc_req;
0289 u32 disc_rsp;
0290 u32 disc_err;
0291 u32 disc_unsol;
0292 u32 disc_timeouts;
0293 u32 disc_fcf_unavail;
0294 u32 linksvc_unsupp;
0295 u32 linksvc_err;
0296 u32 logo_req;
0297 u32 clrvlink_req;
0298 u32 op_unsupp;
0299 u32 untagged;
0300 u32 invalid_version;
0301 };
0302
0303 struct bfa_fw_lps_stats_s {
0304 u32 mac_invalids;
0305 u32 rsvd;
0306 };
0307
0308 struct bfa_fw_fcoe_stats_s {
0309 u32 cee_linkups;
0310 u32 cee_linkdns;
0311 u32 fip_linkups;
0312 u32 fip_linkdns;
0313 u32 fip_fails;
0314 u32 mac_invalids;
0315 };
0316
0317
0318
0319
0320 struct bfa_fw_fcoe_port_stats_s {
0321 struct bfa_fw_fcoe_stats_s fcoe_stats;
0322 struct bfa_fw_fip_stats_s fip_stats;
0323 };
0324
0325
0326
0327
0328 struct bfa_fw_lpsm_stats_s {
0329 u32 cls_rx;
0330 u32 cls_tx;
0331 u32 arbf0_rx;
0332 u32 arbf0_tx;
0333 u32 init_rx;
0334 u32 unexp_hwst;
0335 u32 unexp_frame;
0336 u32 unexp_prim;
0337 u32 prev_alpa_unavail;
0338 u32 alpa_unavail;
0339 u32 lip_rx;
0340 u32 lip_f7f7_rx;
0341 u32 lip_f8_rx;
0342 u32 lip_f8f7_rx;
0343 u32 lip_other_rx;
0344 u32 lip_tx;
0345 u32 retry_tov;
0346 u32 lip_tov;
0347 u32 idle_tov;
0348 u32 arbf0_tov;
0349 u32 stop_loop_tov;
0350 u32 lixa_tov;
0351 u32 lixx_tov;
0352 u32 cls_tov;
0353 u32 sler;
0354 u32 failed;
0355 u32 success;
0356 };
0357
0358
0359
0360
0361 struct bfa_fw_fc_uport_stats_s {
0362 struct bfa_fw_port_snsm_stats_s snsm_stats;
0363 struct bfa_fw_port_lksm_stats_s lksm_stats;
0364 struct bfa_fw_lpsm_stats_s lpsm_stats;
0365 };
0366
0367
0368
0369
0370 union bfa_fw_fc_port_stats_s {
0371 struct bfa_fw_fc_uport_stats_s fc_stats;
0372 struct bfa_fw_fcoe_port_stats_s fcoe_stats;
0373 };
0374
0375
0376
0377
0378 struct bfa_fw_port_stats_s {
0379 struct bfa_fw_port_fpg_stats_s fpg_stats;
0380 struct bfa_fw_port_physm_stats_s physm_stats;
0381 union bfa_fw_fc_port_stats_s fc_port;
0382 };
0383
0384
0385
0386
0387 struct bfa_fw_fcxchg_stats_s {
0388 u32 ua_tag_inv;
0389 u32 ua_state_inv;
0390 };
0391
0392
0393
0394
0395 struct bfa_fw_trunk_stats_s {
0396 u32 emt_recvd;
0397 u32 emt_accepted;
0398 u32 emt_rejected;
0399 u32 etp_recvd;
0400 u32 etp_accepted;
0401 u32 etp_rejected;
0402 u32 lr_recvd;
0403 u32 rsvd;
0404 };
0405
0406 struct bfa_fw_aport_stats_s {
0407 u32 flogi_sent;
0408 u32 flogi_acc_recvd;
0409 u32 flogi_rjt_recvd;
0410 u32 flogi_retries;
0411
0412 u32 elp_recvd;
0413 u32 elp_accepted;
0414 u32 elp_rejected;
0415 u32 elp_dropped;
0416
0417 u32 bbcr_lr_count;
0418 u32 frame_lost_intrs;
0419 u32 rrdy_lost_intrs;
0420
0421 u32 rsvd;
0422 };
0423
0424
0425
0426
0427 struct bfa_fw_iocfc_stats_s {
0428 u32 cfg_reqs;
0429 u32 updq_reqs;
0430 u32 ic_reqs;
0431 u32 unknown_reqs;
0432 u32 set_intr_reqs;
0433 };
0434
0435
0436
0437
0438 struct bfa_iocfc_attr_s {
0439 struct bfa_iocfc_cfg_s config;
0440 struct bfa_iocfc_intr_attr_s intr_attr;
0441 };
0442
0443
0444
0445
0446 struct bfa_fw_eth_sndrcv_stats_s {
0447 u32 crc_err;
0448 u32 rsvd;
0449 };
0450
0451
0452
0453
0454 struct bfa_fw_mac_mod_stats_s {
0455 u32 mac_on;
0456 u32 link_up;
0457 u32 signal_off;
0458 u32 dfe_on;
0459 u32 mac_reset;
0460 u32 pcs_reset;
0461 u32 loopback;
0462 u32 lb_mac_reset;
0463
0464 u32 lb_pcs_reset;
0465
0466 u32 rsvd;
0467 };
0468
0469
0470
0471
0472 struct bfa_fw_ct_mod_stats_s {
0473 u32 rxa_rds_undrun;
0474 u32 rad_bpc_ovfl;
0475 u32 rad_rlb_bpc_ovfl;
0476 u32 bpc_fcs_err;
0477 u32 txa_tso_hdr;
0478 u32 rsvd;
0479 };
0480
0481
0482
0483
0484 struct bfa_fw_rds_stats_s {
0485 u32 no_fid_drop_err;
0486 u32 rsvd;
0487 };
0488
0489
0490
0491
0492 struct bfa_fw_stats_s {
0493 struct bfa_fw_ioc_stats_s ioc_stats;
0494 struct bfa_fw_iocfc_stats_s iocfc_stats;
0495 struct bfa_fw_io_stats_s io_stats;
0496 struct bfa_fw_port_stats_s port_stats;
0497 struct bfa_fw_fcxchg_stats_s fcxchg_stats;
0498 struct bfa_fw_lps_stats_s lps_stats;
0499 struct bfa_fw_trunk_stats_s trunk_stats;
0500 struct bfa_fw_aport_stats_s aport_stats;
0501 struct bfa_fw_mac_mod_stats_s macmod_stats;
0502 struct bfa_fw_ct_mod_stats_s ctmod_stats;
0503 struct bfa_fw_eth_sndrcv_stats_s ethsndrcv_stats;
0504 struct bfa_fw_rds_stats_s rds_stats;
0505 };
0506
0507 #define BFA_IOCFC_PATHTOV_MAX 60
0508 #define BFA_IOCFC_QDEPTH_MAX 2000
0509
0510
0511
0512
0513 enum bfa_qos_state {
0514 BFA_QOS_DISABLED = 0,
0515 BFA_QOS_ONLINE = 1,
0516 BFA_QOS_OFFLINE = 2,
0517 };
0518
0519
0520
0521
0522 enum bfa_qos_priority {
0523 BFA_QOS_UNKNOWN = 0,
0524 BFA_QOS_HIGH = 1,
0525 BFA_QOS_MED = 2,
0526 BFA_QOS_LOW = 3,
0527 };
0528
0529
0530
0531
0532 enum bfa_qos_bw_alloc {
0533 BFA_QOS_BW_HIGH = 60,
0534 BFA_QOS_BW_MED = 30,
0535 BFA_QOS_BW_LOW = 10,
0536 };
0537 #pragma pack(1)
0538
0539 struct bfa_qos_bw_s {
0540 u8 qos_bw_set;
0541 u8 high;
0542 u8 med;
0543 u8 low;
0544 };
0545
0546
0547
0548
0549 struct bfa_qos_attr_s {
0550 u8 state;
0551 u8 rsvd1[3];
0552 u32 total_bb_cr;
0553 struct bfa_qos_bw_s qos_bw;
0554 struct bfa_qos_bw_s qos_bw_op;
0555 };
0556
0557 enum bfa_bbcr_state {
0558 BFA_BBCR_DISABLED,
0559 BFA_BBCR_ONLINE,
0560 BFA_BBCR_OFFLINE,
0561 };
0562
0563 enum bfa_bbcr_err_reason {
0564 BFA_BBCR_ERR_REASON_NONE,
0565 BFA_BBCR_ERR_REASON_SPEED_UNSUP,
0566 BFA_BBCR_ERR_REASON_PEER_UNSUP,
0567 BFA_BBCR_ERR_REASON_NON_BRCD_SW,
0568 BFA_BBCR_ERR_REASON_FLOGI_RJT,
0569 };
0570
0571 struct bfa_bbcr_attr_s {
0572 u8 state;
0573 u8 peer_bb_scn;
0574 u8 reason;
0575 u8 rsvd;
0576 };
0577
0578
0579
0580
0581
0582
0583
0584 #define BFA_QOS_MAX_VC 16
0585
0586 struct bfa_qos_vc_info_s {
0587 u8 vc_credit;
0588 u8 borrow_credit;
0589 u8 priority;
0590 u8 resvd;
0591 };
0592
0593 struct bfa_qos_vc_attr_s {
0594 u16 total_vc_count;
0595 u16 shared_credit;
0596 u32 elp_opmode_flags;
0597 struct bfa_qos_vc_info_s vc_info[BFA_QOS_MAX_VC];
0598
0599 };
0600
0601
0602
0603
0604 struct bfa_qos_stats_s {
0605 u32 flogi_sent;
0606 u32 flogi_acc_recvd;
0607 u32 flogi_rjt_recvd;
0608 u32 flogi_retries;
0609
0610 u32 elp_recvd;
0611 u32 elp_accepted;
0612 u32 elp_rejected;
0613 u32 elp_dropped;
0614
0615 u32 qos_rscn_recvd;
0616 u32 rsvd;
0617 };
0618
0619
0620
0621
0622 struct bfa_fcoe_stats_s {
0623 u64 secs_reset;
0624 u64 cee_linkups;
0625 u64 cee_linkdns;
0626 u64 fip_linkups;
0627 u64 fip_linkdns;
0628 u64 fip_fails;
0629 u64 mac_invalids;
0630 u64 vlan_req;
0631 u64 vlan_notify;
0632 u64 vlan_err;
0633 u64 vlan_timeouts;
0634 u64 vlan_invalids;
0635 u64 disc_req;
0636 u64 disc_rsp;
0637 u64 disc_err;
0638 u64 disc_unsol;
0639 u64 disc_timeouts;
0640 u64 disc_fcf_unavail;
0641 u64 linksvc_unsupp;
0642 u64 linksvc_err;
0643 u64 logo_req;
0644 u64 clrvlink_req;
0645 u64 op_unsupp;
0646 u64 untagged;
0647 u64 txf_ucast;
0648 u64 txf_ucast_vlan;
0649 u64 txf_ucast_octets;
0650 u64 txf_mcast;
0651 u64 txf_mcast_vlan;
0652 u64 txf_mcast_octets;
0653 u64 txf_bcast;
0654 u64 txf_bcast_vlan;
0655 u64 txf_bcast_octets;
0656 u64 txf_timeout;
0657 u64 txf_parity_errors;
0658 u64 txf_fid_parity_errors;
0659 u64 rxf_ucast_octets;
0660 u64 rxf_ucast;
0661 u64 rxf_ucast_vlan;
0662 u64 rxf_mcast_octets;
0663 u64 rxf_mcast;
0664 u64 rxf_mcast_vlan;
0665 u64 rxf_bcast_octets;
0666 u64 rxf_bcast;
0667 u64 rxf_bcast_vlan;
0668 };
0669
0670
0671
0672
0673 union bfa_fcport_stats_u {
0674 struct bfa_qos_stats_s fcqos;
0675 struct bfa_fcoe_stats_s fcoe;
0676 };
0677 #pragma pack()
0678
0679 struct bfa_fcpim_del_itn_stats_s {
0680 u32 del_itn_iocomp_aborted;
0681 u32 del_itn_iocomp_timedout;
0682 u32 del_itn_iocom_sqer_needed;
0683 u32 del_itn_iocom_res_free;
0684 u32 del_itn_iocom_hostabrts;
0685 u32 del_itn_total_ios;
0686 u32 del_io_iocdowns;
0687 u32 del_tm_iocdowns;
0688 };
0689
0690 struct bfa_itnim_iostats_s {
0691
0692 u32 total_ios;
0693 u32 input_reqs;
0694 u32 output_reqs;
0695 u32 io_comps;
0696 u32 wr_throughput;
0697 u32 rd_throughput;
0698
0699 u32 iocomp_ok;
0700 u32 iocomp_underrun;
0701 u32 iocomp_overrun;
0702 u32 qwait;
0703 u32 qresumes;
0704 u32 no_iotags;
0705 u32 iocomp_timedout;
0706 u32 iocom_nexus_abort;
0707 u32 iocom_proto_err;
0708 u32 iocom_dif_err;
0709
0710 u32 iocom_sqer_needed;
0711 u32 iocom_res_free;
0712
0713
0714 u32 io_aborts;
0715 u32 iocom_hostabrts;
0716 u32 io_cleanups;
0717 u32 path_tov_expired;
0718 u32 iocomp_aborted;
0719 u32 io_iocdowns;
0720 u32 iocom_utags;
0721
0722 u32 io_tmaborts;
0723 u32 tm_io_comps;
0724
0725 u32 creates;
0726 u32 fw_create;
0727 u32 create_comps;
0728 u32 onlines;
0729 u32 offlines;
0730 u32 fw_delete;
0731 u32 delete_comps;
0732 u32 deletes;
0733 u32 sler_events;
0734 u32 ioc_disabled;
0735 u32 cleanup_comps;
0736
0737 u32 tm_cmnds;
0738 u32 tm_fw_rsps;
0739 u32 tm_success;
0740 u32 tm_failures;
0741 u32 no_tskims;
0742 u32 tm_qwait;
0743 u32 tm_qresumes;
0744
0745 u32 tm_iocdowns;
0746 u32 tm_cleanups;
0747 u32 tm_cleanup_comps;
0748 u32 rsvd[6];
0749 };
0750
0751
0752 enum bfa_port_states {
0753 BFA_PORT_ST_UNINIT = 1,
0754 BFA_PORT_ST_ENABLING_QWAIT = 2,
0755 BFA_PORT_ST_ENABLING = 3,
0756 BFA_PORT_ST_LINKDOWN = 4,
0757 BFA_PORT_ST_LINKUP = 5,
0758 BFA_PORT_ST_DISABLING_QWAIT = 6,
0759 BFA_PORT_ST_DISABLING = 7,
0760 BFA_PORT_ST_DISABLED = 8,
0761 BFA_PORT_ST_STOPPED = 9,
0762 BFA_PORT_ST_IOCDOWN = 10,
0763 BFA_PORT_ST_IOCDIS = 11,
0764 BFA_PORT_ST_FWMISMATCH = 12,
0765 BFA_PORT_ST_PREBOOT_DISABLED = 13,
0766 BFA_PORT_ST_TOGGLING_QWAIT = 14,
0767 BFA_PORT_ST_FAA_MISCONFIG = 15,
0768 BFA_PORT_ST_DPORT = 16,
0769 BFA_PORT_ST_DDPORT = 17,
0770 BFA_PORT_ST_MAX_STATE,
0771 };
0772
0773
0774
0775
0776 enum bfa_port_type {
0777 BFA_PORT_TYPE_UNKNOWN = 1,
0778 BFA_PORT_TYPE_NPORT = 5,
0779 BFA_PORT_TYPE_NLPORT = 6,
0780 BFA_PORT_TYPE_LPORT = 20,
0781 BFA_PORT_TYPE_P2P = 21,
0782 BFA_PORT_TYPE_VPORT = 22,
0783 };
0784
0785
0786
0787
0788
0789 enum bfa_port_topology {
0790 BFA_PORT_TOPOLOGY_NONE = 0,
0791 BFA_PORT_TOPOLOGY_P2P_OLD_VER = 1,
0792 BFA_PORT_TOPOLOGY_LOOP = 2,
0793 BFA_PORT_TOPOLOGY_AUTO_OLD_VER = 3,
0794 BFA_PORT_TOPOLOGY_AUTO = 4,
0795 BFA_PORT_TOPOLOGY_P2P = 5,
0796 };
0797
0798
0799
0800
0801 enum bfa_port_opmode {
0802 BFA_PORT_OPMODE_NORMAL = 0x00,
0803 BFA_PORT_OPMODE_LB_INT = 0x01,
0804 BFA_PORT_OPMODE_LB_SLW = 0x02,
0805 BFA_PORT_OPMODE_LB_EXT = 0x04,
0806 BFA_PORT_OPMODE_LB_CBL = 0x08,
0807 BFA_PORT_OPMODE_LB_NLINT = 0x20,
0808 };
0809
0810 #define BFA_PORT_OPMODE_LB_HARD(_mode) \
0811 ((_mode == BFA_PORT_OPMODE_LB_INT) || \
0812 (_mode == BFA_PORT_OPMODE_LB_SLW) || \
0813 (_mode == BFA_PORT_OPMODE_LB_EXT))
0814
0815
0816
0817
0818 enum bfa_port_linkstate {
0819 BFA_PORT_LINKUP = 1,
0820 BFA_PORT_LINKDOWN = 2,
0821 };
0822
0823
0824
0825
0826 enum bfa_port_linkstate_rsn {
0827 BFA_PORT_LINKSTATE_RSN_NONE = 0,
0828 BFA_PORT_LINKSTATE_RSN_DISABLED = 1,
0829 BFA_PORT_LINKSTATE_RSN_RX_NOS = 2,
0830 BFA_PORT_LINKSTATE_RSN_RX_OLS = 3,
0831 BFA_PORT_LINKSTATE_RSN_RX_LIP = 4,
0832 BFA_PORT_LINKSTATE_RSN_RX_LIPF7 = 5,
0833 BFA_PORT_LINKSTATE_RSN_SFP_REMOVED = 6,
0834 BFA_PORT_LINKSTATE_RSN_PORT_FAULT = 7,
0835 BFA_PORT_LINKSTATE_RSN_RX_LOS = 8,
0836 BFA_PORT_LINKSTATE_RSN_LOCAL_FAULT = 9,
0837 BFA_PORT_LINKSTATE_RSN_REMOTE_FAULT = 10,
0838 BFA_PORT_LINKSTATE_RSN_TIMEOUT = 11,
0839 BFA_PORT_LINKSTATE_RSN_FAA_MISCONFIG = 12,
0840
0841
0842
0843
0844 CEE_LLDP_INFO_AGED_OUT = 20,
0845 CEE_LLDP_SHUTDOWN_TLV_RCVD = 21,
0846 CEE_PEER_NOT_ADVERTISE_DCBX = 22,
0847 CEE_PEER_NOT_ADVERTISE_PG = 23,
0848 CEE_PEER_NOT_ADVERTISE_PFC = 24,
0849 CEE_PEER_NOT_ADVERTISE_FCOE = 25,
0850 CEE_PG_NOT_COMPATIBLE = 26,
0851 CEE_PFC_NOT_COMPATIBLE = 27,
0852 CEE_FCOE_NOT_COMPATIBLE = 28,
0853 CEE_BAD_PG_RCVD = 29,
0854 CEE_BAD_BW_RCVD = 30,
0855 CEE_BAD_PFC_RCVD = 31,
0856 CEE_BAD_APP_PRI_RCVD = 32,
0857 CEE_FCOE_PRI_PFC_OFF = 33,
0858 CEE_DUP_CONTROL_TLV_RCVD = 34,
0859 CEE_DUP_FEAT_TLV_RCVD = 35,
0860 CEE_APPLY_NEW_CFG = 36,
0861 CEE_PROTOCOL_INIT = 37,
0862 CEE_PHY_LINK_DOWN = 38,
0863 CEE_LLS_FCOE_ABSENT = 39,
0864 CEE_LLS_FCOE_DOWN = 40,
0865 CEE_ISCSI_NOT_COMPATIBLE = 41,
0866 CEE_ISCSI_PRI_PFC_OFF = 42,
0867 CEE_ISCSI_PRI_OVERLAP_FCOE_PRI = 43
0868 };
0869
0870 #define MAX_LUN_MASK_CFG 16
0871
0872
0873
0874
0875
0876
0877
0878 enum bfa_ioim_lun_mask_state_s {
0879 BFA_IOIM_LUN_MASK_INACTIVE = 0,
0880 BFA_IOIM_LUN_MASK_ACTIVE = 1,
0881 BFA_IOIM_LUN_MASK_FETCHED = 2,
0882 };
0883
0884 enum bfa_lunmask_state_s {
0885 BFA_LUNMASK_DISABLED = 0x00,
0886 BFA_LUNMASK_ENABLED = 0x01,
0887 BFA_LUNMASK_MINCFG = 0x02,
0888 BFA_LUNMASK_UNINITIALIZED = 0xff,
0889 };
0890
0891
0892
0893
0894 enum bfa_fec_state_s {
0895 BFA_FEC_ONLINE = 1,
0896 BFA_FEC_OFFLINE = 2,
0897 BFA_FEC_OFFLINE_NOT_16G = 3,
0898 };
0899
0900 #pragma pack(1)
0901
0902
0903
0904 struct bfa_lun_mask_s {
0905 wwn_t lp_wwn;
0906 wwn_t rp_wwn;
0907 struct scsi_lun lun;
0908 u8 ua;
0909 u8 rsvd[3];
0910 u16 rp_tag;
0911 u8 lp_tag;
0912 u8 state;
0913 };
0914
0915 #define MAX_LUN_MASK_CFG 16
0916 struct bfa_lunmask_cfg_s {
0917 u32 status;
0918 u32 rsvd;
0919 struct bfa_lun_mask_s lun_list[MAX_LUN_MASK_CFG];
0920 };
0921
0922 struct bfa_throttle_cfg_s {
0923 u16 is_valid;
0924 u16 value;
0925 u32 rsvd;
0926 };
0927
0928 struct bfa_defs_fcpim_throttle_s {
0929 u16 max_value;
0930 u16 cur_value;
0931 u16 cfg_value;
0932 u16 rsvd;
0933 };
0934
0935 #define BFA_BB_SCN_DEF 3
0936 #define BFA_BB_SCN_MAX 0x0F
0937
0938
0939
0940
0941 struct bfa_port_cfg_s {
0942 u8 topology;
0943 u8 speed;
0944 u8 trunked;
0945 u8 qos_enabled;
0946 u8 cfg_hardalpa;
0947 u8 hardalpa;
0948 __be16 maxfrsize;
0949 u8 rx_bbcredit;
0950 u8 tx_bbcredit;
0951 u8 ratelimit;
0952 u8 trl_def_speed;
0953 u8 bb_cr_enabled;
0954 u8 bb_scn;
0955 u8 faa_state;
0956 u8 rsvd1;
0957 u16 path_tov;
0958 u16 q_depth;
0959 struct bfa_qos_bw_s qos_bw;
0960 };
0961 #pragma pack()
0962
0963
0964
0965
0966 struct bfa_port_attr_s {
0967
0968
0969
0970 wwn_t nwwn;
0971 wwn_t pwwn;
0972 wwn_t factorynwwn;
0973 wwn_t factorypwwn;
0974 enum fc_cos cos_supported;
0975
0976 u32 rsvd;
0977 struct fc_symname_s port_symname;
0978 enum bfa_port_speed speed_supported;
0979 bfa_boolean_t pbind_enabled;
0980
0981
0982
0983
0984 struct bfa_port_cfg_s pport_cfg;
0985
0986
0987
0988
0989 enum bfa_port_states port_state;
0990 enum bfa_port_speed speed;
0991 enum bfa_port_topology topology;
0992 bfa_boolean_t beacon;
0993 bfa_boolean_t link_e2e_beacon;
0994 bfa_boolean_t bbsc_op_status;
0995
0996 enum bfa_fec_state_s fec_state;
0997
0998
0999
1000
1001 u32 pid;
1002 enum bfa_port_type port_type;
1003 u32 loopback;
1004 u32 authfail;
1005
1006
1007 u16 fcoe_vlan;
1008 u8 rsvd1[2];
1009 };
1010
1011
1012
1013
1014 struct bfa_port_fcpmap_s {
1015 char osdevname[256];
1016 u32 bus;
1017 u32 target;
1018 u32 oslun;
1019 u32 fcid;
1020 wwn_t nwwn;
1021 wwn_t pwwn;
1022 u64 fcplun;
1023 char luid[256];
1024 };
1025
1026
1027
1028
1029 struct bfa_port_rnid_s {
1030 wwn_t wwn;
1031 u32 unittype;
1032 u32 portid;
1033 u32 attached_nodes_num;
1034 u16 ip_version;
1035 u16 udp_port;
1036 u8 ipaddr[16];
1037 u16 rsvd;
1038 u16 topologydiscoveryflags;
1039 };
1040
1041 #pragma pack(1)
1042 struct bfa_fcport_fcf_s {
1043 wwn_t name;
1044 wwn_t fabric_name;
1045 u8 fipenabled;
1046 u8 fipfailed;
1047 u8 resv[2];
1048 u8 pri;
1049 u8 version;
1050 u8 available;
1051 u8 fka_disabled;
1052 u8 maxsz_verified;
1053 u8 fc_map[3];
1054 __be16 vlan;
1055 u32 fka_adv_per;
1056 mac_t mac;
1057 };
1058
1059
1060
1061
1062 enum bfa_trunk_state {
1063 BFA_TRUNK_DISABLED = 0,
1064 BFA_TRUNK_ONLINE = 1,
1065 BFA_TRUNK_OFFLINE = 2,
1066 };
1067
1068
1069
1070
1071 struct bfa_trunk_vc_attr_s {
1072 u32 bb_credit;
1073 u32 elp_opmode_flags;
1074 u32 req_credit;
1075 u16 vc_credits[8];
1076 };
1077
1078 struct bfa_fcport_loop_info_s {
1079 u8 myalpa;
1080 u8 alpabm_val;
1081 u8 resvd[6];
1082 struct fc_alpabm_s alpabm;
1083 };
1084
1085
1086
1087
1088 struct bfa_port_link_s {
1089 u8 linkstate;
1090 u8 linkstate_rsn;
1091 u8 topology;
1092 u8 speed;
1093 u32 linkstate_opt;
1094 u8 trunked;
1095 u8 fec_state;
1096 u8 resvd[6];
1097 struct bfa_qos_attr_s qos_attr;
1098 union {
1099 struct bfa_fcport_loop_info_s loop_info;
1100 struct bfa_bbcr_attr_s bbcr_attr;
1101 union {
1102 struct bfa_qos_vc_attr_s qos_vc_attr;
1103
1104 struct bfa_trunk_vc_attr_s trunk_vc_attr;
1105 struct bfa_fcport_fcf_s fcf;
1106
1107 } vc_fcf;
1108 } attr;
1109 };
1110 #pragma pack()
1111
1112 enum bfa_trunk_link_fctl {
1113 BFA_TRUNK_LINK_FCTL_NORMAL,
1114 BFA_TRUNK_LINK_FCTL_VC,
1115 BFA_TRUNK_LINK_FCTL_VC_QOS,
1116 };
1117
1118 enum bfa_trunk_link_state {
1119 BFA_TRUNK_LINK_STATE_UP = 1,
1120 BFA_TRUNK_LINK_STATE_DN_LINKDN = 2,
1121 BFA_TRUNK_LINK_STATE_DN_GRP_MIS = 3,
1122 BFA_TRUNK_LINK_STATE_DN_SPD_MIS = 4,
1123 BFA_TRUNK_LINK_STATE_DN_MODE_MIS = 5,
1124 };
1125
1126 #define BFA_TRUNK_MAX_PORTS 2
1127 struct bfa_trunk_link_attr_s {
1128 wwn_t trunk_wwn;
1129 enum bfa_trunk_link_fctl fctl;
1130 enum bfa_trunk_link_state link_state;
1131 enum bfa_port_speed speed;
1132 u32 deskew;
1133 };
1134
1135 struct bfa_trunk_attr_s {
1136 enum bfa_trunk_state state;
1137 enum bfa_port_speed speed;
1138 u32 port_id;
1139 u32 rsvd;
1140 struct bfa_trunk_link_attr_s link_attr[BFA_TRUNK_MAX_PORTS];
1141 };
1142
1143 struct bfa_rport_hal_stats_s {
1144 u32 sm_un_cr;
1145 u32 sm_un_unexp;
1146 u32 sm_cr_on;
1147 u32 sm_cr_del;
1148 u32 sm_cr_hwf;
1149 u32 sm_cr_unexp;
1150 u32 sm_fwc_rsp;
1151 u32 sm_fwc_del;
1152 u32 sm_fwc_off;
1153 u32 sm_fwc_hwf;
1154 u32 sm_fwc_unexp;
1155 u32 sm_on_off;
1156 u32 sm_on_del;
1157 u32 sm_on_hwf;
1158 u32 sm_on_unexp;
1159 u32 sm_fwd_rsp;
1160 u32 sm_fwd_del;
1161 u32 sm_fwd_hwf;
1162 u32 sm_fwd_unexp;
1163 u32 sm_off_del;
1164 u32 sm_off_on;
1165 u32 sm_off_hwf;
1166 u32 sm_off_unexp;
1167 u32 sm_del_fwrsp;
1168 u32 sm_del_hwf;
1169 u32 sm_del_unexp;
1170 u32 sm_delp_fwrsp;
1171 u32 sm_delp_hwf;
1172 u32 sm_delp_unexp;
1173 u32 sm_offp_fwrsp;
1174 u32 sm_offp_del;
1175 u32 sm_offp_hwf;
1176 u32 sm_offp_unexp;
1177 u32 sm_iocd_off;
1178 u32 sm_iocd_del;
1179 u32 sm_iocd_on;
1180 u32 sm_iocd_unexp;
1181 u32 rsvd;
1182 };
1183 #pragma pack(1)
1184
1185
1186
1187 struct bfa_rport_qos_attr_s {
1188 u8 qos_priority;
1189 u8 rsvd[3];
1190 u32 qos_flow_id;
1191 };
1192 #pragma pack()
1193
1194 #define BFA_IOBUCKET_MAX 14
1195
1196 struct bfa_itnim_latency_s {
1197 u32 min[BFA_IOBUCKET_MAX];
1198 u32 max[BFA_IOBUCKET_MAX];
1199 u32 count[BFA_IOBUCKET_MAX];
1200 u32 avg[BFA_IOBUCKET_MAX];
1201 };
1202
1203 struct bfa_itnim_ioprofile_s {
1204 u32 clock_res_mul;
1205 u32 clock_res_div;
1206 u32 index;
1207 u32 io_profile_start_time;
1208 u32 iocomps[BFA_IOBUCKET_MAX];
1209 struct bfa_itnim_latency_s io_latency;
1210 };
1211
1212
1213
1214
1215 struct bfa_vhba_attr_s {
1216 wwn_t nwwn;
1217 wwn_t pwwn;
1218 u32 pid;
1219 bfa_boolean_t io_profile;
1220 bfa_boolean_t plog_enabled;
1221 u16 path_tov;
1222 u8 rsvd[2];
1223 };
1224
1225
1226
1227
1228 struct bfa_port_fc_stats_s {
1229 u64 secs_reset;
1230 u64 tx_frames;
1231 u64 tx_words;
1232 u64 tx_lip;
1233 u64 tx_lip_f7f7;
1234 u64 tx_lip_f8f7;
1235 u64 tx_arbf0;
1236 u64 tx_nos;
1237 u64 tx_ols;
1238 u64 tx_lr;
1239 u64 tx_lrr;
1240 u64 rx_frames;
1241 u64 rx_words;
1242 u64 lip_count;
1243 u64 rx_lip_f7f7;
1244 u64 rx_lip_f8f7;
1245 u64 rx_arbf0;
1246 u64 nos_count;
1247 u64 ols_count;
1248 u64 lr_count;
1249 u64 lrr_count;
1250 u64 invalid_crcs;
1251 u64 invalid_crc_gd_eof;
1252 u64 undersized_frm;
1253 u64 oversized_frm;
1254 u64 bad_eof_frm;
1255 u64 error_frames;
1256 u64 dropped_frames;
1257 u64 link_failures;
1258 u64 loss_of_syncs;
1259 u64 loss_of_signals;
1260 u64 primseq_errs;
1261 u64 bad_os_count;
1262 u64 err_enc_out;
1263 u64 err_enc;
1264 u64 bbcr_frames_lost;
1265 u64 bbcr_rrdys_lost;
1266 u64 bbcr_link_resets;
1267 u64 bbcr_frame_lost_intrs;
1268 u64 bbcr_rrdy_lost_intrs;
1269 u64 loop_timeouts;
1270 };
1271
1272
1273
1274
1275 struct bfa_port_eth_stats_s {
1276 u64 secs_reset;
1277 u64 frame_64;
1278 u64 frame_65_127;
1279 u64 frame_128_255;
1280 u64 frame_256_511;
1281 u64 frame_512_1023;
1282 u64 frame_1024_1518;
1283 u64 frame_1519_1522;
1284 u64 tx_bytes;
1285 u64 tx_packets;
1286 u64 tx_mcast_packets;
1287 u64 tx_bcast_packets;
1288 u64 tx_control_frame;
1289 u64 tx_drop;
1290 u64 tx_jabber;
1291 u64 tx_fcs_error;
1292 u64 tx_fragments;
1293 u64 rx_bytes;
1294 u64 rx_packets;
1295 u64 rx_mcast_packets;
1296 u64 rx_bcast_packets;
1297 u64 rx_control_frames;
1298 u64 rx_unknown_opcode;
1299 u64 rx_drop;
1300 u64 rx_jabber;
1301 u64 rx_fcs_error;
1302 u64 rx_alignment_error;
1303 u64 rx_frame_length_error;
1304 u64 rx_code_error;
1305 u64 rx_fragments;
1306 u64 rx_pause;
1307 u64 rx_zero_pause;
1308 u64 tx_pause;
1309 u64 tx_zero_pause;
1310 u64 rx_fcoe_pause;
1311 u64 rx_fcoe_zero_pause;
1312 u64 tx_fcoe_pause;
1313 u64 tx_fcoe_zero_pause;
1314 u64 rx_iscsi_pause;
1315 u64 rx_iscsi_zero_pause;
1316 u64 tx_iscsi_pause;
1317 u64 tx_iscsi_zero_pause;
1318 };
1319
1320
1321
1322
1323 union bfa_port_stats_u {
1324 struct bfa_port_fc_stats_s fc;
1325 struct bfa_port_eth_stats_s eth;
1326 };
1327
1328 struct bfa_port_cfg_mode_s {
1329 u16 max_pf;
1330 u16 max_vf;
1331 enum bfa_mode_s mode;
1332 };
1333
1334 #pragma pack(1)
1335
1336 #define BFA_CEE_LLDP_MAX_STRING_LEN (128)
1337 #define BFA_CEE_DCBX_MAX_PRIORITY (8)
1338 #define BFA_CEE_DCBX_MAX_PGID (8)
1339
1340 struct bfa_cee_lldp_str_s {
1341 u8 sub_type;
1342 u8 len;
1343 u8 rsvd[2];
1344 u8 value[BFA_CEE_LLDP_MAX_STRING_LEN];
1345 };
1346
1347 struct bfa_cee_lldp_cfg_s {
1348 struct bfa_cee_lldp_str_s chassis_id;
1349 struct bfa_cee_lldp_str_s port_id;
1350 struct bfa_cee_lldp_str_s port_desc;
1351 struct bfa_cee_lldp_str_s sys_name;
1352 struct bfa_cee_lldp_str_s sys_desc;
1353 struct bfa_cee_lldp_str_s mgmt_addr;
1354 u16 time_to_live;
1355 u16 enabled_system_cap;
1356 };
1357
1358
1359 struct bfa_cee_dcbx_cfg_s {
1360 u8 pgid[BFA_CEE_DCBX_MAX_PRIORITY];
1361 u8 pg_percentage[BFA_CEE_DCBX_MAX_PGID];
1362 u8 pfc_primap;
1363 u8 fcoe_primap;
1364 u8 iscsi_primap;
1365 u8 dcbx_version;
1366 u8 lls_fcoe;
1367 u8 lls_lan;
1368 u8 rsvd[2];
1369 };
1370
1371
1372 struct bfa_cee_attr_s {
1373 u8 cee_status;
1374 u8 error_reason;
1375 struct bfa_cee_lldp_cfg_s lldp_remote;
1376 struct bfa_cee_dcbx_cfg_s dcbx_remote;
1377 mac_t src_mac;
1378 u8 link_speed;
1379 u8 nw_priority;
1380 u8 filler[2];
1381 };
1382
1383
1384 struct bfa_cee_stats_s {
1385 u32 lldp_tx_frames;
1386 u32 lldp_rx_frames;
1387 u32 lldp_rx_frames_invalid;
1388 u32 lldp_rx_frames_new;
1389 u32 lldp_tlvs_unrecognized;
1390 u32 lldp_rx_shutdown_tlvs;
1391 u32 lldp_info_aged_out;
1392 u32 dcbx_phylink_ups;
1393 u32 dcbx_phylink_downs;
1394 u32 dcbx_rx_tlvs;
1395 u32 dcbx_rx_tlvs_invalid;
1396 u32 dcbx_control_tlv_error;
1397 u32 dcbx_feature_tlv_error;
1398 u32 dcbx_cee_cfg_new;
1399 u32 cee_status_down;
1400 u32 cee_status_up;
1401 u32 cee_hw_cfg_changed;
1402 u32 cee_rx_invalid_cfg;
1403 };
1404
1405 #pragma pack()
1406
1407
1408
1409
1410 #define BFAD_NL_VENDOR_ID (((u64)0x01 << SCSI_NL_VID_TYPE_SHIFT) \
1411 | BFA_PCI_VENDOR_ID_BROCADE)
1412
1413
1414 enum bfa_rport_aen_event {
1415 BFA_RPORT_AEN_ONLINE = 1,
1416 BFA_RPORT_AEN_OFFLINE = 2,
1417 BFA_RPORT_AEN_DISCONNECT = 3,
1418 BFA_RPORT_AEN_QOS_PRIO = 4,
1419 BFA_RPORT_AEN_QOS_FLOWID = 5,
1420 };
1421
1422 struct bfa_rport_aen_data_s {
1423 u16 vf_id;
1424 u16 rsvd[3];
1425 wwn_t ppwwn;
1426 wwn_t lpwwn;
1427 wwn_t rpwwn;
1428 union {
1429 struct bfa_rport_qos_attr_s qos;
1430 } priv;
1431 };
1432
1433 union bfa_aen_data_u {
1434 struct bfa_adapter_aen_data_s adapter;
1435 struct bfa_port_aen_data_s port;
1436 struct bfa_lport_aen_data_s lport;
1437 struct bfa_rport_aen_data_s rport;
1438 struct bfa_itnim_aen_data_s itnim;
1439 struct bfa_audit_aen_data_s audit;
1440 struct bfa_ioc_aen_data_s ioc;
1441 };
1442
1443 #define BFA_AEN_MAX_ENTRY 512
1444
1445 struct bfa_aen_entry_s {
1446 struct list_head qe;
1447 enum bfa_aen_category aen_category;
1448 int aen_type;
1449 union bfa_aen_data_u aen_data;
1450 u64 aen_tv_sec;
1451 u64 aen_tv_usec;
1452 u32 seq_num;
1453 u32 bfad_num;
1454 };
1455
1456 #endif