xref: /openbmc/linux/drivers/scsi/bfa/bfa_defs_svc.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
152fa7bf9SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2a36c61f9SKrishna Gudipati /*
3889d0d42SAnil Gurumurthy  * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
4889d0d42SAnil Gurumurthy  * Copyright (c) 2014- QLogic Corporation.
5a36c61f9SKrishna Gudipati  * All rights reserved
6889d0d42SAnil Gurumurthy  * www.qlogic.com
7a36c61f9SKrishna Gudipati  *
831e1d569SAnil Gurumurthy  * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
9a36c61f9SKrishna Gudipati  */
10a36c61f9SKrishna Gudipati 
11a36c61f9SKrishna Gudipati #ifndef __BFA_DEFS_SVC_H__
12a36c61f9SKrishna Gudipati #define __BFA_DEFS_SVC_H__
13a36c61f9SKrishna Gudipati 
14a36c61f9SKrishna Gudipati #include "bfa_defs.h"
15a36c61f9SKrishna Gudipati #include "bfa_fc.h"
16a36c61f9SKrishna Gudipati #include "bfi.h"
17a36c61f9SKrishna Gudipati 
18a36c61f9SKrishna Gudipati #define BFA_IOCFC_INTR_DELAY	1125
19a36c61f9SKrishna Gudipati #define BFA_IOCFC_INTR_LATENCY	225
20a36c61f9SKrishna Gudipati #define BFA_IOCFCOE_INTR_DELAY	25
21a36c61f9SKrishna Gudipati #define BFA_IOCFCOE_INTR_LATENCY 5
22a36c61f9SKrishna Gudipati 
23acdc79a6SJing Huang /*
24a36c61f9SKrishna Gudipati  * Interrupt coalescing configuration.
25a36c61f9SKrishna Gudipati  */
26a36c61f9SKrishna Gudipati #pragma pack(1)
27a36c61f9SKrishna Gudipati struct bfa_iocfc_intr_attr_s {
28a36c61f9SKrishna Gudipati 	u8		coalesce;	/*  enable/disable coalescing */
29a36c61f9SKrishna Gudipati 	u8		rsvd[3];
3050444a34SMaggie 	__be16		latency;	/*  latency in microseconds   */
3150444a34SMaggie 	__be16		delay;		/*  delay in microseconds     */
32a36c61f9SKrishna Gudipati };
33a36c61f9SKrishna Gudipati 
34acdc79a6SJing Huang /*
35a36c61f9SKrishna Gudipati  * IOC firmware configuraton
36a36c61f9SKrishna Gudipati  */
37a36c61f9SKrishna Gudipati struct bfa_iocfc_fwcfg_s {
38a36c61f9SKrishna Gudipati 	u16		num_fabrics;	/*  number of fabrics		*/
39a36c61f9SKrishna Gudipati 	u16		num_lports;	/*  number of local lports	*/
40a36c61f9SKrishna Gudipati 	u16		num_rports;	/*  number of remote ports	*/
41a36c61f9SKrishna Gudipati 	u16		num_ioim_reqs;	/*  number of IO reqs		*/
42a36c61f9SKrishna Gudipati 	u16		num_tskim_reqs;	/*  task management requests	*/
43e2187d7fSKrishna Gudipati 	u16		num_fwtio_reqs;	/* number of TM IO reqs in FW   */
44a36c61f9SKrishna Gudipati 	u16		num_fcxp_reqs;	/*  unassisted FC exchanges	*/
45a36c61f9SKrishna Gudipati 	u16		num_uf_bufs;	/*  unsolicited recv buffers	*/
46a36c61f9SKrishna Gudipati 	u8		num_cqs;
47a36c61f9SKrishna Gudipati 	u8		fw_tick_res;	/*  FW clock resolution in ms */
48db9d8a75SKrishna Gudipati 	u8		rsvd[6];
49a36c61f9SKrishna Gudipati };
50a36c61f9SKrishna Gudipati #pragma pack()
51a36c61f9SKrishna Gudipati 
52a36c61f9SKrishna Gudipati struct bfa_iocfc_drvcfg_s {
53a36c61f9SKrishna Gudipati 	u16		num_reqq_elems;	/*  number of req queue elements */
54a36c61f9SKrishna Gudipati 	u16		num_rspq_elems;	/*  number of rsp queue elements */
55a36c61f9SKrishna Gudipati 	u16		num_sgpgs;	/*  number of total SG pages	 */
56a36c61f9SKrishna Gudipati 	u16		num_sboot_tgts;	/*  number of SAN boot targets	 */
57a36c61f9SKrishna Gudipati 	u16		num_sboot_luns;	/*  number of SAN boot luns	 */
58a36c61f9SKrishna Gudipati 	u16		ioc_recover;	/*  IOC recovery mode		 */
59a36c61f9SKrishna Gudipati 	u16		min_cfg;	/*  minimum configuration	 */
60a36c61f9SKrishna Gudipati 	u16		path_tov;	/*  device path timeout		*/
61275a63acSJing Huang 	u16		num_tio_reqs;	/* number of TM IO reqs	*/
6260138066SKrishna Gudipati 	u8		port_mode;
6360138066SKrishna Gudipati 	u8		rsvd_a;
64275a63acSJing Huang 	bfa_boolean_t	delay_comp;	/* delay completion of failed
65275a63acSJing Huang 					 * inflight IOs */
6660138066SKrishna Gudipati 	u16		num_ttsk_reqs;	 /* TM task management requests */
67a36c61f9SKrishna Gudipati 	u32		rsvd;
68a36c61f9SKrishna Gudipati };
69a36c61f9SKrishna Gudipati 
70acdc79a6SJing Huang /*
71a36c61f9SKrishna Gudipati  * IOC configuration
72a36c61f9SKrishna Gudipati  */
73a36c61f9SKrishna Gudipati struct bfa_iocfc_cfg_s {
74a36c61f9SKrishna Gudipati 	struct bfa_iocfc_fwcfg_s	fwcfg;	/*  firmware side config */
75a36c61f9SKrishna Gudipati 	struct bfa_iocfc_drvcfg_s	drvcfg;	/*  driver side config	  */
76a36c61f9SKrishna Gudipati };
77a36c61f9SKrishna Gudipati 
78acdc79a6SJing Huang /*
79a36c61f9SKrishna Gudipati  * IOC firmware IO stats
80a36c61f9SKrishna Gudipati  */
8160138066SKrishna Gudipati struct bfa_fw_ioim_stats_s {
82a36c61f9SKrishna Gudipati 	u32	host_abort;		/*  IO aborted by host driver*/
83a36c61f9SKrishna Gudipati 	u32	host_cleanup;		/*  IO clean up by host driver */
84a36c61f9SKrishna Gudipati 
85a36c61f9SKrishna Gudipati 	u32	fw_io_timeout;		/*  IOs timedout */
86a36c61f9SKrishna Gudipati 	u32	fw_frm_parse;		/*  frame parsed by f/w */
87a36c61f9SKrishna Gudipati 	u32	fw_frm_data;		/*  fcp_data frame parsed by f/w */
88a36c61f9SKrishna Gudipati 	u32	fw_frm_rsp;		/*  fcp_rsp frame parsed by f/w */
89a36c61f9SKrishna Gudipati 	u32	fw_frm_xfer_rdy;	/*  xfer_rdy frame parsed by f/w */
90a36c61f9SKrishna Gudipati 	u32	fw_frm_bls_acc;		/*  BLS ACC  frame parsed by f/w */
91a36c61f9SKrishna Gudipati 	u32	fw_frm_tgt_abort;	/*  target ABTS parsed by f/w */
92a36c61f9SKrishna Gudipati 	u32	fw_frm_unknown;		/*  unknown parsed by f/w */
93a36c61f9SKrishna Gudipati 	u32	fw_data_dma;		/*  f/w DMA'ed the data frame */
94a36c61f9SKrishna Gudipati 	u32	fw_frm_drop;		/*  f/w drop the frame */
95a36c61f9SKrishna Gudipati 
96a36c61f9SKrishna Gudipati 	u32	rec_timeout;		/*  FW rec timed out */
97a36c61f9SKrishna Gudipati 	u32	error_rec;		/*  FW sending rec on
98a36c61f9SKrishna Gudipati 					 *  an error condition*/
99a36c61f9SKrishna Gudipati 	u32	wait_for_si;		/*  FW wait for SI */
100a36c61f9SKrishna Gudipati 	u32	rec_rsp_inval;		/*  REC rsp invalid */
101f52c98d4SVijaya Mohan Guvva 	u32     rec_rsp_xchg_comp;	/*  REC rsp xchg complete */
102f52c98d4SVijaya Mohan Guvva 	u32     rec_rsp_rd_si_ownd;	/*  REC rsp read si owned */
103f52c98d4SVijaya Mohan Guvva 
104a36c61f9SKrishna Gudipati 	u32	seqr_io_abort;		/*  target does not know cmd so abort */
105a36c61f9SKrishna Gudipati 	u32	seqr_io_retry;		/*  SEQR failed so retry IO */
106a36c61f9SKrishna Gudipati 
107a36c61f9SKrishna Gudipati 	u32	itn_cisc_upd_rsp;	/*  ITN cisc updated on fcp_rsp */
108a36c61f9SKrishna Gudipati 	u32	itn_cisc_upd_data;	/*  ITN cisc updated on fcp_data */
109a36c61f9SKrishna Gudipati 	u32	itn_cisc_upd_xfer_rdy;	/*  ITN cisc updated on fcp_data */
110a36c61f9SKrishna Gudipati 
111a36c61f9SKrishna Gudipati 	u32	fcp_data_lost;		/*  fcp data lost */
112a36c61f9SKrishna Gudipati 
113a36c61f9SKrishna Gudipati 	u32	ro_set_in_xfer_rdy;	/*  Target set RO in Xfer_rdy frame */
114a36c61f9SKrishna Gudipati 	u32	xfer_rdy_ooo_err;	/*  Out of order Xfer_rdy received */
115a36c61f9SKrishna Gudipati 	u32	xfer_rdy_unknown_err;	/*  unknown error in xfer_rdy frame */
116a36c61f9SKrishna Gudipati 
117a36c61f9SKrishna Gudipati 	u32	io_abort_timeout;	/*  ABTS timedout  */
118a36c61f9SKrishna Gudipati 	u32	sler_initiated;		/*  SLER initiated */
119a36c61f9SKrishna Gudipati 
120a36c61f9SKrishna Gudipati 	u32	unexp_fcp_rsp;		/*  fcp response in wrong state */
121a36c61f9SKrishna Gudipati 
122a36c61f9SKrishna Gudipati 	u32	fcp_rsp_under_run;	/*  fcp rsp IO underrun */
123a36c61f9SKrishna Gudipati 	u32     fcp_rsp_under_run_wr;   /*  fcp rsp IO underrun for write */
124a36c61f9SKrishna Gudipati 	u32	fcp_rsp_under_run_err;	/*  fcp rsp IO underrun error */
125a36c61f9SKrishna Gudipati 	u32     fcp_rsp_resid_inval;    /*  invalid residue */
126a36c61f9SKrishna Gudipati 	u32	fcp_rsp_over_run;	/*  fcp rsp IO overrun */
127a36c61f9SKrishna Gudipati 	u32	fcp_rsp_over_run_err;	/*  fcp rsp IO overrun error */
128a36c61f9SKrishna Gudipati 	u32	fcp_rsp_proto_err;	/*  protocol error in fcp rsp */
129a36c61f9SKrishna Gudipati 	u32	fcp_rsp_sense_err;	/*  error in sense info in fcp rsp */
130a36c61f9SKrishna Gudipati 	u32	fcp_conf_req;		/*  FCP conf requested */
131a36c61f9SKrishna Gudipati 
132a36c61f9SKrishna Gudipati 	u32	tgt_aborted_io;		/*  target initiated abort */
133a36c61f9SKrishna Gudipati 
134a36c61f9SKrishna Gudipati 	u32	ioh_edtov_timeout_event;/*  IOH edtov timer popped */
135a36c61f9SKrishna Gudipati 	u32	ioh_fcp_rsp_excp_event;	/*  IOH FCP_RSP exception */
136a36c61f9SKrishna Gudipati 	u32	ioh_fcp_conf_event;	/*  IOH FCP_CONF */
137a36c61f9SKrishna Gudipati 	u32	ioh_mult_frm_rsp_event;	/*  IOH multi_frame FCP_RSP */
138a36c61f9SKrishna Gudipati 	u32	ioh_hit_class2_event;	/*  IOH hit class2 */
139a36c61f9SKrishna Gudipati 	u32	ioh_miss_other_event;	/*  IOH miss other */
140a36c61f9SKrishna Gudipati 	u32	ioh_seq_cnt_err_event;	/*  IOH seq cnt error */
141a36c61f9SKrishna Gudipati 	u32	ioh_len_err_event;	/*  IOH len error - fcp_dl !=
142a36c61f9SKrishna Gudipati 					 *  bytes xfered */
143a36c61f9SKrishna Gudipati 	u32	ioh_seq_len_err_event;	/*  IOH seq len error */
144a36c61f9SKrishna Gudipati 	u32	ioh_data_oor_event;	/*  Data out of range */
145a36c61f9SKrishna Gudipati 	u32	ioh_ro_ooo_event;	/*  Relative offset out of range */
146a36c61f9SKrishna Gudipati 	u32	ioh_cpu_owned_event;	/*  IOH hit -iost owned by f/w */
14725985edcSLucas De Marchi 	u32	ioh_unexp_frame_event;	/*  unexpected frame received
148a36c61f9SKrishna Gudipati 					 *  count */
149a36c61f9SKrishna Gudipati 	u32	ioh_err_int;		/*  IOH error int during data-phase
150275a63acSJing Huang 					 *  for scsi write */
151a36c61f9SKrishna Gudipati };
152a36c61f9SKrishna Gudipati 
15360138066SKrishna Gudipati struct bfa_fw_tio_stats_s {
15460138066SKrishna Gudipati 	u32	tio_conf_proc;	    /* TIO CONF processed */
15560138066SKrishna Gudipati 	u32	tio_conf_drop;      /* TIO CONF dropped */
15660138066SKrishna Gudipati 	u32	tio_cleanup_req;    /* TIO cleanup requested */
15760138066SKrishna Gudipati 	u32	tio_cleanup_comp;   /* TIO cleanup completed */
15860138066SKrishna Gudipati 	u32	tio_abort_rsp;      /* TIO abort response */
15960138066SKrishna Gudipati 	u32	tio_abort_rsp_comp; /* TIO abort rsp completed */
16060138066SKrishna Gudipati 	u32	tio_abts_req;       /* TIO ABTS requested */
16160138066SKrishna Gudipati 	u32	tio_abts_ack;       /* TIO ABTS ack-ed */
16260138066SKrishna Gudipati 	u32	tio_abts_ack_nocomp;/* TIO ABTS ack-ed but not completed */
16360138066SKrishna Gudipati 	u32	tio_abts_tmo;       /* TIO ABTS timeout */
16460138066SKrishna Gudipati 	u32	tio_snsdata_dma;    /* TIO sense data DMA */
16560138066SKrishna Gudipati 	u32	tio_rxwchan_wait;   /* TIO waiting for RX wait channel */
16660138066SKrishna Gudipati 	u32	tio_rxwchan_avail;  /* TIO RX wait channel available */
16760138066SKrishna Gudipati 	u32	tio_hit_bls;        /* TIO IOH BLS event */
16860138066SKrishna Gudipati 	u32	tio_uf_recv;        /* TIO received UF */
16960138066SKrishna Gudipati 	u32	tio_rd_invalid_sm;  /* TIO read reqst in wrong state machine */
17060138066SKrishna Gudipati 	u32	tio_wr_invalid_sm;  /* TIO write reqst in wrong state machine */
17160138066SKrishna Gudipati 
17260138066SKrishna Gudipati 	u32	ds_rxwchan_wait;    /* DS waiting for RX wait channel */
17360138066SKrishna Gudipati 	u32	ds_rxwchan_avail;   /* DS RX wait channel available */
17460138066SKrishna Gudipati 	u32	ds_unaligned_rd;    /* DS unaligned read */
175275a63acSJing Huang 	u32	ds_rdcomp_invalid_sm; /* DS read completed in wrong state
176275a63acSJing Huang 				       * machine */
177275a63acSJing Huang 	u32	ds_wrcomp_invalid_sm; /* DS write completed in wrong state
178275a63acSJing Huang 				       * machine */
17960138066SKrishna Gudipati 	u32	ds_flush_req;       /* DS flush requested */
18060138066SKrishna Gudipati 	u32	ds_flush_comp;      /* DS flush completed */
18160138066SKrishna Gudipati 	u32	ds_xfrdy_exp;       /* DS XFER_RDY expired */
18260138066SKrishna Gudipati 	u32	ds_seq_cnt_err;     /* DS seq cnt error */
18360138066SKrishna Gudipati 	u32	ds_seq_len_err;     /* DS seq len error */
18460138066SKrishna Gudipati 	u32	ds_data_oor;        /* DS data out of order */
18560138066SKrishna Gudipati 	u32	ds_hit_bls;	    /* DS hit BLS */
18660138066SKrishna Gudipati 	u32	ds_edtov_timer_exp; /* DS edtov expired */
18760138066SKrishna Gudipati 	u32	ds_cpu_owned;       /* DS cpu owned */
18860138066SKrishna Gudipati 	u32	ds_hit_class2;      /* DS hit class2 */
18960138066SKrishna Gudipati 	u32	ds_length_err;      /* DS length error */
19060138066SKrishna Gudipati 	u32	ds_ro_ooo_err;      /* DS relative offset out-of-order error */
19160138066SKrishna Gudipati 	u32	ds_rectov_timer_exp;/* DS rectov expired */
19260138066SKrishna Gudipati 	u32	ds_unexp_fr_err;    /* DS unexp frame error */
19360138066SKrishna Gudipati };
19460138066SKrishna Gudipati 
19560138066SKrishna Gudipati /*
19660138066SKrishna Gudipati  * IOC firmware IO stats
19760138066SKrishna Gudipati  */
19860138066SKrishna Gudipati struct bfa_fw_io_stats_s {
19960138066SKrishna Gudipati 	struct bfa_fw_ioim_stats_s	ioim_stats;
20060138066SKrishna Gudipati 	struct bfa_fw_tio_stats_s	tio_stats;
20160138066SKrishna Gudipati };
20260138066SKrishna Gudipati 
203acdc79a6SJing Huang /*
204a36c61f9SKrishna Gudipati  * IOC port firmware stats
205a36c61f9SKrishna Gudipati  */
206a36c61f9SKrishna Gudipati 
207a36c61f9SKrishna Gudipati struct bfa_fw_port_fpg_stats_s {
208a36c61f9SKrishna Gudipati 	u32    intr_evt;
209a36c61f9SKrishna Gudipati 	u32    intr;
210a36c61f9SKrishna Gudipati 	u32    intr_excess;
211a36c61f9SKrishna Gudipati 	u32    intr_cause0;
212a36c61f9SKrishna Gudipati 	u32    intr_other;
213a36c61f9SKrishna Gudipati 	u32    intr_other_ign;
214a36c61f9SKrishna Gudipati 	u32    sig_lost;
215a36c61f9SKrishna Gudipati 	u32    sig_regained;
216a36c61f9SKrishna Gudipati 	u32    sync_lost;
217a36c61f9SKrishna Gudipati 	u32    sync_to;
218a36c61f9SKrishna Gudipati 	u32    sync_regained;
219a36c61f9SKrishna Gudipati 	u32    div2_overflow;
220a36c61f9SKrishna Gudipati 	u32    div2_underflow;
221a36c61f9SKrishna Gudipati 	u32    efifo_overflow;
222a36c61f9SKrishna Gudipati 	u32    efifo_underflow;
223a36c61f9SKrishna Gudipati 	u32    idle_rx;
224a36c61f9SKrishna Gudipati 	u32    lrr_rx;
225a36c61f9SKrishna Gudipati 	u32    lr_rx;
226a36c61f9SKrishna Gudipati 	u32    ols_rx;
227a36c61f9SKrishna Gudipati 	u32    nos_rx;
228a36c61f9SKrishna Gudipati 	u32    lip_rx;
229a36c61f9SKrishna Gudipati 	u32    arbf0_rx;
230a36c61f9SKrishna Gudipati 	u32    arb_rx;
231a36c61f9SKrishna Gudipati 	u32    mrk_rx;
232a36c61f9SKrishna Gudipati 	u32    const_mrk_rx;
233a36c61f9SKrishna Gudipati 	u32    prim_unknown;
234a36c61f9SKrishna Gudipati };
235a36c61f9SKrishna Gudipati 
236a36c61f9SKrishna Gudipati 
237a36c61f9SKrishna Gudipati struct bfa_fw_port_lksm_stats_s {
238a36c61f9SKrishna Gudipati 	u32    hwsm_success;       /*  hwsm state machine success          */
239a36c61f9SKrishna Gudipati 	u32    hwsm_fails;         /*  hwsm fails                          */
240a36c61f9SKrishna Gudipati 	u32    hwsm_wdtov;         /*  hwsm timed out                      */
241a36c61f9SKrishna Gudipati 	u32    swsm_success;       /*  swsm success                        */
242a36c61f9SKrishna Gudipati 	u32    swsm_fails;         /*  swsm fails                          */
243a36c61f9SKrishna Gudipati 	u32    swsm_wdtov;         /*  swsm timed out                      */
244a36c61f9SKrishna Gudipati 	u32    busybufs;           /*  link init failed due to busybuf     */
245a36c61f9SKrishna Gudipati 	u32    buf_waits;          /*  bufwait state entries               */
246a36c61f9SKrishna Gudipati 	u32    link_fails;         /*  link failures                       */
247a36c61f9SKrishna Gudipati 	u32    psp_errors;         /*  primitive sequence protocol errors  */
248a36c61f9SKrishna Gudipati 	u32    lr_unexp;           /*  No. of times LR rx-ed unexpectedly  */
249a36c61f9SKrishna Gudipati 	u32    lrr_unexp;          /*  No. of times LRR rx-ed unexpectedly */
250a36c61f9SKrishna Gudipati 	u32    lr_tx;              /*  No. of times LR tx started          */
251a36c61f9SKrishna Gudipati 	u32    lrr_tx;             /*  No. of times LRR tx started         */
252a36c61f9SKrishna Gudipati 	u32    ols_tx;             /*  No. of times OLS tx started         */
253a36c61f9SKrishna Gudipati 	u32    nos_tx;             /*  No. of times NOS tx started         */
254a36c61f9SKrishna Gudipati 	u32    hwsm_lrr_rx;        /*  No. of times LRR rx-ed by HWSM      */
255a36c61f9SKrishna Gudipati 	u32    hwsm_lr_rx;         /*  No. of times LR rx-ed by HWSM       */
256a36c61f9SKrishna Gudipati };
257a36c61f9SKrishna Gudipati 
258a36c61f9SKrishna Gudipati struct bfa_fw_port_snsm_stats_s {
259a36c61f9SKrishna Gudipati 	u32    hwsm_success;       /*  Successful hwsm terminations        */
260a36c61f9SKrishna Gudipati 	u32    hwsm_fails;         /*  hwsm fail count                     */
261a36c61f9SKrishna Gudipati 	u32    hwsm_wdtov;         /*  hwsm timed out                      */
262a36c61f9SKrishna Gudipati 	u32    swsm_success;       /*  swsm success                        */
263a36c61f9SKrishna Gudipati 	u32    swsm_wdtov;         /*  swsm timed out                      */
264a36c61f9SKrishna Gudipati 	u32    error_resets;       /*  error resets initiated by upsm      */
265a36c61f9SKrishna Gudipati 	u32    sync_lost;          /*  Sync loss count                     */
266a36c61f9SKrishna Gudipati 	u32    sig_lost;           /*  Signal loss count                   */
267f2ee7601SKrishna Gudipati 	u32    asn8g_attempts;	   /* SNSM HWSM at 8Gbps attempts	   */
2684a49b044SKrishna Gudipati 	u32    adapt_success;	   /* SNSM adaptation success	*/
2694a49b044SKrishna Gudipati 	u32    adapt_fails;	   /* SNSM adaptation failures */
2704a49b044SKrishna Gudipati 	u32    adapt_ign_fails;	   /* SNSM adaptation failures ignored */
271a36c61f9SKrishna Gudipati };
272a36c61f9SKrishna Gudipati 
273a36c61f9SKrishna Gudipati struct bfa_fw_port_physm_stats_s {
274a36c61f9SKrishna Gudipati 	u32    module_inserts;     /*  Module insert count                 */
275a36c61f9SKrishna Gudipati 	u32    module_xtracts;     /*  Module extracts count               */
276a36c61f9SKrishna Gudipati 	u32    module_invalids;    /*  Invalid module inserted count       */
277a36c61f9SKrishna Gudipati 	u32    module_read_ign;    /*  Module validation status ignored    */
278a36c61f9SKrishna Gudipati 	u32    laser_faults;       /*  Laser fault count                   */
279a36c61f9SKrishna Gudipati 	u32    rsvd;
280a36c61f9SKrishna Gudipati };
281a36c61f9SKrishna Gudipati 
282a36c61f9SKrishna Gudipati struct bfa_fw_fip_stats_s {
283a36c61f9SKrishna Gudipati 	u32    vlan_req;           /*  vlan discovery requests             */
284a36c61f9SKrishna Gudipati 	u32    vlan_notify;        /*  vlan notifications                  */
285a36c61f9SKrishna Gudipati 	u32    vlan_err;           /*  vlan response error                 */
286a36c61f9SKrishna Gudipati 	u32    vlan_timeouts;      /*  vlan disvoery timeouts              */
287a36c61f9SKrishna Gudipati 	u32    vlan_invalids;      /*  invalid vlan in discovery advert.   */
288a36c61f9SKrishna Gudipati 	u32    disc_req;           /*  Discovery solicit requests          */
289a36c61f9SKrishna Gudipati 	u32    disc_rsp;           /*  Discovery solicit response          */
290a36c61f9SKrishna Gudipati 	u32    disc_err;           /*  Discovery advt. parse errors        */
291a36c61f9SKrishna Gudipati 	u32    disc_unsol;         /*  Discovery unsolicited               */
292a36c61f9SKrishna Gudipati 	u32    disc_timeouts;      /*  Discovery timeouts                  */
293a36c61f9SKrishna Gudipati 	u32    disc_fcf_unavail;   /*  Discovery FCF Not Avail.            */
294a36c61f9SKrishna Gudipati 	u32    linksvc_unsupp;     /*  Unsupported link service req        */
295a36c61f9SKrishna Gudipati 	u32    linksvc_err;        /*  Parse error in link service req     */
296a36c61f9SKrishna Gudipati 	u32    logo_req;           /*  FIP logos received                  */
297a36c61f9SKrishna Gudipati 	u32    clrvlink_req;       /*  Clear virtual link req              */
298a36c61f9SKrishna Gudipati 	u32    op_unsupp;          /*  Unsupported FIP operation           */
299a36c61f9SKrishna Gudipati 	u32    untagged;           /*  Untagged frames (ignored)           */
300a36c61f9SKrishna Gudipati 	u32    invalid_version;    /*  Invalid FIP version                 */
301a36c61f9SKrishna Gudipati };
302a36c61f9SKrishna Gudipati 
303a36c61f9SKrishna Gudipati struct bfa_fw_lps_stats_s {
304a36c61f9SKrishna Gudipati 	u32    mac_invalids;       /*  Invalid mac assigned                */
305a36c61f9SKrishna Gudipati 	u32    rsvd;
306a36c61f9SKrishna Gudipati };
307a36c61f9SKrishna Gudipati 
308a36c61f9SKrishna Gudipati struct bfa_fw_fcoe_stats_s {
309a36c61f9SKrishna Gudipati 	u32    cee_linkups;        /*  CEE link up count                   */
310a36c61f9SKrishna Gudipati 	u32    cee_linkdns;        /*  CEE link down count                 */
311a36c61f9SKrishna Gudipati 	u32    fip_linkups;        /*  FIP link up count                   */
312a36c61f9SKrishna Gudipati 	u32    fip_linkdns;        /*  FIP link up count                   */
313a36c61f9SKrishna Gudipati 	u32    fip_fails;          /*  FIP fail count                      */
314a36c61f9SKrishna Gudipati 	u32    mac_invalids;       /*  Invalid mac assigned                */
315a36c61f9SKrishna Gudipati };
316a36c61f9SKrishna Gudipati 
317acdc79a6SJing Huang /*
318a36c61f9SKrishna Gudipati  * IOC firmware FCoE port stats
319a36c61f9SKrishna Gudipati  */
320a36c61f9SKrishna Gudipati struct bfa_fw_fcoe_port_stats_s {
321a36c61f9SKrishna Gudipati 	struct bfa_fw_fcoe_stats_s		fcoe_stats;
322a36c61f9SKrishna Gudipati 	struct bfa_fw_fip_stats_s		fip_stats;
323a36c61f9SKrishna Gudipati };
324a36c61f9SKrishna Gudipati 
325bc0e2c2aSKrishna Gudipati /**
326bc0e2c2aSKrishna Gudipati  * @brief LPSM statistics
327bc0e2c2aSKrishna Gudipati  */
328bc0e2c2aSKrishna Gudipati struct bfa_fw_lpsm_stats_s {
329bc0e2c2aSKrishna Gudipati 	u32	cls_rx;		/* LPSM cls_rx			*/
330bc0e2c2aSKrishna Gudipati 	u32	cls_tx;		/* LPSM cls_tx			*/
331bc0e2c2aSKrishna Gudipati 	u32	arbf0_rx;	/* LPSM abrf0 rcvd		*/
332bc0e2c2aSKrishna Gudipati 	u32	arbf0_tx;	/* LPSM abrf0 xmit		*/
333bc0e2c2aSKrishna Gudipati 	u32	init_rx;	/* LPSM loop init start		*/
334bc0e2c2aSKrishna Gudipati 	u32	unexp_hwst;	/* LPSM unknown hw state	*/
335bc0e2c2aSKrishna Gudipati 	u32	unexp_frame;	/* LPSM unknown_frame		*/
336bc0e2c2aSKrishna Gudipati 	u32	unexp_prim;	/* LPSM unexpected primitive	*/
337bc0e2c2aSKrishna Gudipati 	u32	prev_alpa_unavail; /* LPSM prev alpa unavailable */
338bc0e2c2aSKrishna Gudipati 	u32	alpa_unavail;	/* LPSM alpa not available	*/
339bc0e2c2aSKrishna Gudipati 	u32	lip_rx;		/* LPSM lip rcvd		*/
340bc0e2c2aSKrishna Gudipati 	u32	lip_f7f7_rx;	/* LPSM lip f7f7 rcvd		*/
341bc0e2c2aSKrishna Gudipati 	u32	lip_f8_rx;	/* LPSM lip f8 rcvd		*/
342bc0e2c2aSKrishna Gudipati 	u32	lip_f8f7_rx;	/* LPSM lip f8f7 rcvd		*/
343bc0e2c2aSKrishna Gudipati 	u32	lip_other_rx;	/* LPSM lip other rcvd		*/
344bc0e2c2aSKrishna Gudipati 	u32	lip_tx;		/* LPSM lip xmit		*/
345bc0e2c2aSKrishna Gudipati 	u32	retry_tov;	/* LPSM retry TOV		*/
346bc0e2c2aSKrishna Gudipati 	u32	lip_tov;	/* LPSM LIP wait TOV		*/
347bc0e2c2aSKrishna Gudipati 	u32	idle_tov;	/* LPSM idle wait TOV		*/
348bc0e2c2aSKrishna Gudipati 	u32	arbf0_tov;	/* LPSM arbfo wait TOV		*/
349bc0e2c2aSKrishna Gudipati 	u32	stop_loop_tov;	/* LPSM stop loop wait TOV	*/
350bc0e2c2aSKrishna Gudipati 	u32	lixa_tov;	/* LPSM lisa wait TOV		*/
351bc0e2c2aSKrishna Gudipati 	u32	lixx_tov;	/* LPSM lilp/lirp wait TOV	*/
352bc0e2c2aSKrishna Gudipati 	u32	cls_tov;	/* LPSM cls wait TOV		*/
353bc0e2c2aSKrishna Gudipati 	u32	sler;		/* LPSM SLER recvd		*/
354bc0e2c2aSKrishna Gudipati 	u32	failed;		/* LPSM failed			*/
355bc0e2c2aSKrishna Gudipati 	u32	success;	/* LPSM online			*/
356bc0e2c2aSKrishna Gudipati };
357bc0e2c2aSKrishna Gudipati 
358acdc79a6SJing Huang /*
359a36c61f9SKrishna Gudipati  * IOC firmware FC uport stats
360a36c61f9SKrishna Gudipati  */
361a36c61f9SKrishna Gudipati struct bfa_fw_fc_uport_stats_s {
362a36c61f9SKrishna Gudipati 	struct bfa_fw_port_snsm_stats_s		snsm_stats;
363a36c61f9SKrishna Gudipati 	struct bfa_fw_port_lksm_stats_s		lksm_stats;
364bc0e2c2aSKrishna Gudipati 	struct bfa_fw_lpsm_stats_s		lpsm_stats;
365a36c61f9SKrishna Gudipati };
366a36c61f9SKrishna Gudipati 
367acdc79a6SJing Huang /*
368a36c61f9SKrishna Gudipati  * IOC firmware FC port stats
369a36c61f9SKrishna Gudipati  */
370a36c61f9SKrishna Gudipati union bfa_fw_fc_port_stats_s {
371a36c61f9SKrishna Gudipati 	struct bfa_fw_fc_uport_stats_s		fc_stats;
372a36c61f9SKrishna Gudipati 	struct bfa_fw_fcoe_port_stats_s		fcoe_stats;
373a36c61f9SKrishna Gudipati };
374a36c61f9SKrishna Gudipati 
375acdc79a6SJing Huang /*
376a36c61f9SKrishna Gudipati  * IOC firmware port stats
377a36c61f9SKrishna Gudipati  */
378a36c61f9SKrishna Gudipati struct bfa_fw_port_stats_s {
379a36c61f9SKrishna Gudipati 	struct bfa_fw_port_fpg_stats_s		fpg_stats;
380a36c61f9SKrishna Gudipati 	struct bfa_fw_port_physm_stats_s	physm_stats;
381a36c61f9SKrishna Gudipati 	union  bfa_fw_fc_port_stats_s		fc_port;
382a36c61f9SKrishna Gudipati };
383a36c61f9SKrishna Gudipati 
384acdc79a6SJing Huang /*
385a36c61f9SKrishna Gudipati  * fcxchg module statistics
386a36c61f9SKrishna Gudipati  */
387a36c61f9SKrishna Gudipati struct bfa_fw_fcxchg_stats_s {
388a36c61f9SKrishna Gudipati 	u32	ua_tag_inv;
389a36c61f9SKrishna Gudipati 	u32	ua_state_inv;
390a36c61f9SKrishna Gudipati };
391a36c61f9SKrishna Gudipati 
392acdc79a6SJing Huang /*
393a36c61f9SKrishna Gudipati  *  Trunk statistics
394a36c61f9SKrishna Gudipati  */
395a36c61f9SKrishna Gudipati struct bfa_fw_trunk_stats_s {
396a36c61f9SKrishna Gudipati 	u32 emt_recvd;		/*  Trunk EMT received		*/
397a36c61f9SKrishna Gudipati 	u32 emt_accepted;	/*  Trunk EMT Accepted		*/
398a36c61f9SKrishna Gudipati 	u32 emt_rejected;	/*  Trunk EMT rejected		*/
399a36c61f9SKrishna Gudipati 	u32 etp_recvd;		/*  Trunk ETP received		*/
400a36c61f9SKrishna Gudipati 	u32 etp_accepted;	/*  Trunk ETP Accepted		*/
401a36c61f9SKrishna Gudipati 	u32 etp_rejected;	/*  Trunk ETP rejected		*/
402a36c61f9SKrishna Gudipati 	u32 lr_recvd;		/*  Trunk LR received		*/
403a36c61f9SKrishna Gudipati 	u32 rsvd;		/*  padding for 64 bit alignment */
404a36c61f9SKrishna Gudipati };
405a36c61f9SKrishna Gudipati 
406bbe37a67SVijaya Mohan Guvva struct bfa_fw_aport_stats_s {
407a36c61f9SKrishna Gudipati 	u32 flogi_sent;		/*  Flogi sent			*/
408a36c61f9SKrishna Gudipati 	u32 flogi_acc_recvd;	/*  Flogi Acc received		*/
409a36c61f9SKrishna Gudipati 	u32 flogi_rjt_recvd;	/*  Flogi rejects received	*/
410a36c61f9SKrishna Gudipati 	u32 flogi_retries;	/*  Flogi retries		*/
411a36c61f9SKrishna Gudipati 
412a36c61f9SKrishna Gudipati 	u32 elp_recvd;		/*  ELP received		*/
413a36c61f9SKrishna Gudipati 	u32 elp_accepted;	/*  ELP Accepted		*/
414a36c61f9SKrishna Gudipati 	u32 elp_rejected;	/*  ELP rejected		*/
415a36c61f9SKrishna Gudipati 	u32 elp_dropped;	/*  ELP dropped			*/
416bbe37a67SVijaya Mohan Guvva 
417bbe37a67SVijaya Mohan Guvva 	u32 bbcr_lr_count;	/*!< BBCR Link Resets		*/
418bbe37a67SVijaya Mohan Guvva 	u32 frame_lost_intrs;	/*!< BBCR Frame loss intrs	*/
419bbe37a67SVijaya Mohan Guvva 	u32 rrdy_lost_intrs;	/*!< BBCR Rrdy loss intrs	*/
420bbe37a67SVijaya Mohan Guvva 
421bbe37a67SVijaya Mohan Guvva 	u32 rsvd;
422a36c61f9SKrishna Gudipati };
423a36c61f9SKrishna Gudipati 
424acdc79a6SJing Huang /*
425a36c61f9SKrishna Gudipati  * IOCFC firmware stats
426a36c61f9SKrishna Gudipati  */
427a36c61f9SKrishna Gudipati struct bfa_fw_iocfc_stats_s {
428a36c61f9SKrishna Gudipati 	u32	cfg_reqs;	/*  cfg request */
429a36c61f9SKrishna Gudipati 	u32	updq_reqs;	/*  update queue request */
430a36c61f9SKrishna Gudipati 	u32	ic_reqs;	/*  interrupt coalesce reqs */
431a36c61f9SKrishna Gudipati 	u32	unknown_reqs;
432a36c61f9SKrishna Gudipati 	u32	set_intr_reqs;	/*  set interrupt reqs */
433a36c61f9SKrishna Gudipati };
434a36c61f9SKrishna Gudipati 
435acdc79a6SJing Huang /*
436a36c61f9SKrishna Gudipati  * IOC attributes returned in queries
437a36c61f9SKrishna Gudipati  */
438a36c61f9SKrishna Gudipati struct bfa_iocfc_attr_s {
439a36c61f9SKrishna Gudipati 	struct bfa_iocfc_cfg_s		config;		/*  IOCFC config   */
440a36c61f9SKrishna Gudipati 	struct bfa_iocfc_intr_attr_s	intr_attr;	/*  interrupt attr */
441a36c61f9SKrishna Gudipati };
442a36c61f9SKrishna Gudipati 
443acdc79a6SJing Huang /*
444a36c61f9SKrishna Gudipati  * Eth_sndrcv mod stats
445a36c61f9SKrishna Gudipati  */
446a36c61f9SKrishna Gudipati struct bfa_fw_eth_sndrcv_stats_s {
447a36c61f9SKrishna Gudipati 	u32	crc_err;
448a36c61f9SKrishna Gudipati 	u32	rsvd;		/*  64bit align    */
449a36c61f9SKrishna Gudipati };
450a36c61f9SKrishna Gudipati 
451acdc79a6SJing Huang /*
452a36c61f9SKrishna Gudipati  * CT MAC mod stats
453a36c61f9SKrishna Gudipati  */
454a36c61f9SKrishna Gudipati struct bfa_fw_mac_mod_stats_s {
455a36c61f9SKrishna Gudipati 	u32	mac_on;		/*  MAC got turned-on */
456a36c61f9SKrishna Gudipati 	u32	link_up;	/*  link-up */
457a36c61f9SKrishna Gudipati 	u32	signal_off;	/*  lost signal */
458a36c61f9SKrishna Gudipati 	u32	dfe_on;		/*  DFE on */
459a36c61f9SKrishna Gudipati 	u32	mac_reset;	/*  # of MAC reset to bring lnk up */
460a36c61f9SKrishna Gudipati 	u32	pcs_reset;	/*  # of PCS reset to bring lnk up */
461a36c61f9SKrishna Gudipati 	u32	loopback;	/*  MAC got into serdes loopback */
462a36c61f9SKrishna Gudipati 	u32	lb_mac_reset;
463a36c61f9SKrishna Gudipati 			/*  # of MAC reset to bring link up in loopback */
464a36c61f9SKrishna Gudipati 	u32	lb_pcs_reset;
465a36c61f9SKrishna Gudipati 			/*  # of PCS reset to bring link up in loopback */
466a36c61f9SKrishna Gudipati 	u32	rsvd;		/*  64bit align    */
467a36c61f9SKrishna Gudipati };
468a36c61f9SKrishna Gudipati 
469acdc79a6SJing Huang /*
470a36c61f9SKrishna Gudipati  * CT MOD stats
471a36c61f9SKrishna Gudipati  */
472a36c61f9SKrishna Gudipati struct bfa_fw_ct_mod_stats_s {
473a36c61f9SKrishna Gudipati 	u32	rxa_rds_undrun;	/*  RxA RDS underrun */
474a36c61f9SKrishna Gudipati 	u32	rad_bpc_ovfl;	/*  RAD BPC overflow */
475a36c61f9SKrishna Gudipati 	u32	rad_rlb_bpc_ovfl; /*  RAD RLB BPC overflow */
476a36c61f9SKrishna Gudipati 	u32	bpc_fcs_err;	/*  BPC FCS_ERR */
477a36c61f9SKrishna Gudipati 	u32	txa_tso_hdr;	/*  TxA TSO header too long */
478a36c61f9SKrishna Gudipati 	u32	rsvd;		/*  64bit align    */
479a36c61f9SKrishna Gudipati };
480a36c61f9SKrishna Gudipati 
481acdc79a6SJing Huang /*
482f52c98d4SVijaya Mohan Guvva  * RDS mod stats
483f52c98d4SVijaya Mohan Guvva  */
484f52c98d4SVijaya Mohan Guvva struct bfa_fw_rds_stats_s {
485f52c98d4SVijaya Mohan Guvva 	u32	no_fid_drop_err; /* RDS no fid drop error */
486f52c98d4SVijaya Mohan Guvva 	u32	rsvd;		 /* 64bit align */
487f52c98d4SVijaya Mohan Guvva };
488f52c98d4SVijaya Mohan Guvva 
489f52c98d4SVijaya Mohan Guvva /*
490a36c61f9SKrishna Gudipati  * IOC firmware stats
491a36c61f9SKrishna Gudipati  */
492a36c61f9SKrishna Gudipati struct bfa_fw_stats_s {
493a36c61f9SKrishna Gudipati 	struct bfa_fw_ioc_stats_s	ioc_stats;
494a36c61f9SKrishna Gudipati 	struct bfa_fw_iocfc_stats_s	iocfc_stats;
495a36c61f9SKrishna Gudipati 	struct bfa_fw_io_stats_s	io_stats;
496a36c61f9SKrishna Gudipati 	struct bfa_fw_port_stats_s	port_stats;
497a36c61f9SKrishna Gudipati 	struct bfa_fw_fcxchg_stats_s	fcxchg_stats;
498a36c61f9SKrishna Gudipati 	struct bfa_fw_lps_stats_s	lps_stats;
499a36c61f9SKrishna Gudipati 	struct bfa_fw_trunk_stats_s	trunk_stats;
500bbe37a67SVijaya Mohan Guvva 	struct bfa_fw_aport_stats_s	aport_stats;
501a36c61f9SKrishna Gudipati 	struct bfa_fw_mac_mod_stats_s	macmod_stats;
502a36c61f9SKrishna Gudipati 	struct bfa_fw_ct_mod_stats_s	ctmod_stats;
503a36c61f9SKrishna Gudipati 	struct bfa_fw_eth_sndrcv_stats_s	ethsndrcv_stats;
504f52c98d4SVijaya Mohan Guvva 	struct bfa_fw_rds_stats_s	rds_stats;
505a36c61f9SKrishna Gudipati };
506a36c61f9SKrishna Gudipati 
507a36c61f9SKrishna Gudipati #define BFA_IOCFC_PATHTOV_MAX	60
508a36c61f9SKrishna Gudipati #define BFA_IOCFC_QDEPTH_MAX	2000
509a36c61f9SKrishna Gudipati 
510acdc79a6SJing Huang /*
511a36c61f9SKrishna Gudipati  * QoS states
512a36c61f9SKrishna Gudipati  */
513a36c61f9SKrishna Gudipati enum bfa_qos_state {
5143ec4f2c8SKrishna Gudipati 	BFA_QOS_DISABLED = 0,		/* QoS is disabled */
515a36c61f9SKrishna Gudipati 	BFA_QOS_ONLINE = 1,		/*  QoS is online */
516a36c61f9SKrishna Gudipati 	BFA_QOS_OFFLINE = 2,		/*  QoS is offline */
517a36c61f9SKrishna Gudipati };
518a36c61f9SKrishna Gudipati 
519acdc79a6SJing Huang /*
520a36c61f9SKrishna Gudipati  * QoS  Priority levels.
521a36c61f9SKrishna Gudipati  */
522a36c61f9SKrishna Gudipati enum bfa_qos_priority {
523a36c61f9SKrishna Gudipati 	BFA_QOS_UNKNOWN = 0,
524a36c61f9SKrishna Gudipati 	BFA_QOS_HIGH  = 1,	/*  QoS Priority Level High */
525a36c61f9SKrishna Gudipati 	BFA_QOS_MED  =  2,	/*  QoS Priority Level Medium */
526a36c61f9SKrishna Gudipati 	BFA_QOS_LOW  =  3,	/*  QoS Priority Level Low */
527a36c61f9SKrishna Gudipati };
528a36c61f9SKrishna Gudipati 
529acdc79a6SJing Huang /*
530a36c61f9SKrishna Gudipati  * QoS  bandwidth allocation for each priority level
531a36c61f9SKrishna Gudipati  */
532a36c61f9SKrishna Gudipati enum bfa_qos_bw_alloc {
533a36c61f9SKrishna Gudipati 	BFA_QOS_BW_HIGH  = 60,	/*  bandwidth allocation for High */
534a36c61f9SKrishna Gudipati 	BFA_QOS_BW_MED  =  30,	/*  bandwidth allocation for Medium */
535a36c61f9SKrishna Gudipati 	BFA_QOS_BW_LOW  =  10,	/*  bandwidth allocation for Low */
536a36c61f9SKrishna Gudipati };
537a36c61f9SKrishna Gudipati #pragma pack(1)
5386894f013SKrishna Gudipati 
5396894f013SKrishna Gudipati struct bfa_qos_bw_s {
5406894f013SKrishna Gudipati 	u8	qos_bw_set;
5416894f013SKrishna Gudipati 	u8	high;
5426894f013SKrishna Gudipati 	u8	med;
5436894f013SKrishna Gudipati 	u8	low;
5446894f013SKrishna Gudipati };
5456894f013SKrishna Gudipati 
546acdc79a6SJing Huang /*
547a36c61f9SKrishna Gudipati  * QoS attribute returned in QoS Query
548a36c61f9SKrishna Gudipati  */
549a36c61f9SKrishna Gudipati struct bfa_qos_attr_s {
550a36c61f9SKrishna Gudipati 	u8	state;		/*  QoS current state */
551bc0e2c2aSKrishna Gudipati 	u8	rsvd1[3];
552a36c61f9SKrishna Gudipati 	u32	total_bb_cr;	/*  Total BB Credits */
5536894f013SKrishna Gudipati 	struct bfa_qos_bw_s qos_bw;	/* QOS bw cfg */
5546894f013SKrishna Gudipati 	struct bfa_qos_bw_s qos_bw_op;	/* QOS bw operational */
555a36c61f9SKrishna Gudipati };
556a36c61f9SKrishna Gudipati 
557bbe37a67SVijaya Mohan Guvva enum bfa_bbcr_state {
558bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_DISABLED,	/*!< BBCR is disable */
559bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ONLINE,	/*!< BBCR is online  */
560bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_OFFLINE,	/*!< BBCR is offline */
561bbe37a67SVijaya Mohan Guvva };
562bbe37a67SVijaya Mohan Guvva 
563bbe37a67SVijaya Mohan Guvva enum bfa_bbcr_err_reason {
564bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ERR_REASON_NONE, /*!< Unknown */
565bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ERR_REASON_SPEED_UNSUP, /*!< Port speed < max sup_speed */
566bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ERR_REASON_PEER_UNSUP,	/*!< BBCR is disable on peer port */
567bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ERR_REASON_NON_BRCD_SW, /*!< Connected to non BRCD switch */
568bbe37a67SVijaya Mohan Guvva 	BFA_BBCR_ERR_REASON_FLOGI_RJT, /*!< Login rejected by the switch */
569bbe37a67SVijaya Mohan Guvva };
570bbe37a67SVijaya Mohan Guvva 
571bbe37a67SVijaya Mohan Guvva struct bfa_bbcr_attr_s {
572bbe37a67SVijaya Mohan Guvva 	u8	state;
573bbe37a67SVijaya Mohan Guvva 	u8	peer_bb_scn;
574bbe37a67SVijaya Mohan Guvva 	u8	reason;
575bbe37a67SVijaya Mohan Guvva 	u8	rsvd;
576bbe37a67SVijaya Mohan Guvva };
577bbe37a67SVijaya Mohan Guvva 
578acdc79a6SJing Huang /*
579a36c61f9SKrishna Gudipati  * These fields should be displayed only from the CLI.
580a36c61f9SKrishna Gudipati  * There will be a separate BFAL API (get_qos_vc_attr ?)
581a36c61f9SKrishna Gudipati  * to retrieve this.
582a36c61f9SKrishna Gudipati  *
583a36c61f9SKrishna Gudipati  */
584a36c61f9SKrishna Gudipati #define  BFA_QOS_MAX_VC  16
585a36c61f9SKrishna Gudipati 
586a36c61f9SKrishna Gudipati struct bfa_qos_vc_info_s {
587a36c61f9SKrishna Gudipati 	u8 vc_credit;
588a36c61f9SKrishna Gudipati 	u8 borrow_credit;
589a36c61f9SKrishna Gudipati 	u8 priority;
590a36c61f9SKrishna Gudipati 	u8 resvd;
591a36c61f9SKrishna Gudipati };
592a36c61f9SKrishna Gudipati 
593a36c61f9SKrishna Gudipati struct bfa_qos_vc_attr_s {
594a36c61f9SKrishna Gudipati 	u16  total_vc_count;                    /*  Total VC Count */
595a36c61f9SKrishna Gudipati 	u16  shared_credit;
596a36c61f9SKrishna Gudipati 	u32  elp_opmode_flags;
597a36c61f9SKrishna Gudipati 	struct bfa_qos_vc_info_s vc_info[BFA_QOS_MAX_VC];  /* as many as
598a36c61f9SKrishna Gudipati 							    * total_vc_count */
599a36c61f9SKrishna Gudipati };
600a36c61f9SKrishna Gudipati 
601acdc79a6SJing Huang /*
602a36c61f9SKrishna Gudipati  * QoS statistics
603a36c61f9SKrishna Gudipati  */
604a36c61f9SKrishna Gudipati struct bfa_qos_stats_s {
605a36c61f9SKrishna Gudipati 	u32	flogi_sent;		/*  QoS Flogi sent */
606a36c61f9SKrishna Gudipati 	u32	flogi_acc_recvd;	/*  QoS Flogi Acc received */
607a36c61f9SKrishna Gudipati 	u32	flogi_rjt_recvd;	/*  QoS Flogi rejects received */
608a36c61f9SKrishna Gudipati 	u32	flogi_retries;		/*  QoS Flogi retries */
609a36c61f9SKrishna Gudipati 
610a36c61f9SKrishna Gudipati 	u32	elp_recvd;		/*  QoS ELP received */
611a36c61f9SKrishna Gudipati 	u32	elp_accepted;		/*  QoS ELP Accepted */
612a36c61f9SKrishna Gudipati 	u32	elp_rejected;		/*  QoS ELP rejected */
613a36c61f9SKrishna Gudipati 	u32	elp_dropped;		/*  QoS ELP dropped  */
614a36c61f9SKrishna Gudipati 
615a36c61f9SKrishna Gudipati 	u32	qos_rscn_recvd;		/*  QoS RSCN received */
616a36c61f9SKrishna Gudipati 	u32	rsvd;			/* padding for 64 bit alignment */
617a36c61f9SKrishna Gudipati };
618a36c61f9SKrishna Gudipati 
619acdc79a6SJing Huang /*
620a36c61f9SKrishna Gudipati  * FCoE statistics
621a36c61f9SKrishna Gudipati  */
622a36c61f9SKrishna Gudipati struct bfa_fcoe_stats_s {
623a36c61f9SKrishna Gudipati 	u64	secs_reset;	/*  Seconds since stats reset	     */
624a36c61f9SKrishna Gudipati 	u64	cee_linkups;	/*  CEE link up			     */
625a36c61f9SKrishna Gudipati 	u64	cee_linkdns;	/*  CEE link down		     */
626a36c61f9SKrishna Gudipati 	u64	fip_linkups;	/*  FIP link up			     */
627a36c61f9SKrishna Gudipati 	u64	fip_linkdns;	/*  FIP link down		     */
628a36c61f9SKrishna Gudipati 	u64	fip_fails;	/*  FIP failures		     */
629a36c61f9SKrishna Gudipati 	u64	mac_invalids;	/*  Invalid mac assignments	     */
630a36c61f9SKrishna Gudipati 	u64	vlan_req;	/*  Vlan requests		     */
631a36c61f9SKrishna Gudipati 	u64	vlan_notify;	/*  Vlan notifications		     */
632a36c61f9SKrishna Gudipati 	u64	vlan_err;	/*  Vlan notification errors	     */
633a36c61f9SKrishna Gudipati 	u64	vlan_timeouts;	/*  Vlan request timeouts	     */
634a36c61f9SKrishna Gudipati 	u64	vlan_invalids;	/*  Vlan invalids		     */
635a36c61f9SKrishna Gudipati 	u64	disc_req;	/*  Discovery requests		     */
636a36c61f9SKrishna Gudipati 	u64	disc_rsp;	/*  Discovery responses		     */
637a36c61f9SKrishna Gudipati 	u64	disc_err;	/*  Discovery error frames	     */
638a36c61f9SKrishna Gudipati 	u64	disc_unsol;	/*  Discovery unsolicited	     */
639a36c61f9SKrishna Gudipati 	u64	disc_timeouts;	/*  Discovery timeouts		     */
640a36c61f9SKrishna Gudipati 	u64	disc_fcf_unavail; /*  Discovery FCF not avail	     */
641275a63acSJing Huang 	u64	linksvc_unsupp;	/*  FIP link service req unsupp	     */
642a36c61f9SKrishna Gudipati 	u64	linksvc_err;	/*  FIP link service req errors	     */
643a36c61f9SKrishna Gudipati 	u64	logo_req;	/*  FIP logos received		     */
644a36c61f9SKrishna Gudipati 	u64	clrvlink_req;	/*  Clear virtual link requests	     */
645a36c61f9SKrishna Gudipati 	u64	op_unsupp;	/*  FIP operation unsupp.	     */
646a36c61f9SKrishna Gudipati 	u64	untagged;	/*  FIP untagged frames		     */
647a36c61f9SKrishna Gudipati 	u64	txf_ucast;	/*  Tx FCoE unicast frames	     */
648a36c61f9SKrishna Gudipati 	u64	txf_ucast_vlan;	/*  Tx FCoE unicast vlan frames      */
649a36c61f9SKrishna Gudipati 	u64	txf_ucast_octets; /*  Tx FCoE unicast octets	     */
650a36c61f9SKrishna Gudipati 	u64	txf_mcast;	/*  Tx FCoE multicast frames	     */
651a36c61f9SKrishna Gudipati 	u64	txf_mcast_vlan;	/*  Tx FCoE multicast vlan frames    */
652a36c61f9SKrishna Gudipati 	u64	txf_mcast_octets; /*  Tx FCoE multicast octets	     */
653a36c61f9SKrishna Gudipati 	u64	txf_bcast;	/*  Tx FCoE broadcast frames	     */
654a36c61f9SKrishna Gudipati 	u64	txf_bcast_vlan;	/*  Tx FCoE broadcast vlan frames    */
655a36c61f9SKrishna Gudipati 	u64	txf_bcast_octets; /*  Tx FCoE broadcast octets	     */
656a36c61f9SKrishna Gudipati 	u64	txf_timeout;	  /*  Tx timeouts		     */
657a36c61f9SKrishna Gudipati 	u64	txf_parity_errors; /*  Transmit parity err	     */
658a36c61f9SKrishna Gudipati 	u64	txf_fid_parity_errors; /*  Transmit FID parity err   */
659a36c61f9SKrishna Gudipati 	u64	rxf_ucast_octets; /*  Rx FCoE unicast octets	     */
660a36c61f9SKrishna Gudipati 	u64	rxf_ucast;	/*  Rx FCoE unicast frames	     */
661a36c61f9SKrishna Gudipati 	u64	rxf_ucast_vlan;	/*  Rx FCoE unicast vlan frames	     */
662a36c61f9SKrishna Gudipati 	u64	rxf_mcast_octets; /*  Rx FCoE multicast octets	     */
663a36c61f9SKrishna Gudipati 	u64	rxf_mcast;	/*  Rx FCoE multicast frames	     */
664a36c61f9SKrishna Gudipati 	u64	rxf_mcast_vlan;	/*  Rx FCoE multicast vlan frames    */
665a36c61f9SKrishna Gudipati 	u64	rxf_bcast_octets; /*  Rx FCoE broadcast octets	     */
666a36c61f9SKrishna Gudipati 	u64	rxf_bcast;	/*  Rx FCoE broadcast frames	     */
667a36c61f9SKrishna Gudipati 	u64	rxf_bcast_vlan;	/*  Rx FCoE broadcast vlan frames    */
668a36c61f9SKrishna Gudipati };
669a36c61f9SKrishna Gudipati 
670acdc79a6SJing Huang /*
671a36c61f9SKrishna Gudipati  * QoS or FCoE stats (fcport stats excluding physical FC port stats)
672a36c61f9SKrishna Gudipati  */
673a36c61f9SKrishna Gudipati union bfa_fcport_stats_u {
674a36c61f9SKrishna Gudipati 	struct bfa_qos_stats_s	fcqos;
675a36c61f9SKrishna Gudipati 	struct bfa_fcoe_stats_s	fcoe;
676a36c61f9SKrishna Gudipati };
677a36c61f9SKrishna Gudipati #pragma pack()
678a36c61f9SKrishna Gudipati 
679a36c61f9SKrishna Gudipati struct bfa_fcpim_del_itn_stats_s {
680a36c61f9SKrishna Gudipati 	u32	del_itn_iocomp_aborted;	   /* Aborted IO requests	      */
681a36c61f9SKrishna Gudipati 	u32	del_itn_iocomp_timedout;   /* IO timeouts		      */
682a36c61f9SKrishna Gudipati 	u32	del_itn_iocom_sqer_needed; /* IO retry for SQ error recovery  */
683a36c61f9SKrishna Gudipati 	u32	del_itn_iocom_res_free;    /* Delayed freeing of IO resources */
684a36c61f9SKrishna Gudipati 	u32	del_itn_iocom_hostabrts;   /* Host IO abort requests	      */
685a36c61f9SKrishna Gudipati 	u32	del_itn_total_ios;	   /* Total IO count		      */
686a36c61f9SKrishna Gudipati 	u32	del_io_iocdowns;	   /* IO cleaned-up due to IOC down   */
687a36c61f9SKrishna Gudipati 	u32	del_tm_iocdowns;	   /* TM cleaned-up due to IOC down   */
688a36c61f9SKrishna Gudipati };
689a36c61f9SKrishna Gudipati 
690a36c61f9SKrishna Gudipati struct bfa_itnim_iostats_s {
691a36c61f9SKrishna Gudipati 
692a36c61f9SKrishna Gudipati 	u32	total_ios;		/*  Total IO Requests		*/
693a36c61f9SKrishna Gudipati 	u32	input_reqs;		/*  Data in-bound requests	*/
694a36c61f9SKrishna Gudipati 	u32	output_reqs;		/*  Data out-bound requests	*/
695a36c61f9SKrishna Gudipati 	u32	io_comps;		/*  Total IO Completions	*/
69625985edcSLucas De Marchi 	u32	wr_throughput;		/*  Write data transferred in bytes */
69725985edcSLucas De Marchi 	u32	rd_throughput;		/*  Read data transferred in bytes  */
698a36c61f9SKrishna Gudipati 
699a36c61f9SKrishna Gudipati 	u32	iocomp_ok;		/*  Slowpath IO completions	*/
700a36c61f9SKrishna Gudipati 	u32	iocomp_underrun;	/*  IO underrun		*/
701a36c61f9SKrishna Gudipati 	u32	iocomp_overrun;		/*  IO overrun			*/
702a36c61f9SKrishna Gudipati 	u32	qwait;			/*  IO Request-Q wait		*/
703a36c61f9SKrishna Gudipati 	u32	qresumes;		/*  IO Request-Q wait done	*/
704a36c61f9SKrishna Gudipati 	u32	no_iotags;		/*  No free IO tag		*/
705a36c61f9SKrishna Gudipati 	u32	iocomp_timedout;	/*  IO timeouts		*/
706a36c61f9SKrishna Gudipati 	u32	iocom_nexus_abort;	/*  IO failure due to target offline */
707a36c61f9SKrishna Gudipati 	u32	iocom_proto_err;	/*  IO protocol errors		*/
708a36c61f9SKrishna Gudipati 	u32	iocom_dif_err;		/*  IO SBC-3 protection errors	*/
709a36c61f9SKrishna Gudipati 
710a36c61f9SKrishna Gudipati 	u32	iocom_sqer_needed;	/*  fcp-2 error recovery failed	*/
711a36c61f9SKrishna Gudipati 	u32	iocom_res_free;		/*  Delayed freeing of IO tag	*/
712a36c61f9SKrishna Gudipati 
713a36c61f9SKrishna Gudipati 
714a36c61f9SKrishna Gudipati 	u32	io_aborts;		/*  Host IO abort requests	*/
715a36c61f9SKrishna Gudipati 	u32	iocom_hostabrts;	/*  Host IO abort completions	*/
716a36c61f9SKrishna Gudipati 	u32	io_cleanups;		/*  IO clean-up requests	*/
717a36c61f9SKrishna Gudipati 	u32	path_tov_expired;	/*  IO path tov expired	*/
718a36c61f9SKrishna Gudipati 	u32	iocomp_aborted;		/*  IO abort completions	*/
719a36c61f9SKrishna Gudipati 	u32	io_iocdowns;		/*  IO cleaned-up due to IOC down */
720a36c61f9SKrishna Gudipati 	u32	iocom_utags;		/*  IO comp with unknown tags	*/
721a36c61f9SKrishna Gudipati 
722a36c61f9SKrishna Gudipati 	u32	io_tmaborts;		/*  Abort request due to TM command */
723a36c61f9SKrishna Gudipati 	u32	tm_io_comps;		/* Abort completion due to TM command */
724a36c61f9SKrishna Gudipati 
725a36c61f9SKrishna Gudipati 	u32	creates;		/*  IT Nexus create requests	*/
726a36c61f9SKrishna Gudipati 	u32	fw_create;		/*  IT Nexus FW create requests	*/
727a36c61f9SKrishna Gudipati 	u32	create_comps;		/*  IT Nexus FW create completions */
728a36c61f9SKrishna Gudipati 	u32	onlines;		/*  IT Nexus onlines		*/
729a36c61f9SKrishna Gudipati 	u32	offlines;		/*  IT Nexus offlines		*/
730a36c61f9SKrishna Gudipati 	u32	fw_delete;		/*  IT Nexus FW delete requests	*/
731a36c61f9SKrishna Gudipati 	u32	delete_comps;		/*  IT Nexus FW delete completions */
732a36c61f9SKrishna Gudipati 	u32	deletes;		/*  IT Nexus delete requests	   */
733a36c61f9SKrishna Gudipati 	u32	sler_events;		/*  SLER events		*/
734a36c61f9SKrishna Gudipati 	u32	ioc_disabled;		/*  Num IOC disables		*/
735a36c61f9SKrishna Gudipati 	u32	cleanup_comps;		/*  IT Nexus cleanup completions    */
736a36c61f9SKrishna Gudipati 
737a36c61f9SKrishna Gudipati 	u32	tm_cmnds;		/*  TM Requests		*/
738a36c61f9SKrishna Gudipati 	u32	tm_fw_rsps;		/*  TM Completions		*/
739a36c61f9SKrishna Gudipati 	u32	tm_success;		/*  TM initiated IO cleanup success */
740a36c61f9SKrishna Gudipati 	u32	tm_failures;		/*  TM initiated IO cleanup failure */
741a36c61f9SKrishna Gudipati 	u32	no_tskims;		/*  No free TM tag		*/
742a36c61f9SKrishna Gudipati 	u32	tm_qwait;		/*  TM Request-Q wait		*/
743a36c61f9SKrishna Gudipati 	u32	tm_qresumes;		/*  TM Request-Q wait done	*/
744a36c61f9SKrishna Gudipati 
745a36c61f9SKrishna Gudipati 	u32	tm_iocdowns;		/*  TM cleaned-up due to IOC down   */
746a36c61f9SKrishna Gudipati 	u32	tm_cleanups;		/*  TM cleanup requests	*/
747a36c61f9SKrishna Gudipati 	u32	tm_cleanup_comps;	/*  TM cleanup completions	*/
7488ca2dd87SKrishna Gudipati 	u32	rsvd[6];
749a36c61f9SKrishna Gudipati };
750a36c61f9SKrishna Gudipati 
751a36c61f9SKrishna Gudipati /* Modify char* port_stt[] in bfal_port.c if a new state was added */
752a36c61f9SKrishna Gudipati enum bfa_port_states {
753a36c61f9SKrishna Gudipati 	BFA_PORT_ST_UNINIT		= 1,
754a36c61f9SKrishna Gudipati 	BFA_PORT_ST_ENABLING_QWAIT	= 2,
755a36c61f9SKrishna Gudipati 	BFA_PORT_ST_ENABLING		= 3,
756a36c61f9SKrishna Gudipati 	BFA_PORT_ST_LINKDOWN		= 4,
757a36c61f9SKrishna Gudipati 	BFA_PORT_ST_LINKUP		= 5,
758a36c61f9SKrishna Gudipati 	BFA_PORT_ST_DISABLING_QWAIT	= 6,
759a36c61f9SKrishna Gudipati 	BFA_PORT_ST_DISABLING		= 7,
760a36c61f9SKrishna Gudipati 	BFA_PORT_ST_DISABLED		= 8,
761a36c61f9SKrishna Gudipati 	BFA_PORT_ST_STOPPED		= 9,
762a36c61f9SKrishna Gudipati 	BFA_PORT_ST_IOCDOWN		= 10,
763a36c61f9SKrishna Gudipati 	BFA_PORT_ST_IOCDIS		= 11,
764a36c61f9SKrishna Gudipati 	BFA_PORT_ST_FWMISMATCH		= 12,
765a36c61f9SKrishna Gudipati 	BFA_PORT_ST_PREBOOT_DISABLED	= 13,
766a36c61f9SKrishna Gudipati 	BFA_PORT_ST_TOGGLING_QWAIT	= 14,
76704ea6575SKrishna Gudipati 	BFA_PORT_ST_FAA_MISCONFIG	= 15,
768e353546eSKrishna Gudipati 	BFA_PORT_ST_DPORT		= 16,
7691a898a79SVijaya Mohan Guvva 	BFA_PORT_ST_DDPORT		= 17,
770a36c61f9SKrishna Gudipati 	BFA_PORT_ST_MAX_STATE,
771a36c61f9SKrishna Gudipati };
772a36c61f9SKrishna Gudipati 
773acdc79a6SJing Huang /*
774a36c61f9SKrishna Gudipati  *	Port operational type (in sync with SNIA port type).
775a36c61f9SKrishna Gudipati  */
776a36c61f9SKrishna Gudipati enum bfa_port_type {
777a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_UNKNOWN	= 1,	/*  port type is unknown */
778a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_NPORT	= 5,	/*  P2P with switched fabric */
779a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_NLPORT	= 6,	/*  public loop */
780a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_LPORT	= 20,	/*  private loop */
781a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_P2P	= 21,	/*  P2P with no switched fabric */
782a36c61f9SKrishna Gudipati 	BFA_PORT_TYPE_VPORT	= 22,	/*  NPIV - virtual port */
783a36c61f9SKrishna Gudipati };
784a36c61f9SKrishna Gudipati 
785acdc79a6SJing Huang /*
786a36c61f9SKrishna Gudipati  *	Port topology setting. A port's topology and fabric login status
787a36c61f9SKrishna Gudipati  *	determine its operational type.
788a36c61f9SKrishna Gudipati  */
789a36c61f9SKrishna Gudipati enum bfa_port_topology {
790a36c61f9SKrishna Gudipati 	BFA_PORT_TOPOLOGY_NONE = 0,	/*  No valid topology */
791bc0e2c2aSKrishna Gudipati 	BFA_PORT_TOPOLOGY_P2P_OLD_VER = 1, /* P2P def for older ver */
792a36c61f9SKrishna Gudipati 	BFA_PORT_TOPOLOGY_LOOP = 2,	/* LOOP topology */
793bc0e2c2aSKrishna Gudipati 	BFA_PORT_TOPOLOGY_AUTO_OLD_VER = 3, /* auto def for older ver */
794bc0e2c2aSKrishna Gudipati 	BFA_PORT_TOPOLOGY_AUTO = 4,	/* auto topology selection */
795bc0e2c2aSKrishna Gudipati 	BFA_PORT_TOPOLOGY_P2P = 5,	/* P2P only */
796a36c61f9SKrishna Gudipati };
797a36c61f9SKrishna Gudipati 
798acdc79a6SJing Huang /*
799a36c61f9SKrishna Gudipati  *	Physical port loopback types.
800a36c61f9SKrishna Gudipati  */
801a36c61f9SKrishna Gudipati enum bfa_port_opmode {
802a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_NORMAL   = 0x00, /*  normal non-loopback mode */
803a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_LB_INT   = 0x01, /*  internal loop back */
804a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_LB_SLW   = 0x02, /*  serial link wrapback (serdes) */
805a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_LB_EXT   = 0x04, /*  external loop back (serdes) */
806a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_LB_CBL   = 0x08, /*  cabled loop back */
807a36c61f9SKrishna Gudipati 	BFA_PORT_OPMODE_LB_NLINT = 0x20, /*  NL_Port internal loopback */
808a36c61f9SKrishna Gudipati };
809a36c61f9SKrishna Gudipati 
810a36c61f9SKrishna Gudipati #define BFA_PORT_OPMODE_LB_HARD(_mode)			\
811a36c61f9SKrishna Gudipati 	((_mode == BFA_PORT_OPMODE_LB_INT) ||		\
812a36c61f9SKrishna Gudipati 	(_mode == BFA_PORT_OPMODE_LB_SLW) ||		\
813a36c61f9SKrishna Gudipati 	(_mode == BFA_PORT_OPMODE_LB_EXT))
814a36c61f9SKrishna Gudipati 
815acdc79a6SJing Huang /*
816a36c61f9SKrishna Gudipati  *	Port link state
817a36c61f9SKrishna Gudipati  */
818a36c61f9SKrishna Gudipati enum bfa_port_linkstate {
819a36c61f9SKrishna Gudipati 	BFA_PORT_LINKUP		= 1,	/*  Physical port/Trunk link up */
820a36c61f9SKrishna Gudipati 	BFA_PORT_LINKDOWN	= 2,	/*  Physical port/Trunk link down */
821a36c61f9SKrishna Gudipati };
822a36c61f9SKrishna Gudipati 
823acdc79a6SJing Huang /*
824a36c61f9SKrishna Gudipati  *	Port link state reason code
825a36c61f9SKrishna Gudipati  */
826a36c61f9SKrishna Gudipati enum bfa_port_linkstate_rsn {
827a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_NONE		= 0,
828a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_DISABLED		= 1,
829a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_RX_NOS		= 2,
830a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_RX_OLS		= 3,
831a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_RX_LIP		= 4,
832a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_RX_LIPF7		= 5,
833a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_SFP_REMOVED	= 6,
834a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_PORT_FAULT	= 7,
835a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_RX_LOS		= 8,
836a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_LOCAL_FAULT	= 9,
837a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_REMOTE_FAULT	= 10,
838a36c61f9SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_TIMEOUT		= 11,
83904ea6575SKrishna Gudipati 	BFA_PORT_LINKSTATE_RSN_FAA_MISCONFIG	= 12,
840a36c61f9SKrishna Gudipati 
841a36c61f9SKrishna Gudipati 
842a36c61f9SKrishna Gudipati 
843a36c61f9SKrishna Gudipati 	/* CEE related reason codes/errors */
844a36c61f9SKrishna Gudipati 	CEE_LLDP_INFO_AGED_OUT			= 20,
845a36c61f9SKrishna Gudipati 	CEE_LLDP_SHUTDOWN_TLV_RCVD		= 21,
846a36c61f9SKrishna Gudipati 	CEE_PEER_NOT_ADVERTISE_DCBX		= 22,
847a36c61f9SKrishna Gudipati 	CEE_PEER_NOT_ADVERTISE_PG		= 23,
848a36c61f9SKrishna Gudipati 	CEE_PEER_NOT_ADVERTISE_PFC		= 24,
849a36c61f9SKrishna Gudipati 	CEE_PEER_NOT_ADVERTISE_FCOE		= 25,
850a36c61f9SKrishna Gudipati 	CEE_PG_NOT_COMPATIBLE			= 26,
851a36c61f9SKrishna Gudipati 	CEE_PFC_NOT_COMPATIBLE			= 27,
852a36c61f9SKrishna Gudipati 	CEE_FCOE_NOT_COMPATIBLE			= 28,
853a36c61f9SKrishna Gudipati 	CEE_BAD_PG_RCVD				= 29,
854a36c61f9SKrishna Gudipati 	CEE_BAD_BW_RCVD				= 30,
855a36c61f9SKrishna Gudipati 	CEE_BAD_PFC_RCVD			= 31,
856a36c61f9SKrishna Gudipati 	CEE_BAD_APP_PRI_RCVD			= 32,
857a36c61f9SKrishna Gudipati 	CEE_FCOE_PRI_PFC_OFF			= 33,
858a36c61f9SKrishna Gudipati 	CEE_DUP_CONTROL_TLV_RCVD		= 34,
859a36c61f9SKrishna Gudipati 	CEE_DUP_FEAT_TLV_RCVD			= 35,
860a36c61f9SKrishna Gudipati 	CEE_APPLY_NEW_CFG			= 36, /* reason, not error */
861a36c61f9SKrishna Gudipati 	CEE_PROTOCOL_INIT			= 37, /* reason, not error */
862a36c61f9SKrishna Gudipati 	CEE_PHY_LINK_DOWN			= 38,
863a36c61f9SKrishna Gudipati 	CEE_LLS_FCOE_ABSENT			= 39,
864a36c61f9SKrishna Gudipati 	CEE_LLS_FCOE_DOWN			= 40,
865a36c61f9SKrishna Gudipati 	CEE_ISCSI_NOT_COMPATIBLE		= 41,
866a36c61f9SKrishna Gudipati 	CEE_ISCSI_PRI_PFC_OFF			= 42,
867a36c61f9SKrishna Gudipati 	CEE_ISCSI_PRI_OVERLAP_FCOE_PRI		= 43
868a36c61f9SKrishna Gudipati };
86983763d59SKrishna Gudipati 
87083763d59SKrishna Gudipati #define MAX_LUN_MASK_CFG 16
87183763d59SKrishna Gudipati 
87283763d59SKrishna Gudipati /*
87383763d59SKrishna Gudipati  * Initially flash content may be fff. On making LUN mask enable and disable
874*1ecc820dSzuoqilin  * state change.  when report lun command is being processed it goes from
87583763d59SKrishna Gudipati  * BFA_LUN_MASK_ACTIVE to BFA_LUN_MASK_FETCH and comes back to
87683763d59SKrishna Gudipati  * BFA_LUN_MASK_ACTIVE.
87783763d59SKrishna Gudipati  */
87883763d59SKrishna Gudipati enum bfa_ioim_lun_mask_state_s {
87983763d59SKrishna Gudipati 	BFA_IOIM_LUN_MASK_INACTIVE = 0,
88083763d59SKrishna Gudipati 	BFA_IOIM_LUN_MASK_ACTIVE = 1,
88183763d59SKrishna Gudipati 	BFA_IOIM_LUN_MASK_FETCHED = 2,
88283763d59SKrishna Gudipati };
88383763d59SKrishna Gudipati 
88483763d59SKrishna Gudipati enum bfa_lunmask_state_s {
88583763d59SKrishna Gudipati 	BFA_LUNMASK_DISABLED = 0x00,
88683763d59SKrishna Gudipati 	BFA_LUNMASK_ENABLED = 0x01,
88783763d59SKrishna Gudipati 	BFA_LUNMASK_MINCFG = 0x02,
88883763d59SKrishna Gudipati 	BFA_LUNMASK_UNINITIALIZED = 0xff,
88983763d59SKrishna Gudipati };
89083763d59SKrishna Gudipati 
8914e1e0d8dSVijaya Mohan Guvva /**
8924e1e0d8dSVijaya Mohan Guvva  * FEC states
8934e1e0d8dSVijaya Mohan Guvva  */
8944e1e0d8dSVijaya Mohan Guvva enum bfa_fec_state_s {
8954e1e0d8dSVijaya Mohan Guvva 	BFA_FEC_ONLINE = 1,		/*!< FEC is online */
8964e1e0d8dSVijaya Mohan Guvva 	BFA_FEC_OFFLINE = 2,		/*!< FEC is offline */
8974e1e0d8dSVijaya Mohan Guvva 	BFA_FEC_OFFLINE_NOT_16G = 3,	/*!< FEC is offline (speed not 16Gig) */
8984e1e0d8dSVijaya Mohan Guvva };
8994e1e0d8dSVijaya Mohan Guvva 
900a36c61f9SKrishna Gudipati #pragma pack(1)
901acdc79a6SJing Huang /*
90245c5dc1dSKrishna Gudipati  * LUN mask configuration
90345c5dc1dSKrishna Gudipati  */
90445c5dc1dSKrishna Gudipati struct bfa_lun_mask_s {
90545c5dc1dSKrishna Gudipati 	wwn_t		lp_wwn;
90645c5dc1dSKrishna Gudipati 	wwn_t		rp_wwn;
90783763d59SKrishna Gudipati 	struct scsi_lun	lun;
90845c5dc1dSKrishna Gudipati 	u8		ua;
90945c5dc1dSKrishna Gudipati 	u8		rsvd[3];
91045c5dc1dSKrishna Gudipati 	u16		rp_tag;
91145c5dc1dSKrishna Gudipati 	u8		lp_tag;
91245c5dc1dSKrishna Gudipati 	u8		state;
91345c5dc1dSKrishna Gudipati };
91445c5dc1dSKrishna Gudipati 
91545c5dc1dSKrishna Gudipati #define MAX_LUN_MASK_CFG 16
91645c5dc1dSKrishna Gudipati struct bfa_lunmask_cfg_s {
91745c5dc1dSKrishna Gudipati 	u32	status;
91845c5dc1dSKrishna Gudipati 	u32	rsvd;
91945c5dc1dSKrishna Gudipati 	struct bfa_lun_mask_s	lun_list[MAX_LUN_MASK_CFG];
92045c5dc1dSKrishna Gudipati };
92145c5dc1dSKrishna Gudipati 
9227ace27aeSKrishna Gudipati struct bfa_throttle_cfg_s {
9237ace27aeSKrishna Gudipati 	u16	is_valid;
9247ace27aeSKrishna Gudipati 	u16	value;
9257ace27aeSKrishna Gudipati 	u32	rsvd;
9267ace27aeSKrishna Gudipati };
9277ace27aeSKrishna Gudipati 
9287ace27aeSKrishna Gudipati struct bfa_defs_fcpim_throttle_s {
9297ace27aeSKrishna Gudipati 	u16	max_value;
9307ace27aeSKrishna Gudipati 	u16	cur_value;
9317ace27aeSKrishna Gudipati 	u16	cfg_value;
9327ace27aeSKrishna Gudipati 	u16	rsvd;
9337ace27aeSKrishna Gudipati };
9347ace27aeSKrishna Gudipati 
935bbe37a67SVijaya Mohan Guvva #define BFA_BB_SCN_DEF 3
936bbe37a67SVijaya Mohan Guvva #define BFA_BB_SCN_MAX 0x0F
937bbe37a67SVijaya Mohan Guvva 
93845c5dc1dSKrishna Gudipati /*
939a36c61f9SKrishna Gudipati  *      Physical port configuration
940a36c61f9SKrishna Gudipati  */
941a36c61f9SKrishna Gudipati struct bfa_port_cfg_s {
942a36c61f9SKrishna Gudipati 	u8	 topology;	/*  bfa_port_topology		*/
943a36c61f9SKrishna Gudipati 	u8	 speed;		/*  enum bfa_port_speed	*/
944a36c61f9SKrishna Gudipati 	u8	 trunked;	/*  trunked or not		*/
945a36c61f9SKrishna Gudipati 	u8	 qos_enabled;	/*  qos enabled or not		*/
946a36c61f9SKrishna Gudipati 	u8	 cfg_hardalpa;	/*  is hard alpa configured	*/
947a36c61f9SKrishna Gudipati 	u8	 hardalpa;	/*  configured hard alpa	*/
94850444a34SMaggie 	__be16	 maxfrsize;	/*  maximum frame size		*/
949a36c61f9SKrishna Gudipati 	u8	 rx_bbcredit;	/*  receive buffer credits	*/
950a36c61f9SKrishna Gudipati 	u8	 tx_bbcredit;	/*  transmit buffer credits	*/
951a36c61f9SKrishna Gudipati 	u8	 ratelimit;	/*  ratelimit enabled or not	*/
952a36c61f9SKrishna Gudipati 	u8	 trl_def_speed;	/*  ratelimit default speed	*/
953bbe37a67SVijaya Mohan Guvva 	u8	 bb_cr_enabled; /*!< Config state of BB_SCN	*/
954bbe37a67SVijaya Mohan Guvva 	u8	 bb_scn;	/*!< BB_SCN value for FLOGI Exchg */
955a714134aSKrishna Gudipati 	u8	 faa_state;	/*  FAA enabled/disabled        */
956bc0e2c2aSKrishna Gudipati 	u8	 rsvd1;
957a36c61f9SKrishna Gudipati 	u16	 path_tov;	/*  device path timeout	*/
958a36c61f9SKrishna Gudipati 	u16	 q_depth;	/*  SCSI Queue depth		*/
9596894f013SKrishna Gudipati 	struct bfa_qos_bw_s qos_bw;	/* QOS bandwidth	*/
960a36c61f9SKrishna Gudipati };
961a36c61f9SKrishna Gudipati #pragma pack()
962a36c61f9SKrishna Gudipati 
963acdc79a6SJing Huang /*
964a36c61f9SKrishna Gudipati  *	Port attribute values.
965a36c61f9SKrishna Gudipati  */
966a36c61f9SKrishna Gudipati struct bfa_port_attr_s {
967a36c61f9SKrishna Gudipati 	/*
968a36c61f9SKrishna Gudipati 	 * Static fields
969a36c61f9SKrishna Gudipati 	 */
970a36c61f9SKrishna Gudipati 	wwn_t			nwwn;		/*  node wwn */
971a36c61f9SKrishna Gudipati 	wwn_t			pwwn;		/*  port wwn */
972a36c61f9SKrishna Gudipati 	wwn_t			factorynwwn;	/*  factory node wwn */
973a36c61f9SKrishna Gudipati 	wwn_t			factorypwwn;	/*  factory port wwn */
974275a63acSJing Huang 	enum fc_cos		cos_supported;	/*  supported class of
975275a63acSJing Huang 						 *  services */
976a36c61f9SKrishna Gudipati 	u32			rsvd;
977a36c61f9SKrishna Gudipati 	struct fc_symname_s	port_symname;	/*  port symbolic name */
978a36c61f9SKrishna Gudipati 	enum bfa_port_speed	speed_supported; /* supported speeds */
979a36c61f9SKrishna Gudipati 	bfa_boolean_t		pbind_enabled;
980a36c61f9SKrishna Gudipati 
981a36c61f9SKrishna Gudipati 	/*
982a36c61f9SKrishna Gudipati 	 * Configured values
983a36c61f9SKrishna Gudipati 	 */
984a36c61f9SKrishna Gudipati 	struct bfa_port_cfg_s	pport_cfg;	/*  pport cfg */
985a36c61f9SKrishna Gudipati 
986a36c61f9SKrishna Gudipati 	/*
987a36c61f9SKrishna Gudipati 	 * Dynamic field - info from BFA
988a36c61f9SKrishna Gudipati 	 */
989a36c61f9SKrishna Gudipati 	enum bfa_port_states	port_state;	/*  current port state */
990a36c61f9SKrishna Gudipati 	enum bfa_port_speed	speed;		/*  current speed */
991a36c61f9SKrishna Gudipati 	enum bfa_port_topology	topology;	/*  current topology */
992a36c61f9SKrishna Gudipati 	bfa_boolean_t		beacon;		/*  current beacon status */
993a36c61f9SKrishna Gudipati 	bfa_boolean_t		link_e2e_beacon; /* link beacon is on */
994275a63acSJing Huang 	bfa_boolean_t		bbsc_op_status;	/* fc credit recovery oper
995275a63acSJing Huang 						 * state */
9964e1e0d8dSVijaya Mohan Guvva 	enum bfa_fec_state_s	fec_state;	/*!< current FEC state */
997a36c61f9SKrishna Gudipati 
998a36c61f9SKrishna Gudipati 	/*
999a36c61f9SKrishna Gudipati 	 * Dynamic field - info from FCS
1000a36c61f9SKrishna Gudipati 	 */
1001a36c61f9SKrishna Gudipati 	u32			pid;		/*  port ID */
1002a36c61f9SKrishna Gudipati 	enum bfa_port_type	port_type;	/*  current topology */
1003a36c61f9SKrishna Gudipati 	u32			loopback;	/*  external loopback */
1004a36c61f9SKrishna Gudipati 	u32			authfail;	/*  auth fail state */
1005a36c61f9SKrishna Gudipati 
1006a36c61f9SKrishna Gudipati 	/* FCoE specific  */
1007a36c61f9SKrishna Gudipati 	u16			fcoe_vlan;
10084e1e0d8dSVijaya Mohan Guvva 	u8			rsvd1[2];
1009a36c61f9SKrishna Gudipati };
1010a36c61f9SKrishna Gudipati 
1011acdc79a6SJing Huang /*
1012a36c61f9SKrishna Gudipati  *	      Port FCP mappings.
1013a36c61f9SKrishna Gudipati  */
1014a36c61f9SKrishna Gudipati struct bfa_port_fcpmap_s {
1015a36c61f9SKrishna Gudipati 	char	osdevname[256];
1016a36c61f9SKrishna Gudipati 	u32	bus;
1017a36c61f9SKrishna Gudipati 	u32	target;
1018a36c61f9SKrishna Gudipati 	u32	oslun;
1019a36c61f9SKrishna Gudipati 	u32	fcid;
1020a36c61f9SKrishna Gudipati 	wwn_t	nwwn;
1021a36c61f9SKrishna Gudipati 	wwn_t	pwwn;
1022a36c61f9SKrishna Gudipati 	u64	fcplun;
1023a36c61f9SKrishna Gudipati 	char	luid[256];
1024a36c61f9SKrishna Gudipati };
1025a36c61f9SKrishna Gudipati 
1026acdc79a6SJing Huang /*
1027a36c61f9SKrishna Gudipati  *	      Port RNID info.
1028a36c61f9SKrishna Gudipati  */
1029a36c61f9SKrishna Gudipati struct bfa_port_rnid_s {
1030a36c61f9SKrishna Gudipati 	wwn_t	  wwn;
1031a36c61f9SKrishna Gudipati 	u32	  unittype;
1032a36c61f9SKrishna Gudipati 	u32	  portid;
1033a36c61f9SKrishna Gudipati 	u32	  attached_nodes_num;
1034a36c61f9SKrishna Gudipati 	u16	  ip_version;
1035a36c61f9SKrishna Gudipati 	u16	  udp_port;
1036a36c61f9SKrishna Gudipati 	u8	  ipaddr[16];
1037a36c61f9SKrishna Gudipati 	u16	  rsvd;
1038a36c61f9SKrishna Gudipati 	u16	  topologydiscoveryflags;
1039a36c61f9SKrishna Gudipati };
1040a36c61f9SKrishna Gudipati 
1041a36c61f9SKrishna Gudipati #pragma pack(1)
1042a36c61f9SKrishna Gudipati struct bfa_fcport_fcf_s {
1043a36c61f9SKrishna Gudipati 	wwn_t	name;		/*  FCF name		   */
1044a36c61f9SKrishna Gudipati 	wwn_t	fabric_name;    /*  Fabric Name		   */
1045a36c61f9SKrishna Gudipati 	u8	fipenabled;	/*  FIP enabled or not	   */
1046a36c61f9SKrishna Gudipati 	u8	fipfailed;	/*  FIP failed or not	   */
1047a36c61f9SKrishna Gudipati 	u8	resv[2];
1048a36c61f9SKrishna Gudipati 	u8	pri;		/*  FCF priority	   */
1049a36c61f9SKrishna Gudipati 	u8	version;	/*  FIP version used	   */
1050a36c61f9SKrishna Gudipati 	u8	available;      /*  Available for login    */
1051a36c61f9SKrishna Gudipati 	u8	fka_disabled;   /*  FKA is disabled	   */
1052a36c61f9SKrishna Gudipati 	u8	maxsz_verified; /*  FCoE max size verified */
1053a36c61f9SKrishna Gudipati 	u8	fc_map[3];      /*  FC map		   */
105450444a34SMaggie 	__be16	vlan;		/*  FCoE vlan tag/priority */
1055a36c61f9SKrishna Gudipati 	u32	fka_adv_per;    /*  FIP  ka advert. period */
1056a36c61f9SKrishna Gudipati 	mac_t	mac;		/*  FCF mac		   */
1057a36c61f9SKrishna Gudipati };
1058a36c61f9SKrishna Gudipati 
1059acdc79a6SJing Huang /*
1060a36c61f9SKrishna Gudipati  *	Trunk states for BCU/BFAL
1061a36c61f9SKrishna Gudipati  */
1062a36c61f9SKrishna Gudipati enum bfa_trunk_state {
1063a36c61f9SKrishna Gudipati 	BFA_TRUNK_DISABLED	= 0,	/*  Trunk is not configured	*/
1064a36c61f9SKrishna Gudipati 	BFA_TRUNK_ONLINE	= 1,	/*  Trunk is online		*/
1065a36c61f9SKrishna Gudipati 	BFA_TRUNK_OFFLINE	= 2,	/*  Trunk is offline		*/
1066a36c61f9SKrishna Gudipati };
1067a36c61f9SKrishna Gudipati 
1068acdc79a6SJing Huang /*
1069a36c61f9SKrishna Gudipati  *	VC attributes for trunked link
1070a36c61f9SKrishna Gudipati  */
1071a36c61f9SKrishna Gudipati struct bfa_trunk_vc_attr_s {
1072a36c61f9SKrishna Gudipati 	u32 bb_credit;
1073a36c61f9SKrishna Gudipati 	u32 elp_opmode_flags;
1074a36c61f9SKrishna Gudipati 	u32 req_credit;
1075a36c61f9SKrishna Gudipati 	u16 vc_credits[8];
1076a36c61f9SKrishna Gudipati };
1077a36c61f9SKrishna Gudipati 
1078bc0e2c2aSKrishna Gudipati struct bfa_fcport_loop_info_s {
1079bc0e2c2aSKrishna Gudipati 	u8	myalpa;		/* alpa claimed */
1080bc0e2c2aSKrishna Gudipati 	u8	alpabm_val;	/* alpa bitmap valid or not (1 or 0) */
1081bc0e2c2aSKrishna Gudipati 	u8	resvd[6];
1082bc0e2c2aSKrishna Gudipati 	struct fc_alpabm_s alpabm;	/* alpa bitmap */
1083bc0e2c2aSKrishna Gudipati };
1084bc0e2c2aSKrishna Gudipati 
1085acdc79a6SJing Huang /*
1086a36c61f9SKrishna Gudipati  *	Link state information
1087a36c61f9SKrishna Gudipati  */
1088a36c61f9SKrishna Gudipati struct bfa_port_link_s {
1089a36c61f9SKrishna Gudipati 	u8	 linkstate;	/*  Link state bfa_port_linkstate */
1090a36c61f9SKrishna Gudipati 	u8	 linkstate_rsn;	/*  bfa_port_linkstate_rsn_t */
1091a36c61f9SKrishna Gudipati 	u8	 topology;	/*  P2P/LOOP bfa_port_topology */
1092a36c61f9SKrishna Gudipati 	u8	 speed;		/*  Link speed (1/2/4/8 G) */
1093a36c61f9SKrishna Gudipati 	u32	 linkstate_opt; /*  Linkstate optional data (debug) */
1094a36c61f9SKrishna Gudipati 	u8	 trunked;	/*  Trunked or not (1 or 0) */
10954e1e0d8dSVijaya Mohan Guvva 	u8	 fec_state;	/*!< State of FEC */
10964e1e0d8dSVijaya Mohan Guvva 	u8	 resvd[6];
1097a36c61f9SKrishna Gudipati 	struct bfa_qos_attr_s  qos_attr;   /* QoS Attributes */
1098a36c61f9SKrishna Gudipati 	union {
1099bc0e2c2aSKrishna Gudipati 		struct bfa_fcport_loop_info_s loop_info;
1100bbe37a67SVijaya Mohan Guvva 		struct bfa_bbcr_attr_s bbcr_attr;
1101bc0e2c2aSKrishna Gudipati 		union {
1102bc0e2c2aSKrishna Gudipati 			struct bfa_qos_vc_attr_s qos_vc_attr;
1103bc0e2c2aSKrishna Gudipati 					/*  VC info from ELP */
1104a36c61f9SKrishna Gudipati 			struct bfa_trunk_vc_attr_s trunk_vc_attr;
1105bc0e2c2aSKrishna Gudipati 			struct bfa_fcport_fcf_s fcf;
1106bc0e2c2aSKrishna Gudipati 					/*  FCF information (for FCoE) */
1107a36c61f9SKrishna Gudipati 		} vc_fcf;
1108bc0e2c2aSKrishna Gudipati 	} attr;
1109a36c61f9SKrishna Gudipati };
1110a36c61f9SKrishna Gudipati #pragma pack()
1111a36c61f9SKrishna Gudipati 
1112a36c61f9SKrishna Gudipati enum bfa_trunk_link_fctl {
1113a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_FCTL_NORMAL,
1114a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_FCTL_VC,
1115a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_FCTL_VC_QOS,
1116a36c61f9SKrishna Gudipati };
1117a36c61f9SKrishna Gudipati 
1118a36c61f9SKrishna Gudipati enum bfa_trunk_link_state {
1119a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_STATE_UP = 1,		/* link part of trunk */
1120a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_STATE_DN_LINKDN = 2,	/* physical link down */
1121a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_STATE_DN_GRP_MIS = 3,	/* trunk group different */
1122a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_STATE_DN_SPD_MIS = 4,	/* speed mismatch */
1123a36c61f9SKrishna Gudipati 	BFA_TRUNK_LINK_STATE_DN_MODE_MIS = 5,	/* remote port not trunked */
1124a36c61f9SKrishna Gudipati };
1125a36c61f9SKrishna Gudipati 
1126a36c61f9SKrishna Gudipati #define BFA_TRUNK_MAX_PORTS	2
1127a36c61f9SKrishna Gudipati struct bfa_trunk_link_attr_s {
1128a36c61f9SKrishna Gudipati 	wwn_t    trunk_wwn;
1129a36c61f9SKrishna Gudipati 	enum bfa_trunk_link_fctl fctl;
1130a36c61f9SKrishna Gudipati 	enum bfa_trunk_link_state link_state;
1131a36c61f9SKrishna Gudipati 	enum bfa_port_speed	speed;
1132a36c61f9SKrishna Gudipati 	u32 deskew;
1133a36c61f9SKrishna Gudipati };
1134a36c61f9SKrishna Gudipati 
1135a36c61f9SKrishna Gudipati struct bfa_trunk_attr_s {
1136a36c61f9SKrishna Gudipati 	enum bfa_trunk_state	state;
1137a36c61f9SKrishna Gudipati 	enum bfa_port_speed	speed;
1138a36c61f9SKrishna Gudipati 	u32		port_id;
1139a36c61f9SKrishna Gudipati 	u32		rsvd;
1140a36c61f9SKrishna Gudipati 	struct bfa_trunk_link_attr_s link_attr[BFA_TRUNK_MAX_PORTS];
1141a36c61f9SKrishna Gudipati };
1142a36c61f9SKrishna Gudipati 
1143a36c61f9SKrishna Gudipati struct bfa_rport_hal_stats_s {
1144a36c61f9SKrishna Gudipati 	u32        sm_un_cr;	    /*  uninit: create events      */
1145a36c61f9SKrishna Gudipati 	u32        sm_un_unexp;	    /*  uninit: exception events   */
1146a36c61f9SKrishna Gudipati 	u32        sm_cr_on;	    /*  created: online events     */
1147a36c61f9SKrishna Gudipati 	u32        sm_cr_del;	    /*  created: delete events     */
1148a36c61f9SKrishna Gudipati 	u32        sm_cr_hwf;	    /*  created: IOC down          */
1149a36c61f9SKrishna Gudipati 	u32        sm_cr_unexp;	    /*  created: exception events  */
1150a36c61f9SKrishna Gudipati 	u32        sm_fwc_rsp;	    /*  fw create: f/w responses   */
1151a36c61f9SKrishna Gudipati 	u32        sm_fwc_del;	    /*  fw create: delete events   */
1152a36c61f9SKrishna Gudipati 	u32        sm_fwc_off;	    /*  fw create: offline events  */
1153a36c61f9SKrishna Gudipati 	u32        sm_fwc_hwf;	    /*  fw create: IOC down        */
1154a36c61f9SKrishna Gudipati 	u32        sm_fwc_unexp;    /*  fw create: exception events*/
1155a36c61f9SKrishna Gudipati 	u32        sm_on_off;	    /*  online: offline events     */
1156a36c61f9SKrishna Gudipati 	u32        sm_on_del;	    /*  online: delete events      */
1157a36c61f9SKrishna Gudipati 	u32        sm_on_hwf;	    /*  online: IOC down events    */
1158a36c61f9SKrishna Gudipati 	u32        sm_on_unexp;	    /*  online: exception events   */
1159a36c61f9SKrishna Gudipati 	u32        sm_fwd_rsp;	    /*  fw delete: fw responses    */
1160a36c61f9SKrishna Gudipati 	u32        sm_fwd_del;	    /*  fw delete: delete events   */
1161a36c61f9SKrishna Gudipati 	u32        sm_fwd_hwf;	    /*  fw delete: IOC down events */
1162a36c61f9SKrishna Gudipati 	u32        sm_fwd_unexp;    /*  fw delete: exception events*/
1163a36c61f9SKrishna Gudipati 	u32        sm_off_del;	    /*  offline: delete events     */
1164a36c61f9SKrishna Gudipati 	u32        sm_off_on;	    /*  offline: online events     */
1165a36c61f9SKrishna Gudipati 	u32        sm_off_hwf;	    /*  offline: IOC down events   */
1166a36c61f9SKrishna Gudipati 	u32        sm_off_unexp;    /*  offline: exception events  */
1167a36c61f9SKrishna Gudipati 	u32        sm_del_fwrsp;    /*  delete: fw responses       */
1168a36c61f9SKrishna Gudipati 	u32        sm_del_hwf;	    /*  delete: IOC down events    */
1169a36c61f9SKrishna Gudipati 	u32        sm_del_unexp;    /*  delete: exception events   */
1170a36c61f9SKrishna Gudipati 	u32        sm_delp_fwrsp;   /*  delete pend: fw responses  */
1171a36c61f9SKrishna Gudipati 	u32        sm_delp_hwf;	    /*  delete pend: IOC downs     */
1172a36c61f9SKrishna Gudipati 	u32        sm_delp_unexp;   /*  delete pend: exceptions    */
1173a36c61f9SKrishna Gudipati 	u32        sm_offp_fwrsp;   /*  off-pending: fw responses  */
1174a36c61f9SKrishna Gudipati 	u32        sm_offp_del;	    /*  off-pending: deletes       */
1175a36c61f9SKrishna Gudipati 	u32        sm_offp_hwf;	    /*  off-pending: IOC downs     */
1176a36c61f9SKrishna Gudipati 	u32        sm_offp_unexp;   /*  off-pending: exceptions    */
1177a36c61f9SKrishna Gudipati 	u32        sm_iocd_off;	    /*  IOC down: offline events   */
1178a36c61f9SKrishna Gudipati 	u32        sm_iocd_del;	    /*  IOC down: delete events    */
1179a36c61f9SKrishna Gudipati 	u32        sm_iocd_on;	    /*  IOC down: online events    */
1180a36c61f9SKrishna Gudipati 	u32        sm_iocd_unexp;   /*  IOC down: exceptions       */
1181a36c61f9SKrishna Gudipati 	u32        rsvd;
1182a36c61f9SKrishna Gudipati };
1183a36c61f9SKrishna Gudipati #pragma pack(1)
1184acdc79a6SJing Huang /*
1185a36c61f9SKrishna Gudipati  *  Rport's QoS attributes
1186a36c61f9SKrishna Gudipati  */
1187a36c61f9SKrishna Gudipati struct bfa_rport_qos_attr_s {
1188a36c61f9SKrishna Gudipati 	u8		qos_priority;	/*  rport's QoS priority   */
1189a36c61f9SKrishna Gudipati 	u8		rsvd[3];
1190a36c61f9SKrishna Gudipati 	u32		qos_flow_id;	/*  QoS flow Id	 */
1191a36c61f9SKrishna Gudipati };
1192a36c61f9SKrishna Gudipati #pragma pack()
1193a36c61f9SKrishna Gudipati 
1194a36c61f9SKrishna Gudipati #define BFA_IOBUCKET_MAX 14
1195a36c61f9SKrishna Gudipati 
1196a36c61f9SKrishna Gudipati struct bfa_itnim_latency_s {
1197a36c61f9SKrishna Gudipati 	u32 min[BFA_IOBUCKET_MAX];
1198a36c61f9SKrishna Gudipati 	u32 max[BFA_IOBUCKET_MAX];
1199a36c61f9SKrishna Gudipati 	u32 count[BFA_IOBUCKET_MAX];
1200a36c61f9SKrishna Gudipati 	u32 avg[BFA_IOBUCKET_MAX];
1201a36c61f9SKrishna Gudipati };
1202a36c61f9SKrishna Gudipati 
1203a36c61f9SKrishna Gudipati struct bfa_itnim_ioprofile_s {
1204a36c61f9SKrishna Gudipati 	u32 clock_res_mul;
1205a36c61f9SKrishna Gudipati 	u32 clock_res_div;
1206a36c61f9SKrishna Gudipati 	u32 index;
1207a36c61f9SKrishna Gudipati 	u32 io_profile_start_time;	/*  IO profile start time	*/
1208a36c61f9SKrishna Gudipati 	u32 iocomps[BFA_IOBUCKET_MAX];	/*  IO completed	*/
1209a36c61f9SKrishna Gudipati 	struct bfa_itnim_latency_s io_latency;
1210a36c61f9SKrishna Gudipati };
1211a36c61f9SKrishna Gudipati 
1212acdc79a6SJing Huang /*
121361e62e21SKrishna Gudipati  *	vHBA port attribute values.
121461e62e21SKrishna Gudipati  */
121561e62e21SKrishna Gudipati struct bfa_vhba_attr_s {
121661e62e21SKrishna Gudipati 	wwn_t	nwwn;       /* node wwn */
121761e62e21SKrishna Gudipati 	wwn_t	pwwn;       /* port wwn */
121861e62e21SKrishna Gudipati 	u32	pid;        /* port ID */
121961e62e21SKrishna Gudipati 	bfa_boolean_t       io_profile; /* get it from fcpim mod */
122061e62e21SKrishna Gudipati 	bfa_boolean_t       plog_enabled;   /* portlog is enabled */
122161e62e21SKrishna Gudipati 	u16	path_tov;
122261e62e21SKrishna Gudipati 	u8	rsvd[2];
122361e62e21SKrishna Gudipati };
122461e62e21SKrishna Gudipati 
122561e62e21SKrishna Gudipati /*
1226a36c61f9SKrishna Gudipati  * FC physical port statistics.
1227a36c61f9SKrishna Gudipati  */
1228a36c61f9SKrishna Gudipati struct bfa_port_fc_stats_s {
1229a36c61f9SKrishna Gudipati 	u64     secs_reset;     /*  Seconds since stats is reset */
1230a36c61f9SKrishna Gudipati 	u64     tx_frames;      /*  Tx frames                   */
1231a36c61f9SKrishna Gudipati 	u64     tx_words;       /*  Tx words                    */
1232a36c61f9SKrishna Gudipati 	u64     tx_lip;         /*  Tx LIP                      */
1233bc0e2c2aSKrishna Gudipati 	u64	tx_lip_f7f7;	/*  Tx LIP_F7F7		*/
1234bc0e2c2aSKrishna Gudipati 	u64	tx_lip_f8f7;	/*  Tx LIP_F8F7		*/
1235bc0e2c2aSKrishna Gudipati 	u64	tx_arbf0;	/*  Tx ARB F0			*/
1236a36c61f9SKrishna Gudipati 	u64     tx_nos;         /*  Tx NOS                      */
1237a36c61f9SKrishna Gudipati 	u64     tx_ols;         /*  Tx OLS                      */
1238a36c61f9SKrishna Gudipati 	u64     tx_lr;          /*  Tx LR                       */
1239a36c61f9SKrishna Gudipati 	u64     tx_lrr;         /*  Tx LRR                      */
1240a36c61f9SKrishna Gudipati 	u64     rx_frames;      /*  Rx frames                   */
1241a36c61f9SKrishna Gudipati 	u64     rx_words;       /*  Rx words                    */
1242a36c61f9SKrishna Gudipati 	u64     lip_count;      /*  Rx LIP                      */
1243bc0e2c2aSKrishna Gudipati 	u64	rx_lip_f7f7;	/*  Rx LIP_F7F7		*/
1244bc0e2c2aSKrishna Gudipati 	u64	rx_lip_f8f7;	/*  Rx LIP_F8F7		*/
1245bc0e2c2aSKrishna Gudipati 	u64	rx_arbf0;	/*  Rx ARB F0			*/
1246a36c61f9SKrishna Gudipati 	u64     nos_count;      /*  Rx NOS                      */
1247a36c61f9SKrishna Gudipati 	u64     ols_count;      /*  Rx OLS                      */
1248a36c61f9SKrishna Gudipati 	u64     lr_count;       /*  Rx LR                       */
1249a36c61f9SKrishna Gudipati 	u64     lrr_count;      /*  Rx LRR                      */
1250a36c61f9SKrishna Gudipati 	u64     invalid_crcs;   /*  Rx CRC err frames           */
1251a36c61f9SKrishna Gudipati 	u64     invalid_crc_gd_eof; /*  Rx CRC err good EOF frames */
1252a36c61f9SKrishna Gudipati 	u64     undersized_frm; /*  Rx undersized frames        */
1253a36c61f9SKrishna Gudipati 	u64     oversized_frm;  /*  Rx oversized frames */
1254a36c61f9SKrishna Gudipati 	u64     bad_eof_frm;    /*  Rx frames with bad EOF      */
1255a36c61f9SKrishna Gudipati 	u64     error_frames;   /*  Errored frames              */
1256a36c61f9SKrishna Gudipati 	u64     dropped_frames; /*  Dropped frames              */
1257a36c61f9SKrishna Gudipati 	u64     link_failures;  /*  Link Failure (LF) count     */
1258a36c61f9SKrishna Gudipati 	u64     loss_of_syncs;  /*  Loss of sync count          */
1259a36c61f9SKrishna Gudipati 	u64     loss_of_signals; /*  Loss of signal count       */
1260a36c61f9SKrishna Gudipati 	u64     primseq_errs;   /*  Primitive sequence protocol err. */
1261a36c61f9SKrishna Gudipati 	u64     bad_os_count;   /*  Invalid ordered sets        */
1262a36c61f9SKrishna Gudipati 	u64     err_enc_out;    /*  Encoding err nonframe_8b10b */
1263a36c61f9SKrishna Gudipati 	u64     err_enc;        /*  Encoding err frame_8b10b    */
1264bbe37a67SVijaya Mohan Guvva 	u64	bbcr_frames_lost; /*!< BBCR Frames Lost */
1265bbe37a67SVijaya Mohan Guvva 	u64	bbcr_rrdys_lost; /*!< BBCR RRDYs Lost */
1266bbe37a67SVijaya Mohan Guvva 	u64	bbcr_link_resets; /*!< BBCR Link Resets */
1267bbe37a67SVijaya Mohan Guvva 	u64	bbcr_frame_lost_intrs; /*!< BBCR Frame loss intrs */
1268bbe37a67SVijaya Mohan Guvva 	u64	bbcr_rrdy_lost_intrs; /*!< BBCR Rrdy loss intrs */
1269bc0e2c2aSKrishna Gudipati 	u64	loop_timeouts;	/*  Loop timeouts		*/
1270a36c61f9SKrishna Gudipati };
1271a36c61f9SKrishna Gudipati 
1272acdc79a6SJing Huang /*
1273a36c61f9SKrishna Gudipati  * Eth Physical Port statistics.
1274a36c61f9SKrishna Gudipati  */
1275a36c61f9SKrishna Gudipati struct bfa_port_eth_stats_s {
1276a36c61f9SKrishna Gudipati 	u64     secs_reset;     /*  Seconds since stats is reset */
1277a36c61f9SKrishna Gudipati 	u64     frame_64;       /*  Frames 64 bytes             */
1278a36c61f9SKrishna Gudipati 	u64     frame_65_127;   /*  Frames 65-127 bytes */
1279a36c61f9SKrishna Gudipati 	u64     frame_128_255;  /*  Frames 128-255 bytes        */
1280a36c61f9SKrishna Gudipati 	u64     frame_256_511;  /*  Frames 256-511 bytes        */
1281a36c61f9SKrishna Gudipati 	u64     frame_512_1023; /*  Frames 512-1023 bytes       */
1282a36c61f9SKrishna Gudipati 	u64     frame_1024_1518; /*  Frames 1024-1518 bytes     */
1283a36c61f9SKrishna Gudipati 	u64     frame_1519_1522; /*  Frames 1519-1522 bytes     */
1284a36c61f9SKrishna Gudipati 	u64     tx_bytes;       /*  Tx bytes                    */
1285a36c61f9SKrishna Gudipati 	u64     tx_packets;      /*  Tx packets         */
1286a36c61f9SKrishna Gudipati 	u64     tx_mcast_packets; /*  Tx multicast packets      */
1287a36c61f9SKrishna Gudipati 	u64     tx_bcast_packets; /*  Tx broadcast packets      */
1288a36c61f9SKrishna Gudipati 	u64     tx_control_frame; /*  Tx control frame          */
1289a36c61f9SKrishna Gudipati 	u64     tx_drop;        /*  Tx drops                    */
1290a36c61f9SKrishna Gudipati 	u64     tx_jabber;      /*  Tx jabber                   */
1291a36c61f9SKrishna Gudipati 	u64     tx_fcs_error;   /*  Tx FCS errors               */
1292a36c61f9SKrishna Gudipati 	u64     tx_fragments;   /*  Tx fragments                */
1293a36c61f9SKrishna Gudipati 	u64     rx_bytes;       /*  Rx bytes                    */
1294a36c61f9SKrishna Gudipati 	u64     rx_packets;     /*  Rx packets                  */
1295a36c61f9SKrishna Gudipati 	u64     rx_mcast_packets; /*  Rx multicast packets      */
1296a36c61f9SKrishna Gudipati 	u64     rx_bcast_packets; /*  Rx broadcast packets      */
1297a36c61f9SKrishna Gudipati 	u64     rx_control_frames; /*  Rx control frames        */
1298a36c61f9SKrishna Gudipati 	u64     rx_unknown_opcode; /*  Rx unknown opcode        */
1299a36c61f9SKrishna Gudipati 	u64     rx_drop;        /*  Rx drops                    */
1300a36c61f9SKrishna Gudipati 	u64     rx_jabber;      /*  Rx jabber                   */
1301a36c61f9SKrishna Gudipati 	u64     rx_fcs_error;   /*  Rx FCS errors               */
1302a36c61f9SKrishna Gudipati 	u64     rx_alignment_error; /*  Rx alignment errors     */
1303a36c61f9SKrishna Gudipati 	u64     rx_frame_length_error; /*  Rx frame len errors  */
1304a36c61f9SKrishna Gudipati 	u64     rx_code_error;  /*  Rx code errors              */
1305a36c61f9SKrishna Gudipati 	u64     rx_fragments;   /*  Rx fragments                */
1306a36c61f9SKrishna Gudipati 	u64     rx_pause;       /*  Rx pause                    */
1307a36c61f9SKrishna Gudipati 	u64     rx_zero_pause;  /*  Rx zero pause               */
1308a36c61f9SKrishna Gudipati 	u64     tx_pause;       /*  Tx pause                    */
1309a36c61f9SKrishna Gudipati 	u64     tx_zero_pause;  /*  Tx zero pause               */
1310a36c61f9SKrishna Gudipati 	u64     rx_fcoe_pause;  /*  Rx FCoE pause               */
1311a36c61f9SKrishna Gudipati 	u64     rx_fcoe_zero_pause; /*  Rx FCoE zero pause      */
1312a36c61f9SKrishna Gudipati 	u64     tx_fcoe_pause;  /*  Tx FCoE pause               */
1313a36c61f9SKrishna Gudipati 	u64     tx_fcoe_zero_pause; /*  Tx FCoE zero pause      */
1314a36c61f9SKrishna Gudipati 	u64     rx_iscsi_pause; /*  Rx iSCSI pause              */
1315a36c61f9SKrishna Gudipati 	u64     rx_iscsi_zero_pause; /*  Rx iSCSI zero pause    */
1316a36c61f9SKrishna Gudipati 	u64     tx_iscsi_pause; /*  Tx iSCSI pause              */
1317a36c61f9SKrishna Gudipati 	u64     tx_iscsi_zero_pause; /*  Tx iSCSI zero pause    */
1318a36c61f9SKrishna Gudipati };
1319a36c61f9SKrishna Gudipati 
1320acdc79a6SJing Huang /*
1321a36c61f9SKrishna Gudipati  *              Port statistics.
1322a36c61f9SKrishna Gudipati  */
1323a36c61f9SKrishna Gudipati union bfa_port_stats_u {
1324a36c61f9SKrishna Gudipati 	struct bfa_port_fc_stats_s      fc;
1325a36c61f9SKrishna Gudipati 	struct bfa_port_eth_stats_s     eth;
13261a4d8e1bSKrishna Gudipati };
13271a4d8e1bSKrishna Gudipati 
13281a4d8e1bSKrishna Gudipati struct bfa_port_cfg_mode_s {
13291a4d8e1bSKrishna Gudipati 	u16		max_pf;
13301a4d8e1bSKrishna Gudipati 	u16		max_vf;
13311a4d8e1bSKrishna Gudipati 	enum bfa_mode_s	mode;
1332a36c61f9SKrishna Gudipati };
1333a36c61f9SKrishna Gudipati 
1334148d6103SKrishna Gudipati #pragma pack(1)
1335148d6103SKrishna Gudipati 
1336148d6103SKrishna Gudipati #define BFA_CEE_LLDP_MAX_STRING_LEN	(128)
1337148d6103SKrishna Gudipati #define BFA_CEE_DCBX_MAX_PRIORITY	(8)
1338148d6103SKrishna Gudipati #define BFA_CEE_DCBX_MAX_PGID		(8)
1339148d6103SKrishna Gudipati 
1340148d6103SKrishna Gudipati struct bfa_cee_lldp_str_s {
1341148d6103SKrishna Gudipati 	u8	sub_type;
1342148d6103SKrishna Gudipati 	u8	len;
1343148d6103SKrishna Gudipati 	u8	rsvd[2];
1344148d6103SKrishna Gudipati 	u8	value[BFA_CEE_LLDP_MAX_STRING_LEN];
1345148d6103SKrishna Gudipati };
1346148d6103SKrishna Gudipati 
1347148d6103SKrishna Gudipati struct bfa_cee_lldp_cfg_s {
1348148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s chassis_id;
1349148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s port_id;
1350148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s port_desc;
1351148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s sys_name;
1352148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s sys_desc;
1353148d6103SKrishna Gudipati 	struct bfa_cee_lldp_str_s mgmt_addr;
1354148d6103SKrishna Gudipati 	u16	time_to_live;
1355148d6103SKrishna Gudipati 	u16	enabled_system_cap;
1356148d6103SKrishna Gudipati };
1357148d6103SKrishna Gudipati 
1358148d6103SKrishna Gudipati /* CEE/DCBX parameters */
1359148d6103SKrishna Gudipati struct bfa_cee_dcbx_cfg_s {
1360148d6103SKrishna Gudipati 	u8	pgid[BFA_CEE_DCBX_MAX_PRIORITY];
1361148d6103SKrishna Gudipati 	u8	pg_percentage[BFA_CEE_DCBX_MAX_PGID];
1362148d6103SKrishna Gudipati 	u8	pfc_primap; /* bitmap of priorties with PFC enabled */
1363148d6103SKrishna Gudipati 	u8	fcoe_primap; /* bitmap of priorities used for FcoE traffic */
1364148d6103SKrishna Gudipati 	u8	iscsi_primap; /* bitmap of priorities used for iSCSI traffic */
1365148d6103SKrishna Gudipati 	u8	dcbx_version; /* operating version:CEE or preCEE */
1366148d6103SKrishna Gudipati 	u8	lls_fcoe; /* FCoE Logical Link Status */
1367148d6103SKrishna Gudipati 	u8	lls_lan; /* LAN Logical Link Status */
1368148d6103SKrishna Gudipati 	u8	rsvd[2];
1369148d6103SKrishna Gudipati };
1370148d6103SKrishna Gudipati 
1371148d6103SKrishna Gudipati /* CEE Query */
1372148d6103SKrishna Gudipati struct bfa_cee_attr_s {
1373148d6103SKrishna Gudipati 	u8	cee_status;
1374148d6103SKrishna Gudipati 	u8	error_reason;
1375148d6103SKrishna Gudipati 	struct bfa_cee_lldp_cfg_s lldp_remote;
1376148d6103SKrishna Gudipati 	struct bfa_cee_dcbx_cfg_s dcbx_remote;
1377148d6103SKrishna Gudipati 	mac_t src_mac;
1378148d6103SKrishna Gudipati 	u8	link_speed;
1379148d6103SKrishna Gudipati 	u8	nw_priority;
1380148d6103SKrishna Gudipati 	u8	filler[2];
1381148d6103SKrishna Gudipati };
1382148d6103SKrishna Gudipati 
1383148d6103SKrishna Gudipati /* LLDP/DCBX/CEE Statistics */
1384148d6103SKrishna Gudipati struct bfa_cee_stats_s {
1385148d6103SKrishna Gudipati 	u32		lldp_tx_frames;		/* LLDP Tx Frames */
1386148d6103SKrishna Gudipati 	u32		lldp_rx_frames;		/* LLDP Rx Frames */
1387148d6103SKrishna Gudipati 	u32		lldp_rx_frames_invalid; /* LLDP Rx Frames invalid */
1388148d6103SKrishna Gudipati 	u32		lldp_rx_frames_new;     /* LLDP Rx Frames new */
1389148d6103SKrishna Gudipati 	u32		lldp_tlvs_unrecognized; /* LLDP Rx unrecog. TLVs */
1390148d6103SKrishna Gudipati 	u32		lldp_rx_shutdown_tlvs;  /* LLDP Rx shutdown TLVs */
1391148d6103SKrishna Gudipati 	u32		lldp_info_aged_out;     /* LLDP remote info aged */
1392148d6103SKrishna Gudipati 	u32		dcbx_phylink_ups;       /* DCBX phy link ups */
1393148d6103SKrishna Gudipati 	u32		dcbx_phylink_downs;     /* DCBX phy link downs */
1394148d6103SKrishna Gudipati 	u32		dcbx_rx_tlvs;           /* DCBX Rx TLVs */
1395148d6103SKrishna Gudipati 	u32		dcbx_rx_tlvs_invalid;   /* DCBX Rx TLVs invalid */
1396148d6103SKrishna Gudipati 	u32		dcbx_control_tlv_error; /* DCBX control TLV errors */
1397148d6103SKrishna Gudipati 	u32		dcbx_feature_tlv_error; /* DCBX feature TLV errors */
1398148d6103SKrishna Gudipati 	u32		dcbx_cee_cfg_new;       /* DCBX new CEE cfg rcvd */
1399148d6103SKrishna Gudipati 	u32		cee_status_down;        /* DCB status down */
1400148d6103SKrishna Gudipati 	u32		cee_status_up;          /* DCB status up */
1401148d6103SKrishna Gudipati 	u32		cee_hw_cfg_changed;     /* DCB hw cfg changed */
1402148d6103SKrishna Gudipati 	u32		cee_rx_invalid_cfg;     /* DCB invalid cfg */
1403148d6103SKrishna Gudipati };
1404148d6103SKrishna Gudipati 
1405148d6103SKrishna Gudipati #pragma pack()
1406148d6103SKrishna Gudipati 
14077826f304SKrishna Gudipati /*
14087826f304SKrishna Gudipati  *			AEN related definitions
14097826f304SKrishna Gudipati  */
14107826f304SKrishna Gudipati #define BFAD_NL_VENDOR_ID (((u64)0x01 << SCSI_NL_VID_TYPE_SHIFT) \
14117826f304SKrishna Gudipati 			   | BFA_PCI_VENDOR_ID_BROCADE)
14127826f304SKrishna Gudipati 
14137826f304SKrishna Gudipati /* BFA remote port events */
14147826f304SKrishna Gudipati enum bfa_rport_aen_event {
14157826f304SKrishna Gudipati 	BFA_RPORT_AEN_ONLINE     = 1,   /* RPort online event */
14167826f304SKrishna Gudipati 	BFA_RPORT_AEN_OFFLINE    = 2,   /* RPort offline event */
14177826f304SKrishna Gudipati 	BFA_RPORT_AEN_DISCONNECT = 3,   /* RPort disconnect event */
14187826f304SKrishna Gudipati 	BFA_RPORT_AEN_QOS_PRIO   = 4,   /* QOS priority change event */
14197826f304SKrishna Gudipati 	BFA_RPORT_AEN_QOS_FLOWID = 5,   /* QOS flow Id change event */
14207826f304SKrishna Gudipati };
14217826f304SKrishna Gudipati 
14227826f304SKrishna Gudipati struct bfa_rport_aen_data_s {
14237826f304SKrishna Gudipati 	u16             vf_id;  /* vf_id of this logical port */
14247826f304SKrishna Gudipati 	u16             rsvd[3];
14257826f304SKrishna Gudipati 	wwn_t           ppwwn;  /* WWN of its physical port */
14267826f304SKrishna Gudipati 	wwn_t           lpwwn;  /* WWN of this logical port */
14277826f304SKrishna Gudipati 	wwn_t           rpwwn;  /* WWN of this remote port */
14287826f304SKrishna Gudipati 	union {
14297826f304SKrishna Gudipati 		struct bfa_rport_qos_attr_s qos;
14307826f304SKrishna Gudipati 	} priv;
14317826f304SKrishna Gudipati };
14327826f304SKrishna Gudipati 
14337826f304SKrishna Gudipati union bfa_aen_data_u {
14347826f304SKrishna Gudipati 	struct bfa_adapter_aen_data_s	adapter;
14357826f304SKrishna Gudipati 	struct bfa_port_aen_data_s	port;
14367826f304SKrishna Gudipati 	struct bfa_lport_aen_data_s	lport;
14377826f304SKrishna Gudipati 	struct bfa_rport_aen_data_s	rport;
14387826f304SKrishna Gudipati 	struct bfa_itnim_aen_data_s	itnim;
14397826f304SKrishna Gudipati 	struct bfa_audit_aen_data_s	audit;
14407826f304SKrishna Gudipati 	struct bfa_ioc_aen_data_s	ioc;
14417826f304SKrishna Gudipati };
14427826f304SKrishna Gudipati 
14437826f304SKrishna Gudipati #define BFA_AEN_MAX_ENTRY	512
14447826f304SKrishna Gudipati 
14457826f304SKrishna Gudipati struct bfa_aen_entry_s {
14467826f304SKrishna Gudipati 	struct list_head	qe;
14477826f304SKrishna Gudipati 	enum bfa_aen_category   aen_category;
1448761c830eSNathan Chancellor 	int                     aen_type;
14497826f304SKrishna Gudipati 	union bfa_aen_data_u    aen_data;
145092328253SArnd Bergmann 	u64			aen_tv_sec;
145192328253SArnd Bergmann 	u64			aen_tv_usec;
14527826f304SKrishna Gudipati 	u32                     seq_num;
14537826f304SKrishna Gudipati 	u32                     bfad_num;
14547826f304SKrishna Gudipati };
14557826f304SKrishna Gudipati 
1456a36c61f9SKrishna Gudipati #endif /* __BFA_DEFS_SVC_H__ */
1457