brintos

brintos / linux-shallow public Read only

0
0
Text · 47.3 KiB · f2c49f0 Raw
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