1457 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.4 * Copyright (c) 2014- QLogic Corporation.5 * All rights reserved6 * www.qlogic.com7 *8 * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.9 */10 11#ifndef __BFA_DEFS_SVC_H__12#define __BFA_DEFS_SVC_H__13 14#include "bfa_defs.h"15#include "bfa_fc.h"16#include "bfi.h"17 18#define BFA_IOCFC_INTR_DELAY 112519#define BFA_IOCFC_INTR_LATENCY 22520#define BFA_IOCFCOE_INTR_DELAY 2521#define BFA_IOCFCOE_INTR_LATENCY 522 23/*24 * Interrupt coalescing configuration.25 */26#pragma pack(1)27struct bfa_iocfc_intr_attr_s {28 u8 coalesce; /* enable/disable coalescing */29 u8 rsvd[3];30 __be16 latency; /* latency in microseconds */31 __be16 delay; /* delay in microseconds */32};33 34/*35 * IOC firmware configuraton36 */37struct bfa_iocfc_fwcfg_s {38 u16 num_fabrics; /* number of fabrics */39 u16 num_lports; /* number of local lports */40 u16 num_rports; /* number of remote ports */41 u16 num_ioim_reqs; /* number of IO reqs */42 u16 num_tskim_reqs; /* task management requests */43 u16 num_fwtio_reqs; /* number of TM IO reqs in FW */44 u16 num_fcxp_reqs; /* unassisted FC exchanges */45 u16 num_uf_bufs; /* unsolicited recv buffers */46 u8 num_cqs;47 u8 fw_tick_res; /* FW clock resolution in ms */48 u8 rsvd[6];49};50#pragma pack()51 52struct bfa_iocfc_drvcfg_s {53 u16 num_reqq_elems; /* number of req queue elements */54 u16 num_rspq_elems; /* number of rsp queue elements */55 u16 num_sgpgs; /* number of total SG pages */56 u16 num_sboot_tgts; /* number of SAN boot targets */57 u16 num_sboot_luns; /* number of SAN boot luns */58 u16 ioc_recover; /* IOC recovery mode */59 u16 min_cfg; /* minimum configuration */60 u16 path_tov; /* device path timeout */61 u16 num_tio_reqs; /* number of TM IO reqs */62 u8 port_mode;63 u8 rsvd_a;64 bfa_boolean_t delay_comp; /* delay completion of failed65 * inflight IOs */66 u16 num_ttsk_reqs; /* TM task management requests */67 u32 rsvd;68};69 70/*71 * IOC configuration72 */73struct bfa_iocfc_cfg_s {74 struct bfa_iocfc_fwcfg_s fwcfg; /* firmware side config */75 struct bfa_iocfc_drvcfg_s drvcfg; /* driver side config */76};77 78/*79 * IOC firmware IO stats80 */81struct bfa_fw_ioim_stats_s {82 u32 host_abort; /* IO aborted by host driver*/83 u32 host_cleanup; /* IO clean up by host driver */84 85 u32 fw_io_timeout; /* IOs timedout */86 u32 fw_frm_parse; /* frame parsed by f/w */87 u32 fw_frm_data; /* fcp_data frame parsed by f/w */88 u32 fw_frm_rsp; /* fcp_rsp frame parsed by f/w */89 u32 fw_frm_xfer_rdy; /* xfer_rdy frame parsed by f/w */90 u32 fw_frm_bls_acc; /* BLS ACC frame parsed by f/w */91 u32 fw_frm_tgt_abort; /* target ABTS parsed by f/w */92 u32 fw_frm_unknown; /* unknown parsed by f/w */93 u32 fw_data_dma; /* f/w DMA'ed the data frame */94 u32 fw_frm_drop; /* f/w drop the frame */95 96 u32 rec_timeout; /* FW rec timed out */97 u32 error_rec; /* FW sending rec on98 * an error condition*/99 u32 wait_for_si; /* FW wait for SI */100 u32 rec_rsp_inval; /* REC rsp invalid */101 u32 rec_rsp_xchg_comp; /* REC rsp xchg complete */102 u32 rec_rsp_rd_si_ownd; /* REC rsp read si owned */103 104 u32 seqr_io_abort; /* target does not know cmd so abort */105 u32 seqr_io_retry; /* SEQR failed so retry IO */106 107 u32 itn_cisc_upd_rsp; /* ITN cisc updated on fcp_rsp */108 u32 itn_cisc_upd_data; /* ITN cisc updated on fcp_data */109 u32 itn_cisc_upd_xfer_rdy; /* ITN cisc updated on fcp_data */110 111 u32 fcp_data_lost; /* fcp data lost */112 113 u32 ro_set_in_xfer_rdy; /* Target set RO in Xfer_rdy frame */114 u32 xfer_rdy_ooo_err; /* Out of order Xfer_rdy received */115 u32 xfer_rdy_unknown_err; /* unknown error in xfer_rdy frame */116 117 u32 io_abort_timeout; /* ABTS timedout */118 u32 sler_initiated; /* SLER initiated */119 120 u32 unexp_fcp_rsp; /* fcp response in wrong state */121 122 u32 fcp_rsp_under_run; /* fcp rsp IO underrun */123 u32 fcp_rsp_under_run_wr; /* fcp rsp IO underrun for write */124 u32 fcp_rsp_under_run_err; /* fcp rsp IO underrun error */125 u32 fcp_rsp_resid_inval; /* invalid residue */126 u32 fcp_rsp_over_run; /* fcp rsp IO overrun */127 u32 fcp_rsp_over_run_err; /* fcp rsp IO overrun error */128 u32 fcp_rsp_proto_err; /* protocol error in fcp rsp */129 u32 fcp_rsp_sense_err; /* error in sense info in fcp rsp */130 u32 fcp_conf_req; /* FCP conf requested */131 132 u32 tgt_aborted_io; /* target initiated abort */133 134 u32 ioh_edtov_timeout_event;/* IOH edtov timer popped */135 u32 ioh_fcp_rsp_excp_event; /* IOH FCP_RSP exception */136 u32 ioh_fcp_conf_event; /* IOH FCP_CONF */137 u32 ioh_mult_frm_rsp_event; /* IOH multi_frame FCP_RSP */138 u32 ioh_hit_class2_event; /* IOH hit class2 */139 u32 ioh_miss_other_event; /* IOH miss other */140 u32 ioh_seq_cnt_err_event; /* IOH seq cnt error */141 u32 ioh_len_err_event; /* IOH len error - fcp_dl !=142 * bytes xfered */143 u32 ioh_seq_len_err_event; /* IOH seq len error */144 u32 ioh_data_oor_event; /* Data out of range */145 u32 ioh_ro_ooo_event; /* Relative offset out of range */146 u32 ioh_cpu_owned_event; /* IOH hit -iost owned by f/w */147 u32 ioh_unexp_frame_event; /* unexpected frame received148 * count */149 u32 ioh_err_int; /* IOH error int during data-phase150 * for scsi write */151};152 153struct bfa_fw_tio_stats_s {154 u32 tio_conf_proc; /* TIO CONF processed */155 u32 tio_conf_drop; /* TIO CONF dropped */156 u32 tio_cleanup_req; /* TIO cleanup requested */157 u32 tio_cleanup_comp; /* TIO cleanup completed */158 u32 tio_abort_rsp; /* TIO abort response */159 u32 tio_abort_rsp_comp; /* TIO abort rsp completed */160 u32 tio_abts_req; /* TIO ABTS requested */161 u32 tio_abts_ack; /* TIO ABTS ack-ed */162 u32 tio_abts_ack_nocomp;/* TIO ABTS ack-ed but not completed */163 u32 tio_abts_tmo; /* TIO ABTS timeout */164 u32 tio_snsdata_dma; /* TIO sense data DMA */165 u32 tio_rxwchan_wait; /* TIO waiting for RX wait channel */166 u32 tio_rxwchan_avail; /* TIO RX wait channel available */167 u32 tio_hit_bls; /* TIO IOH BLS event */168 u32 tio_uf_recv; /* TIO received UF */169 u32 tio_rd_invalid_sm; /* TIO read reqst in wrong state machine */170 u32 tio_wr_invalid_sm; /* TIO write reqst in wrong state machine */171 172 u32 ds_rxwchan_wait; /* DS waiting for RX wait channel */173 u32 ds_rxwchan_avail; /* DS RX wait channel available */174 u32 ds_unaligned_rd; /* DS unaligned read */175 u32 ds_rdcomp_invalid_sm; /* DS read completed in wrong state176 * machine */177 u32 ds_wrcomp_invalid_sm; /* DS write completed in wrong state178 * machine */179 u32 ds_flush_req; /* DS flush requested */180 u32 ds_flush_comp; /* DS flush completed */181 u32 ds_xfrdy_exp; /* DS XFER_RDY expired */182 u32 ds_seq_cnt_err; /* DS seq cnt error */183 u32 ds_seq_len_err; /* DS seq len error */184 u32 ds_data_oor; /* DS data out of order */185 u32 ds_hit_bls; /* DS hit BLS */186 u32 ds_edtov_timer_exp; /* DS edtov expired */187 u32 ds_cpu_owned; /* DS cpu owned */188 u32 ds_hit_class2; /* DS hit class2 */189 u32 ds_length_err; /* DS length error */190 u32 ds_ro_ooo_err; /* DS relative offset out-of-order error */191 u32 ds_rectov_timer_exp;/* DS rectov expired */192 u32 ds_unexp_fr_err; /* DS unexp frame error */193};194 195/*196 * IOC firmware IO stats197 */198struct bfa_fw_io_stats_s {199 struct bfa_fw_ioim_stats_s ioim_stats;200 struct bfa_fw_tio_stats_s tio_stats;201};202 203/*204 * IOC port firmware stats205 */206 207struct bfa_fw_port_fpg_stats_s {208 u32 intr_evt;209 u32 intr;210 u32 intr_excess;211 u32 intr_cause0;212 u32 intr_other;213 u32 intr_other_ign;214 u32 sig_lost;215 u32 sig_regained;216 u32 sync_lost;217 u32 sync_to;218 u32 sync_regained;219 u32 div2_overflow;220 u32 div2_underflow;221 u32 efifo_overflow;222 u32 efifo_underflow;223 u32 idle_rx;224 u32 lrr_rx;225 u32 lr_rx;226 u32 ols_rx;227 u32 nos_rx;228 u32 lip_rx;229 u32 arbf0_rx;230 u32 arb_rx;231 u32 mrk_rx;232 u32 const_mrk_rx;233 u32 prim_unknown;234};235 236 237struct bfa_fw_port_lksm_stats_s {238 u32 hwsm_success; /* hwsm state machine success */239 u32 hwsm_fails; /* hwsm fails */240 u32 hwsm_wdtov; /* hwsm timed out */241 u32 swsm_success; /* swsm success */242 u32 swsm_fails; /* swsm fails */243 u32 swsm_wdtov; /* swsm timed out */244 u32 busybufs; /* link init failed due to busybuf */245 u32 buf_waits; /* bufwait state entries */246 u32 link_fails; /* link failures */247 u32 psp_errors; /* primitive sequence protocol errors */248 u32 lr_unexp; /* No. of times LR rx-ed unexpectedly */249 u32 lrr_unexp; /* No. of times LRR rx-ed unexpectedly */250 u32 lr_tx; /* No. of times LR tx started */251 u32 lrr_tx; /* No. of times LRR tx started */252 u32 ols_tx; /* No. of times OLS tx started */253 u32 nos_tx; /* No. of times NOS tx started */254 u32 hwsm_lrr_rx; /* No. of times LRR rx-ed by HWSM */255 u32 hwsm_lr_rx; /* No. of times LR rx-ed by HWSM */256};257 258struct bfa_fw_port_snsm_stats_s {259 u32 hwsm_success; /* Successful hwsm terminations */260 u32 hwsm_fails; /* hwsm fail count */261 u32 hwsm_wdtov; /* hwsm timed out */262 u32 swsm_success; /* swsm success */263 u32 swsm_wdtov; /* swsm timed out */264 u32 error_resets; /* error resets initiated by upsm */265 u32 sync_lost; /* Sync loss count */266 u32 sig_lost; /* Signal loss count */267 u32 asn8g_attempts; /* SNSM HWSM at 8Gbps attempts */268 u32 adapt_success; /* SNSM adaptation success */269 u32 adapt_fails; /* SNSM adaptation failures */270 u32 adapt_ign_fails; /* SNSM adaptation failures ignored */271};272 273struct bfa_fw_port_physm_stats_s {274 u32 module_inserts; /* Module insert count */275 u32 module_xtracts; /* Module extracts count */276 u32 module_invalids; /* Invalid module inserted count */277 u32 module_read_ign; /* Module validation status ignored */278 u32 laser_faults; /* Laser fault count */279 u32 rsvd;280};281 282struct bfa_fw_fip_stats_s {283 u32 vlan_req; /* vlan discovery requests */284 u32 vlan_notify; /* vlan notifications */285 u32 vlan_err; /* vlan response error */286 u32 vlan_timeouts; /* vlan disvoery timeouts */287 u32 vlan_invalids; /* invalid vlan in discovery advert. */288 u32 disc_req; /* Discovery solicit requests */289 u32 disc_rsp; /* Discovery solicit response */290 u32 disc_err; /* Discovery advt. parse errors */291 u32 disc_unsol; /* Discovery unsolicited */292 u32 disc_timeouts; /* Discovery timeouts */293 u32 disc_fcf_unavail; /* Discovery FCF Not Avail. */294 u32 linksvc_unsupp; /* Unsupported link service req */295 u32 linksvc_err; /* Parse error in link service req */296 u32 logo_req; /* FIP logos received */297 u32 clrvlink_req; /* Clear virtual link req */298 u32 op_unsupp; /* Unsupported FIP operation */299 u32 untagged; /* Untagged frames (ignored) */300 u32 invalid_version; /* Invalid FIP version */301};302 303struct bfa_fw_lps_stats_s {304 u32 mac_invalids; /* Invalid mac assigned */305 u32 rsvd;306};307 308struct bfa_fw_fcoe_stats_s {309 u32 cee_linkups; /* CEE link up count */310 u32 cee_linkdns; /* CEE link down count */311 u32 fip_linkups; /* FIP link up count */312 u32 fip_linkdns; /* FIP link up count */313 u32 fip_fails; /* FIP fail count */314 u32 mac_invalids; /* Invalid mac assigned */315};316 317/*318 * IOC firmware FCoE port stats319 */320struct bfa_fw_fcoe_port_stats_s {321 struct bfa_fw_fcoe_stats_s fcoe_stats;322 struct bfa_fw_fip_stats_s fip_stats;323};324 325/**326 * @brief LPSM statistics327 */328struct bfa_fw_lpsm_stats_s {329 u32 cls_rx; /* LPSM cls_rx */330 u32 cls_tx; /* LPSM cls_tx */331 u32 arbf0_rx; /* LPSM abrf0 rcvd */332 u32 arbf0_tx; /* LPSM abrf0 xmit */333 u32 init_rx; /* LPSM loop init start */334 u32 unexp_hwst; /* LPSM unknown hw state */335 u32 unexp_frame; /* LPSM unknown_frame */336 u32 unexp_prim; /* LPSM unexpected primitive */337 u32 prev_alpa_unavail; /* LPSM prev alpa unavailable */338 u32 alpa_unavail; /* LPSM alpa not available */339 u32 lip_rx; /* LPSM lip rcvd */340 u32 lip_f7f7_rx; /* LPSM lip f7f7 rcvd */341 u32 lip_f8_rx; /* LPSM lip f8 rcvd */342 u32 lip_f8f7_rx; /* LPSM lip f8f7 rcvd */343 u32 lip_other_rx; /* LPSM lip other rcvd */344 u32 lip_tx; /* LPSM lip xmit */345 u32 retry_tov; /* LPSM retry TOV */346 u32 lip_tov; /* LPSM LIP wait TOV */347 u32 idle_tov; /* LPSM idle wait TOV */348 u32 arbf0_tov; /* LPSM arbfo wait TOV */349 u32 stop_loop_tov; /* LPSM stop loop wait TOV */350 u32 lixa_tov; /* LPSM lisa wait TOV */351 u32 lixx_tov; /* LPSM lilp/lirp wait TOV */352 u32 cls_tov; /* LPSM cls wait TOV */353 u32 sler; /* LPSM SLER recvd */354 u32 failed; /* LPSM failed */355 u32 success; /* LPSM online */356};357 358/*359 * IOC firmware FC uport stats360 */361struct bfa_fw_fc_uport_stats_s {362 struct bfa_fw_port_snsm_stats_s snsm_stats;363 struct bfa_fw_port_lksm_stats_s lksm_stats;364 struct bfa_fw_lpsm_stats_s lpsm_stats;365};366 367/*368 * IOC firmware FC port stats369 */370union bfa_fw_fc_port_stats_s {371 struct bfa_fw_fc_uport_stats_s fc_stats;372 struct bfa_fw_fcoe_port_stats_s fcoe_stats;373};374 375/*376 * IOC firmware port stats377 */378struct bfa_fw_port_stats_s {379 struct bfa_fw_port_fpg_stats_s fpg_stats;380 struct bfa_fw_port_physm_stats_s physm_stats;381 union bfa_fw_fc_port_stats_s fc_port;382};383 384/*385 * fcxchg module statistics386 */387struct bfa_fw_fcxchg_stats_s {388 u32 ua_tag_inv;389 u32 ua_state_inv;390};391 392/*393 * Trunk statistics394 */395struct bfa_fw_trunk_stats_s {396 u32 emt_recvd; /* Trunk EMT received */397 u32 emt_accepted; /* Trunk EMT Accepted */398 u32 emt_rejected; /* Trunk EMT rejected */399 u32 etp_recvd; /* Trunk ETP received */400 u32 etp_accepted; /* Trunk ETP Accepted */401 u32 etp_rejected; /* Trunk ETP rejected */402 u32 lr_recvd; /* Trunk LR received */403 u32 rsvd; /* padding for 64 bit alignment */404};405 406struct bfa_fw_aport_stats_s {407 u32 flogi_sent; /* Flogi sent */408 u32 flogi_acc_recvd; /* Flogi Acc received */409 u32 flogi_rjt_recvd; /* Flogi rejects received */410 u32 flogi_retries; /* Flogi retries */411 412 u32 elp_recvd; /* ELP received */413 u32 elp_accepted; /* ELP Accepted */414 u32 elp_rejected; /* ELP rejected */415 u32 elp_dropped; /* ELP dropped */416 417 u32 bbcr_lr_count; /*!< BBCR Link Resets */418 u32 frame_lost_intrs; /*!< BBCR Frame loss intrs */419 u32 rrdy_lost_intrs; /*!< BBCR Rrdy loss intrs */420 421 u32 rsvd;422};423 424/*425 * IOCFC firmware stats426 */427struct bfa_fw_iocfc_stats_s {428 u32 cfg_reqs; /* cfg request */429 u32 updq_reqs; /* update queue request */430 u32 ic_reqs; /* interrupt coalesce reqs */431 u32 unknown_reqs;432 u32 set_intr_reqs; /* set interrupt reqs */433};434 435/*436 * IOC attributes returned in queries437 */438struct bfa_iocfc_attr_s {439 struct bfa_iocfc_cfg_s config; /* IOCFC config */440 struct bfa_iocfc_intr_attr_s intr_attr; /* interrupt attr */441};442 443/*444 * Eth_sndrcv mod stats445 */446struct bfa_fw_eth_sndrcv_stats_s {447 u32 crc_err;448 u32 rsvd; /* 64bit align */449};450 451/*452 * CT MAC mod stats453 */454struct bfa_fw_mac_mod_stats_s {455 u32 mac_on; /* MAC got turned-on */456 u32 link_up; /* link-up */457 u32 signal_off; /* lost signal */458 u32 dfe_on; /* DFE on */459 u32 mac_reset; /* # of MAC reset to bring lnk up */460 u32 pcs_reset; /* # of PCS reset to bring lnk up */461 u32 loopback; /* MAC got into serdes loopback */462 u32 lb_mac_reset;463 /* # of MAC reset to bring link up in loopback */464 u32 lb_pcs_reset;465 /* # of PCS reset to bring link up in loopback */466 u32 rsvd; /* 64bit align */467};468 469/*470 * CT MOD stats471 */472struct bfa_fw_ct_mod_stats_s {473 u32 rxa_rds_undrun; /* RxA RDS underrun */474 u32 rad_bpc_ovfl; /* RAD BPC overflow */475 u32 rad_rlb_bpc_ovfl; /* RAD RLB BPC overflow */476 u32 bpc_fcs_err; /* BPC FCS_ERR */477 u32 txa_tso_hdr; /* TxA TSO header too long */478 u32 rsvd; /* 64bit align */479};480 481/*482 * RDS mod stats483 */484struct bfa_fw_rds_stats_s {485 u32 no_fid_drop_err; /* RDS no fid drop error */486 u32 rsvd; /* 64bit align */487};488 489/*490 * IOC firmware stats491 */492struct bfa_fw_stats_s {493 struct bfa_fw_ioc_stats_s ioc_stats;494 struct bfa_fw_iocfc_stats_s iocfc_stats;495 struct bfa_fw_io_stats_s io_stats;496 struct bfa_fw_port_stats_s port_stats;497 struct bfa_fw_fcxchg_stats_s fcxchg_stats;498 struct bfa_fw_lps_stats_s lps_stats;499 struct bfa_fw_trunk_stats_s trunk_stats;500 struct bfa_fw_aport_stats_s aport_stats;501 struct bfa_fw_mac_mod_stats_s macmod_stats;502 struct bfa_fw_ct_mod_stats_s ctmod_stats;503 struct bfa_fw_eth_sndrcv_stats_s ethsndrcv_stats;504 struct bfa_fw_rds_stats_s rds_stats;505};506 507#define BFA_IOCFC_PATHTOV_MAX 60508#define BFA_IOCFC_QDEPTH_MAX 2000509 510/*511 * QoS states512 */513enum bfa_qos_state {514 BFA_QOS_DISABLED = 0, /* QoS is disabled */515 BFA_QOS_ONLINE = 1, /* QoS is online */516 BFA_QOS_OFFLINE = 2, /* QoS is offline */517};518 519/*520 * QoS Priority levels.521 */522enum bfa_qos_priority {523 BFA_QOS_UNKNOWN = 0,524 BFA_QOS_HIGH = 1, /* QoS Priority Level High */525 BFA_QOS_MED = 2, /* QoS Priority Level Medium */526 BFA_QOS_LOW = 3, /* QoS Priority Level Low */527};528 529/*530 * QoS bandwidth allocation for each priority level531 */532enum bfa_qos_bw_alloc {533 BFA_QOS_BW_HIGH = 60, /* bandwidth allocation for High */534 BFA_QOS_BW_MED = 30, /* bandwidth allocation for Medium */535 BFA_QOS_BW_LOW = 10, /* bandwidth allocation for Low */536};537#pragma pack(1)538 539struct bfa_qos_bw_s {540 u8 qos_bw_set;541 u8 high;542 u8 med;543 u8 low;544};545 546/*547 * QoS attribute returned in QoS Query548 */549struct bfa_qos_attr_s {550 u8 state; /* QoS current state */551 u8 rsvd1[3];552 u32 total_bb_cr; /* Total BB Credits */553 struct bfa_qos_bw_s qos_bw; /* QOS bw cfg */554 struct bfa_qos_bw_s qos_bw_op; /* QOS bw operational */555};556 557enum bfa_bbcr_state {558 BFA_BBCR_DISABLED, /*!< BBCR is disable */559 BFA_BBCR_ONLINE, /*!< BBCR is online */560 BFA_BBCR_OFFLINE, /*!< BBCR is offline */561};562 563enum bfa_bbcr_err_reason {564 BFA_BBCR_ERR_REASON_NONE, /*!< Unknown */565 BFA_BBCR_ERR_REASON_SPEED_UNSUP, /*!< Port speed < max sup_speed */566 BFA_BBCR_ERR_REASON_PEER_UNSUP, /*!< BBCR is disable on peer port */567 BFA_BBCR_ERR_REASON_NON_BRCD_SW, /*!< Connected to non BRCD switch */568 BFA_BBCR_ERR_REASON_FLOGI_RJT, /*!< Login rejected by the switch */569};570 571struct bfa_bbcr_attr_s {572 u8 state;573 u8 peer_bb_scn;574 u8 reason;575 u8 rsvd;576};577 578/*579 * These fields should be displayed only from the CLI.580 * There will be a separate BFAL API (get_qos_vc_attr ?)581 * to retrieve this.582 *583 */584#define BFA_QOS_MAX_VC 16585 586struct bfa_qos_vc_info_s {587 u8 vc_credit;588 u8 borrow_credit;589 u8 priority;590 u8 resvd;591};592 593struct bfa_qos_vc_attr_s {594 u16 total_vc_count; /* Total VC Count */595 u16 shared_credit;596 u32 elp_opmode_flags;597 struct bfa_qos_vc_info_s vc_info[BFA_QOS_MAX_VC]; /* as many as598 * total_vc_count */599};600 601/*602 * QoS statistics603 */604struct bfa_qos_stats_s {605 u32 flogi_sent; /* QoS Flogi sent */606 u32 flogi_acc_recvd; /* QoS Flogi Acc received */607 u32 flogi_rjt_recvd; /* QoS Flogi rejects received */608 u32 flogi_retries; /* QoS Flogi retries */609 610 u32 elp_recvd; /* QoS ELP received */611 u32 elp_accepted; /* QoS ELP Accepted */612 u32 elp_rejected; /* QoS ELP rejected */613 u32 elp_dropped; /* QoS ELP dropped */614 615 u32 qos_rscn_recvd; /* QoS RSCN received */616 u32 rsvd; /* padding for 64 bit alignment */617};618 619/*620 * FCoE statistics621 */622struct bfa_fcoe_stats_s {623 u64 secs_reset; /* Seconds since stats reset */624 u64 cee_linkups; /* CEE link up */625 u64 cee_linkdns; /* CEE link down */626 u64 fip_linkups; /* FIP link up */627 u64 fip_linkdns; /* FIP link down */628 u64 fip_fails; /* FIP failures */629 u64 mac_invalids; /* Invalid mac assignments */630 u64 vlan_req; /* Vlan requests */631 u64 vlan_notify; /* Vlan notifications */632 u64 vlan_err; /* Vlan notification errors */633 u64 vlan_timeouts; /* Vlan request timeouts */634 u64 vlan_invalids; /* Vlan invalids */635 u64 disc_req; /* Discovery requests */636 u64 disc_rsp; /* Discovery responses */637 u64 disc_err; /* Discovery error frames */638 u64 disc_unsol; /* Discovery unsolicited */639 u64 disc_timeouts; /* Discovery timeouts */640 u64 disc_fcf_unavail; /* Discovery FCF not avail */641 u64 linksvc_unsupp; /* FIP link service req unsupp */642 u64 linksvc_err; /* FIP link service req errors */643 u64 logo_req; /* FIP logos received */644 u64 clrvlink_req; /* Clear virtual link requests */645 u64 op_unsupp; /* FIP operation unsupp. */646 u64 untagged; /* FIP untagged frames */647 u64 txf_ucast; /* Tx FCoE unicast frames */648 u64 txf_ucast_vlan; /* Tx FCoE unicast vlan frames */649 u64 txf_ucast_octets; /* Tx FCoE unicast octets */650 u64 txf_mcast; /* Tx FCoE multicast frames */651 u64 txf_mcast_vlan; /* Tx FCoE multicast vlan frames */652 u64 txf_mcast_octets; /* Tx FCoE multicast octets */653 u64 txf_bcast; /* Tx FCoE broadcast frames */654 u64 txf_bcast_vlan; /* Tx FCoE broadcast vlan frames */655 u64 txf_bcast_octets; /* Tx FCoE broadcast octets */656 u64 txf_timeout; /* Tx timeouts */657 u64 txf_parity_errors; /* Transmit parity err */658 u64 txf_fid_parity_errors; /* Transmit FID parity err */659 u64 rxf_ucast_octets; /* Rx FCoE unicast octets */660 u64 rxf_ucast; /* Rx FCoE unicast frames */661 u64 rxf_ucast_vlan; /* Rx FCoE unicast vlan frames */662 u64 rxf_mcast_octets; /* Rx FCoE multicast octets */663 u64 rxf_mcast; /* Rx FCoE multicast frames */664 u64 rxf_mcast_vlan; /* Rx FCoE multicast vlan frames */665 u64 rxf_bcast_octets; /* Rx FCoE broadcast octets */666 u64 rxf_bcast; /* Rx FCoE broadcast frames */667 u64 rxf_bcast_vlan; /* Rx FCoE broadcast vlan frames */668};669 670/*671 * QoS or FCoE stats (fcport stats excluding physical FC port stats)672 */673union bfa_fcport_stats_u {674 struct bfa_qos_stats_s fcqos;675 struct bfa_fcoe_stats_s fcoe;676};677#pragma pack()678 679struct bfa_fcpim_del_itn_stats_s {680 u32 del_itn_iocomp_aborted; /* Aborted IO requests */681 u32 del_itn_iocomp_timedout; /* IO timeouts */682 u32 del_itn_iocom_sqer_needed; /* IO retry for SQ error recovery */683 u32 del_itn_iocom_res_free; /* Delayed freeing of IO resources */684 u32 del_itn_iocom_hostabrts; /* Host IO abort requests */685 u32 del_itn_total_ios; /* Total IO count */686 u32 del_io_iocdowns; /* IO cleaned-up due to IOC down */687 u32 del_tm_iocdowns; /* TM cleaned-up due to IOC down */688};689 690struct bfa_itnim_iostats_s {691 692 u32 total_ios; /* Total IO Requests */693 u32 input_reqs; /* Data in-bound requests */694 u32 output_reqs; /* Data out-bound requests */695 u32 io_comps; /* Total IO Completions */696 u32 wr_throughput; /* Write data transferred in bytes */697 u32 rd_throughput; /* Read data transferred in bytes */698 699 u32 iocomp_ok; /* Slowpath IO completions */700 u32 iocomp_underrun; /* IO underrun */701 u32 iocomp_overrun; /* IO overrun */702 u32 qwait; /* IO Request-Q wait */703 u32 qresumes; /* IO Request-Q wait done */704 u32 no_iotags; /* No free IO tag */705 u32 iocomp_timedout; /* IO timeouts */706 u32 iocom_nexus_abort; /* IO failure due to target offline */707 u32 iocom_proto_err; /* IO protocol errors */708 u32 iocom_dif_err; /* IO SBC-3 protection errors */709 710 u32 iocom_sqer_needed; /* fcp-2 error recovery failed */711 u32 iocom_res_free; /* Delayed freeing of IO tag */712 713 714 u32 io_aborts; /* Host IO abort requests */715 u32 iocom_hostabrts; /* Host IO abort completions */716 u32 io_cleanups; /* IO clean-up requests */717 u32 path_tov_expired; /* IO path tov expired */718 u32 iocomp_aborted; /* IO abort completions */719 u32 io_iocdowns; /* IO cleaned-up due to IOC down */720 u32 iocom_utags; /* IO comp with unknown tags */721 722 u32 io_tmaborts; /* Abort request due to TM command */723 u32 tm_io_comps; /* Abort completion due to TM command */724 725 u32 creates; /* IT Nexus create requests */726 u32 fw_create; /* IT Nexus FW create requests */727 u32 create_comps; /* IT Nexus FW create completions */728 u32 onlines; /* IT Nexus onlines */729 u32 offlines; /* IT Nexus offlines */730 u32 fw_delete; /* IT Nexus FW delete requests */731 u32 delete_comps; /* IT Nexus FW delete completions */732 u32 deletes; /* IT Nexus delete requests */733 u32 sler_events; /* SLER events */734 u32 ioc_disabled; /* Num IOC disables */735 u32 cleanup_comps; /* IT Nexus cleanup completions */736 737 u32 tm_cmnds; /* TM Requests */738 u32 tm_fw_rsps; /* TM Completions */739 u32 tm_success; /* TM initiated IO cleanup success */740 u32 tm_failures; /* TM initiated IO cleanup failure */741 u32 no_tskims; /* No free TM tag */742 u32 tm_qwait; /* TM Request-Q wait */743 u32 tm_qresumes; /* TM Request-Q wait done */744 745 u32 tm_iocdowns; /* TM cleaned-up due to IOC down */746 u32 tm_cleanups; /* TM cleanup requests */747 u32 tm_cleanup_comps; /* TM cleanup completions */748 u32 rsvd[6];749};750 751/* Modify char* port_stt[] in bfal_port.c if a new state was added */752enum bfa_port_states {753 BFA_PORT_ST_UNINIT = 1,754 BFA_PORT_ST_ENABLING_QWAIT = 2,755 BFA_PORT_ST_ENABLING = 3,756 BFA_PORT_ST_LINKDOWN = 4,757 BFA_PORT_ST_LINKUP = 5,758 BFA_PORT_ST_DISABLING_QWAIT = 6,759 BFA_PORT_ST_DISABLING = 7,760 BFA_PORT_ST_DISABLED = 8,761 BFA_PORT_ST_STOPPED = 9,762 BFA_PORT_ST_IOCDOWN = 10,763 BFA_PORT_ST_IOCDIS = 11,764 BFA_PORT_ST_FWMISMATCH = 12,765 BFA_PORT_ST_PREBOOT_DISABLED = 13,766 BFA_PORT_ST_TOGGLING_QWAIT = 14,767 BFA_PORT_ST_FAA_MISCONFIG = 15,768 BFA_PORT_ST_DPORT = 16,769 BFA_PORT_ST_DDPORT = 17,770 BFA_PORT_ST_MAX_STATE,771};772 773/*774 * Port operational type (in sync with SNIA port type).775 */776enum bfa_port_type {777 BFA_PORT_TYPE_UNKNOWN = 1, /* port type is unknown */778 BFA_PORT_TYPE_NPORT = 5, /* P2P with switched fabric */779 BFA_PORT_TYPE_NLPORT = 6, /* public loop */780 BFA_PORT_TYPE_LPORT = 20, /* private loop */781 BFA_PORT_TYPE_P2P = 21, /* P2P with no switched fabric */782 BFA_PORT_TYPE_VPORT = 22, /* NPIV - virtual port */783};784 785/*786 * Port topology setting. A port's topology and fabric login status787 * determine its operational type.788 */789enum bfa_port_topology {790 BFA_PORT_TOPOLOGY_NONE = 0, /* No valid topology */791 BFA_PORT_TOPOLOGY_P2P_OLD_VER = 1, /* P2P def for older ver */792 BFA_PORT_TOPOLOGY_LOOP = 2, /* LOOP topology */793 BFA_PORT_TOPOLOGY_AUTO_OLD_VER = 3, /* auto def for older ver */794 BFA_PORT_TOPOLOGY_AUTO = 4, /* auto topology selection */795 BFA_PORT_TOPOLOGY_P2P = 5, /* P2P only */796};797 798/*799 * Physical port loopback types.800 */801enum bfa_port_opmode {802 BFA_PORT_OPMODE_NORMAL = 0x00, /* normal non-loopback mode */803 BFA_PORT_OPMODE_LB_INT = 0x01, /* internal loop back */804 BFA_PORT_OPMODE_LB_SLW = 0x02, /* serial link wrapback (serdes) */805 BFA_PORT_OPMODE_LB_EXT = 0x04, /* external loop back (serdes) */806 BFA_PORT_OPMODE_LB_CBL = 0x08, /* cabled loop back */807 BFA_PORT_OPMODE_LB_NLINT = 0x20, /* NL_Port internal loopback */808};809 810#define BFA_PORT_OPMODE_LB_HARD(_mode) \811 ((_mode == BFA_PORT_OPMODE_LB_INT) || \812 (_mode == BFA_PORT_OPMODE_LB_SLW) || \813 (_mode == BFA_PORT_OPMODE_LB_EXT))814 815/*816 * Port link state817 */818enum bfa_port_linkstate {819 BFA_PORT_LINKUP = 1, /* Physical port/Trunk link up */820 BFA_PORT_LINKDOWN = 2, /* Physical port/Trunk link down */821};822 823/*824 * Port link state reason code825 */826enum bfa_port_linkstate_rsn {827 BFA_PORT_LINKSTATE_RSN_NONE = 0,828 BFA_PORT_LINKSTATE_RSN_DISABLED = 1,829 BFA_PORT_LINKSTATE_RSN_RX_NOS = 2,830 BFA_PORT_LINKSTATE_RSN_RX_OLS = 3,831 BFA_PORT_LINKSTATE_RSN_RX_LIP = 4,832 BFA_PORT_LINKSTATE_RSN_RX_LIPF7 = 5,833 BFA_PORT_LINKSTATE_RSN_SFP_REMOVED = 6,834 BFA_PORT_LINKSTATE_RSN_PORT_FAULT = 7,835 BFA_PORT_LINKSTATE_RSN_RX_LOS = 8,836 BFA_PORT_LINKSTATE_RSN_LOCAL_FAULT = 9,837 BFA_PORT_LINKSTATE_RSN_REMOTE_FAULT = 10,838 BFA_PORT_LINKSTATE_RSN_TIMEOUT = 11,839 BFA_PORT_LINKSTATE_RSN_FAA_MISCONFIG = 12,840 841 842 843 /* CEE related reason codes/errors */844 CEE_LLDP_INFO_AGED_OUT = 20,845 CEE_LLDP_SHUTDOWN_TLV_RCVD = 21,846 CEE_PEER_NOT_ADVERTISE_DCBX = 22,847 CEE_PEER_NOT_ADVERTISE_PG = 23,848 CEE_PEER_NOT_ADVERTISE_PFC = 24,849 CEE_PEER_NOT_ADVERTISE_FCOE = 25,850 CEE_PG_NOT_COMPATIBLE = 26,851 CEE_PFC_NOT_COMPATIBLE = 27,852 CEE_FCOE_NOT_COMPATIBLE = 28,853 CEE_BAD_PG_RCVD = 29,854 CEE_BAD_BW_RCVD = 30,855 CEE_BAD_PFC_RCVD = 31,856 CEE_BAD_APP_PRI_RCVD = 32,857 CEE_FCOE_PRI_PFC_OFF = 33,858 CEE_DUP_CONTROL_TLV_RCVD = 34,859 CEE_DUP_FEAT_TLV_RCVD = 35,860 CEE_APPLY_NEW_CFG = 36, /* reason, not error */861 CEE_PROTOCOL_INIT = 37, /* reason, not error */862 CEE_PHY_LINK_DOWN = 38,863 CEE_LLS_FCOE_ABSENT = 39,864 CEE_LLS_FCOE_DOWN = 40,865 CEE_ISCSI_NOT_COMPATIBLE = 41,866 CEE_ISCSI_PRI_PFC_OFF = 42,867 CEE_ISCSI_PRI_OVERLAP_FCOE_PRI = 43868};869 870#define MAX_LUN_MASK_CFG 16871 872/*873 * Initially flash content may be fff. On making LUN mask enable and disable874 * state change. when report lun command is being processed it goes from875 * BFA_LUN_MASK_ACTIVE to BFA_LUN_MASK_FETCH and comes back to876 * BFA_LUN_MASK_ACTIVE.877 */878enum bfa_ioim_lun_mask_state_s {879 BFA_IOIM_LUN_MASK_INACTIVE = 0,880 BFA_IOIM_LUN_MASK_ACTIVE = 1,881 BFA_IOIM_LUN_MASK_FETCHED = 2,882};883 884enum bfa_lunmask_state_s {885 BFA_LUNMASK_DISABLED = 0x00,886 BFA_LUNMASK_ENABLED = 0x01,887 BFA_LUNMASK_MINCFG = 0x02,888 BFA_LUNMASK_UNINITIALIZED = 0xff,889};890 891/**892 * FEC states893 */894enum bfa_fec_state_s {895 BFA_FEC_ONLINE = 1, /*!< FEC is online */896 BFA_FEC_OFFLINE = 2, /*!< FEC is offline */897 BFA_FEC_OFFLINE_NOT_16G = 3, /*!< FEC is offline (speed not 16Gig) */898};899 900#pragma pack(1)901/*902 * LUN mask configuration903 */904struct bfa_lun_mask_s {905 wwn_t lp_wwn;906 wwn_t rp_wwn;907 struct scsi_lun lun;908 u8 ua;909 u8 rsvd[3];910 u16 rp_tag;911 u8 lp_tag;912 u8 state;913};914 915#define MAX_LUN_MASK_CFG 16916struct bfa_lunmask_cfg_s {917 u32 status;918 u32 rsvd;919 struct bfa_lun_mask_s lun_list[MAX_LUN_MASK_CFG];920};921 922struct bfa_throttle_cfg_s {923 u16 is_valid;924 u16 value;925 u32 rsvd;926};927 928struct bfa_defs_fcpim_throttle_s {929 u16 max_value;930 u16 cur_value;931 u16 cfg_value;932 u16 rsvd;933};934 935#define BFA_BB_SCN_DEF 3936#define BFA_BB_SCN_MAX 0x0F937 938/*939 * Physical port configuration940 */941struct bfa_port_cfg_s {942 u8 topology; /* bfa_port_topology */943 u8 speed; /* enum bfa_port_speed */944 u8 trunked; /* trunked or not */945 u8 qos_enabled; /* qos enabled or not */946 u8 cfg_hardalpa; /* is hard alpa configured */947 u8 hardalpa; /* configured hard alpa */948 __be16 maxfrsize; /* maximum frame size */949 u8 rx_bbcredit; /* receive buffer credits */950 u8 tx_bbcredit; /* transmit buffer credits */951 u8 ratelimit; /* ratelimit enabled or not */952 u8 trl_def_speed; /* ratelimit default speed */953 u8 bb_cr_enabled; /*!< Config state of BB_SCN */954 u8 bb_scn; /*!< BB_SCN value for FLOGI Exchg */955 u8 faa_state; /* FAA enabled/disabled */956 u8 rsvd1;957 u16 path_tov; /* device path timeout */958 u16 q_depth; /* SCSI Queue depth */959 struct bfa_qos_bw_s qos_bw; /* QOS bandwidth */960};961#pragma pack()962 963/*964 * Port attribute values.965 */966struct bfa_port_attr_s {967 /*968 * Static fields969 */970 wwn_t nwwn; /* node wwn */971 wwn_t pwwn; /* port wwn */972 wwn_t factorynwwn; /* factory node wwn */973 wwn_t factorypwwn; /* factory port wwn */974 enum fc_cos cos_supported; /* supported class of975 * services */976 u32 rsvd;977 struct fc_symname_s port_symname; /* port symbolic name */978 enum bfa_port_speed speed_supported; /* supported speeds */979 bfa_boolean_t pbind_enabled;980 981 /*982 * Configured values983 */984 struct bfa_port_cfg_s pport_cfg; /* pport cfg */985 986 /*987 * Dynamic field - info from BFA988 */989 enum bfa_port_states port_state; /* current port state */990 enum bfa_port_speed speed; /* current speed */991 enum bfa_port_topology topology; /* current topology */992 bfa_boolean_t beacon; /* current beacon status */993 bfa_boolean_t link_e2e_beacon; /* link beacon is on */994 bfa_boolean_t bbsc_op_status; /* fc credit recovery oper995 * state */996 enum bfa_fec_state_s fec_state; /*!< current FEC state */997 998 /*999 * Dynamic field - info from FCS1000 */1001 u32 pid; /* port ID */1002 enum bfa_port_type port_type; /* current topology */1003 u32 loopback; /* external loopback */1004 u32 authfail; /* auth fail state */1005 1006 /* FCoE specific */1007 u16 fcoe_vlan;1008 u8 rsvd1[2];1009};1010 1011/*1012 * Port FCP mappings.1013 */1014struct 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 * Port RNID info.1028 */1029struct 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)1042struct bfa_fcport_fcf_s {1043 wwn_t name; /* FCF name */1044 wwn_t fabric_name; /* Fabric Name */1045 u8 fipenabled; /* FIP enabled or not */1046 u8 fipfailed; /* FIP failed or not */1047 u8 resv[2];1048 u8 pri; /* FCF priority */1049 u8 version; /* FIP version used */1050 u8 available; /* Available for login */1051 u8 fka_disabled; /* FKA is disabled */1052 u8 maxsz_verified; /* FCoE max size verified */1053 u8 fc_map[3]; /* FC map */1054 __be16 vlan; /* FCoE vlan tag/priority */1055 u32 fka_adv_per; /* FIP ka advert. period */1056 mac_t mac; /* FCF mac */1057};1058 1059/*1060 * Trunk states for BCU/BFAL1061 */1062enum bfa_trunk_state {1063 BFA_TRUNK_DISABLED = 0, /* Trunk is not configured */1064 BFA_TRUNK_ONLINE = 1, /* Trunk is online */1065 BFA_TRUNK_OFFLINE = 2, /* Trunk is offline */1066};1067 1068/*1069 * VC attributes for trunked link1070 */1071struct 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 1078struct bfa_fcport_loop_info_s {1079 u8 myalpa; /* alpa claimed */1080 u8 alpabm_val; /* alpa bitmap valid or not (1 or 0) */1081 u8 resvd[6];1082 struct fc_alpabm_s alpabm; /* alpa bitmap */1083};1084 1085/*1086 * Link state information1087 */1088struct bfa_port_link_s {1089 u8 linkstate; /* Link state bfa_port_linkstate */1090 u8 linkstate_rsn; /* bfa_port_linkstate_rsn_t */1091 u8 topology; /* P2P/LOOP bfa_port_topology */1092 u8 speed; /* Link speed (1/2/4/8 G) */1093 u32 linkstate_opt; /* Linkstate optional data (debug) */1094 u8 trunked; /* Trunked or not (1 or 0) */1095 u8 fec_state; /*!< State of FEC */1096 u8 resvd[6];1097 struct bfa_qos_attr_s qos_attr; /* QoS Attributes */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 /* VC info from ELP */1104 struct bfa_trunk_vc_attr_s trunk_vc_attr;1105 struct bfa_fcport_fcf_s fcf;1106 /* FCF information (for FCoE) */1107 } vc_fcf;1108 } attr;1109};1110#pragma pack()1111 1112enum 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 1118enum bfa_trunk_link_state {1119 BFA_TRUNK_LINK_STATE_UP = 1, /* link part of trunk */1120 BFA_TRUNK_LINK_STATE_DN_LINKDN = 2, /* physical link down */1121 BFA_TRUNK_LINK_STATE_DN_GRP_MIS = 3, /* trunk group different */1122 BFA_TRUNK_LINK_STATE_DN_SPD_MIS = 4, /* speed mismatch */1123 BFA_TRUNK_LINK_STATE_DN_MODE_MIS = 5, /* remote port not trunked */1124};1125 1126#define BFA_TRUNK_MAX_PORTS 21127struct 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 1135struct 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 1143struct bfa_rport_hal_stats_s {1144 u32 sm_un_cr; /* uninit: create events */1145 u32 sm_un_unexp; /* uninit: exception events */1146 u32 sm_cr_on; /* created: online events */1147 u32 sm_cr_del; /* created: delete events */1148 u32 sm_cr_hwf; /* created: IOC down */1149 u32 sm_cr_unexp; /* created: exception events */1150 u32 sm_fwc_rsp; /* fw create: f/w responses */1151 u32 sm_fwc_del; /* fw create: delete events */1152 u32 sm_fwc_off; /* fw create: offline events */1153 u32 sm_fwc_hwf; /* fw create: IOC down */1154 u32 sm_fwc_unexp; /* fw create: exception events*/1155 u32 sm_on_off; /* online: offline events */1156 u32 sm_on_del; /* online: delete events */1157 u32 sm_on_hwf; /* online: IOC down events */1158 u32 sm_on_unexp; /* online: exception events */1159 u32 sm_fwd_rsp; /* fw delete: fw responses */1160 u32 sm_fwd_del; /* fw delete: delete events */1161 u32 sm_fwd_hwf; /* fw delete: IOC down events */1162 u32 sm_fwd_unexp; /* fw delete: exception events*/1163 u32 sm_off_del; /* offline: delete events */1164 u32 sm_off_on; /* offline: online events */1165 u32 sm_off_hwf; /* offline: IOC down events */1166 u32 sm_off_unexp; /* offline: exception events */1167 u32 sm_del_fwrsp; /* delete: fw responses */1168 u32 sm_del_hwf; /* delete: IOC down events */1169 u32 sm_del_unexp; /* delete: exception events */1170 u32 sm_delp_fwrsp; /* delete pend: fw responses */1171 u32 sm_delp_hwf; /* delete pend: IOC downs */1172 u32 sm_delp_unexp; /* delete pend: exceptions */1173 u32 sm_offp_fwrsp; /* off-pending: fw responses */1174 u32 sm_offp_del; /* off-pending: deletes */1175 u32 sm_offp_hwf; /* off-pending: IOC downs */1176 u32 sm_offp_unexp; /* off-pending: exceptions */1177 u32 sm_iocd_off; /* IOC down: offline events */1178 u32 sm_iocd_del; /* IOC down: delete events */1179 u32 sm_iocd_on; /* IOC down: online events */1180 u32 sm_iocd_unexp; /* IOC down: exceptions */1181 u32 rsvd;1182};1183#pragma pack(1)1184/*1185 * Rport's QoS attributes1186 */1187struct bfa_rport_qos_attr_s {1188 u8 qos_priority; /* rport's QoS priority */1189 u8 rsvd[3];1190 u32 qos_flow_id; /* QoS flow Id */1191};1192#pragma pack()1193 1194#define BFA_IOBUCKET_MAX 141195 1196struct 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 1203struct bfa_itnim_ioprofile_s {1204 u32 clock_res_mul;1205 u32 clock_res_div;1206 u32 index;1207 u32 io_profile_start_time; /* IO profile start time */1208 u32 iocomps[BFA_IOBUCKET_MAX]; /* IO completed */1209 struct bfa_itnim_latency_s io_latency;1210};1211 1212/*1213 * vHBA port attribute values.1214 */1215struct bfa_vhba_attr_s {1216 wwn_t nwwn; /* node wwn */1217 wwn_t pwwn; /* port wwn */1218 u32 pid; /* port ID */1219 bfa_boolean_t io_profile; /* get it from fcpim mod */1220 bfa_boolean_t plog_enabled; /* portlog is enabled */1221 u16 path_tov;1222 u8 rsvd[2];1223};1224 1225/*1226 * FC physical port statistics.1227 */1228struct bfa_port_fc_stats_s {1229 u64 secs_reset; /* Seconds since stats is reset */1230 u64 tx_frames; /* Tx frames */1231 u64 tx_words; /* Tx words */1232 u64 tx_lip; /* Tx LIP */1233 u64 tx_lip_f7f7; /* Tx LIP_F7F7 */1234 u64 tx_lip_f8f7; /* Tx LIP_F8F7 */1235 u64 tx_arbf0; /* Tx ARB F0 */1236 u64 tx_nos; /* Tx NOS */1237 u64 tx_ols; /* Tx OLS */1238 u64 tx_lr; /* Tx LR */1239 u64 tx_lrr; /* Tx LRR */1240 u64 rx_frames; /* Rx frames */1241 u64 rx_words; /* Rx words */1242 u64 lip_count; /* Rx LIP */1243 u64 rx_lip_f7f7; /* Rx LIP_F7F7 */1244 u64 rx_lip_f8f7; /* Rx LIP_F8F7 */1245 u64 rx_arbf0; /* Rx ARB F0 */1246 u64 nos_count; /* Rx NOS */1247 u64 ols_count; /* Rx OLS */1248 u64 lr_count; /* Rx LR */1249 u64 lrr_count; /* Rx LRR */1250 u64 invalid_crcs; /* Rx CRC err frames */1251 u64 invalid_crc_gd_eof; /* Rx CRC err good EOF frames */1252 u64 undersized_frm; /* Rx undersized frames */1253 u64 oversized_frm; /* Rx oversized frames */1254 u64 bad_eof_frm; /* Rx frames with bad EOF */1255 u64 error_frames; /* Errored frames */1256 u64 dropped_frames; /* Dropped frames */1257 u64 link_failures; /* Link Failure (LF) count */1258 u64 loss_of_syncs; /* Loss of sync count */1259 u64 loss_of_signals; /* Loss of signal count */1260 u64 primseq_errs; /* Primitive sequence protocol err. */1261 u64 bad_os_count; /* Invalid ordered sets */1262 u64 err_enc_out; /* Encoding err nonframe_8b10b */1263 u64 err_enc; /* Encoding err frame_8b10b */1264 u64 bbcr_frames_lost; /*!< BBCR Frames Lost */1265 u64 bbcr_rrdys_lost; /*!< BBCR RRDYs Lost */1266 u64 bbcr_link_resets; /*!< BBCR Link Resets */1267 u64 bbcr_frame_lost_intrs; /*!< BBCR Frame loss intrs */1268 u64 bbcr_rrdy_lost_intrs; /*!< BBCR Rrdy loss intrs */1269 u64 loop_timeouts; /* Loop timeouts */1270};1271 1272/*1273 * Eth Physical Port statistics.1274 */1275struct bfa_port_eth_stats_s {1276 u64 secs_reset; /* Seconds since stats is reset */1277 u64 frame_64; /* Frames 64 bytes */1278 u64 frame_65_127; /* Frames 65-127 bytes */1279 u64 frame_128_255; /* Frames 128-255 bytes */1280 u64 frame_256_511; /* Frames 256-511 bytes */1281 u64 frame_512_1023; /* Frames 512-1023 bytes */1282 u64 frame_1024_1518; /* Frames 1024-1518 bytes */1283 u64 frame_1519_1522; /* Frames 1519-1522 bytes */1284 u64 tx_bytes; /* Tx bytes */1285 u64 tx_packets; /* Tx packets */1286 u64 tx_mcast_packets; /* Tx multicast packets */1287 u64 tx_bcast_packets; /* Tx broadcast packets */1288 u64 tx_control_frame; /* Tx control frame */1289 u64 tx_drop; /* Tx drops */1290 u64 tx_jabber; /* Tx jabber */1291 u64 tx_fcs_error; /* Tx FCS errors */1292 u64 tx_fragments; /* Tx fragments */1293 u64 rx_bytes; /* Rx bytes */1294 u64 rx_packets; /* Rx packets */1295 u64 rx_mcast_packets; /* Rx multicast packets */1296 u64 rx_bcast_packets; /* Rx broadcast packets */1297 u64 rx_control_frames; /* Rx control frames */1298 u64 rx_unknown_opcode; /* Rx unknown opcode */1299 u64 rx_drop; /* Rx drops */1300 u64 rx_jabber; /* Rx jabber */1301 u64 rx_fcs_error; /* Rx FCS errors */1302 u64 rx_alignment_error; /* Rx alignment errors */1303 u64 rx_frame_length_error; /* Rx frame len errors */1304 u64 rx_code_error; /* Rx code errors */1305 u64 rx_fragments; /* Rx fragments */1306 u64 rx_pause; /* Rx pause */1307 u64 rx_zero_pause; /* Rx zero pause */1308 u64 tx_pause; /* Tx pause */1309 u64 tx_zero_pause; /* Tx zero pause */1310 u64 rx_fcoe_pause; /* Rx FCoE pause */1311 u64 rx_fcoe_zero_pause; /* Rx FCoE zero pause */1312 u64 tx_fcoe_pause; /* Tx FCoE pause */1313 u64 tx_fcoe_zero_pause; /* Tx FCoE zero pause */1314 u64 rx_iscsi_pause; /* Rx iSCSI pause */1315 u64 rx_iscsi_zero_pause; /* Rx iSCSI zero pause */1316 u64 tx_iscsi_pause; /* Tx iSCSI pause */1317 u64 tx_iscsi_zero_pause; /* Tx iSCSI zero pause */1318};1319 1320/*1321 * Port statistics.1322 */1323union bfa_port_stats_u {1324 struct bfa_port_fc_stats_s fc;1325 struct bfa_port_eth_stats_s eth;1326};1327 1328struct 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 1340struct 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 1347struct 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/* CEE/DCBX parameters */1359struct 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; /* bitmap of priorties with PFC enabled */1363 u8 fcoe_primap; /* bitmap of priorities used for FcoE traffic */1364 u8 iscsi_primap; /* bitmap of priorities used for iSCSI traffic */1365 u8 dcbx_version; /* operating version:CEE or preCEE */1366 u8 lls_fcoe; /* FCoE Logical Link Status */1367 u8 lls_lan; /* LAN Logical Link Status */1368 u8 rsvd[2];1369};1370 1371/* CEE Query */1372struct 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/* LLDP/DCBX/CEE Statistics */1384struct bfa_cee_stats_s {1385 u32 lldp_tx_frames; /* LLDP Tx Frames */1386 u32 lldp_rx_frames; /* LLDP Rx Frames */1387 u32 lldp_rx_frames_invalid; /* LLDP Rx Frames invalid */1388 u32 lldp_rx_frames_new; /* LLDP Rx Frames new */1389 u32 lldp_tlvs_unrecognized; /* LLDP Rx unrecog. TLVs */1390 u32 lldp_rx_shutdown_tlvs; /* LLDP Rx shutdown TLVs */1391 u32 lldp_info_aged_out; /* LLDP remote info aged */1392 u32 dcbx_phylink_ups; /* DCBX phy link ups */1393 u32 dcbx_phylink_downs; /* DCBX phy link downs */1394 u32 dcbx_rx_tlvs; /* DCBX Rx TLVs */1395 u32 dcbx_rx_tlvs_invalid; /* DCBX Rx TLVs invalid */1396 u32 dcbx_control_tlv_error; /* DCBX control TLV errors */1397 u32 dcbx_feature_tlv_error; /* DCBX feature TLV errors */1398 u32 dcbx_cee_cfg_new; /* DCBX new CEE cfg rcvd */1399 u32 cee_status_down; /* DCB status down */1400 u32 cee_status_up; /* DCB status up */1401 u32 cee_hw_cfg_changed; /* DCB hw cfg changed */1402 u32 cee_rx_invalid_cfg; /* DCB invalid cfg */1403};1404 1405#pragma pack()1406 1407/*1408 * AEN related definitions1409 */1410#define BFAD_NL_VENDOR_ID (((u64)0x01 << SCSI_NL_VID_TYPE_SHIFT) \1411 | BFA_PCI_VENDOR_ID_BROCADE)1412 1413/* BFA remote port events */1414enum bfa_rport_aen_event {1415 BFA_RPORT_AEN_ONLINE = 1, /* RPort online event */1416 BFA_RPORT_AEN_OFFLINE = 2, /* RPort offline event */1417 BFA_RPORT_AEN_DISCONNECT = 3, /* RPort disconnect event */1418 BFA_RPORT_AEN_QOS_PRIO = 4, /* QOS priority change event */1419 BFA_RPORT_AEN_QOS_FLOWID = 5, /* QOS flow Id change event */1420};1421 1422struct bfa_rport_aen_data_s {1423 u16 vf_id; /* vf_id of this logical port */1424 u16 rsvd[3];1425 wwn_t ppwwn; /* WWN of its physical port */1426 wwn_t lpwwn; /* WWN of this logical port */1427 wwn_t rpwwn; /* WWN of this remote port */1428 union {1429 struct bfa_rport_qos_attr_s qos;1430 } priv;1431};1432 1433union 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 5121444 1445struct 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 /* __BFA_DEFS_SVC_H__ */1457