1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef __BNA_TYPES_H__
19#define __BNA_TYPES_H__
20
21#include "cna.h"
22#include "bna_hw_defs.h"
23#include "bfa_cee.h"
24#include "bfa_msgq.h"
25
26
27
28struct bna_mcam_handle;
29struct bna_txq;
30struct bna_tx;
31struct bna_rxq;
32struct bna_cq;
33struct bna_rx;
34struct bna_rxf;
35struct bna_enet;
36struct bna;
37struct bnad;
38
39
40
41enum bna_status {
42 BNA_STATUS_T_DISABLED = 0,
43 BNA_STATUS_T_ENABLED = 1
44};
45
46enum bna_cleanup_type {
47 BNA_HARD_CLEANUP = 0,
48 BNA_SOFT_CLEANUP = 1
49};
50
51enum bna_cb_status {
52 BNA_CB_SUCCESS = 0,
53 BNA_CB_FAIL = 1,
54 BNA_CB_INTERRUPT = 2,
55 BNA_CB_BUSY = 3,
56 BNA_CB_INVALID_MAC = 4,
57 BNA_CB_MCAST_LIST_FULL = 5,
58 BNA_CB_UCAST_CAM_FULL = 6,
59 BNA_CB_WAITING = 7,
60 BNA_CB_NOT_EXEC = 8
61};
62
63enum bna_res_type {
64 BNA_RES_T_MEM = 1,
65 BNA_RES_T_INTR = 2
66};
67
68enum bna_mem_type {
69 BNA_MEM_T_KVA = 1,
70 BNA_MEM_T_DMA = 2
71};
72
73enum bna_intr_type {
74 BNA_INTR_T_INTX = 1,
75 BNA_INTR_T_MSIX = 2
76};
77
78enum bna_res_req_type {
79 BNA_RES_MEM_T_COM = 0,
80 BNA_RES_MEM_T_ATTR = 1,
81 BNA_RES_MEM_T_FWTRC = 2,
82 BNA_RES_MEM_T_STATS = 3,
83 BNA_RES_T_MAX
84};
85
86enum bna_mod_res_req_type {
87 BNA_MOD_RES_MEM_T_TX_ARRAY = 0,
88 BNA_MOD_RES_MEM_T_TXQ_ARRAY = 1,
89 BNA_MOD_RES_MEM_T_RX_ARRAY = 2,
90 BNA_MOD_RES_MEM_T_RXP_ARRAY = 3,
91 BNA_MOD_RES_MEM_T_RXQ_ARRAY = 4,
92 BNA_MOD_RES_MEM_T_UCMAC_ARRAY = 5,
93 BNA_MOD_RES_MEM_T_MCMAC_ARRAY = 6,
94 BNA_MOD_RES_MEM_T_MCHANDLE_ARRAY = 7,
95 BNA_MOD_RES_T_MAX
96};
97
98enum bna_tx_res_req_type {
99 BNA_TX_RES_MEM_T_TCB = 0,
100 BNA_TX_RES_MEM_T_UNMAPQ = 1,
101 BNA_TX_RES_MEM_T_QPT = 2,
102 BNA_TX_RES_MEM_T_SWQPT = 3,
103 BNA_TX_RES_MEM_T_PAGE = 4,
104 BNA_TX_RES_MEM_T_IBIDX = 5,
105 BNA_TX_RES_INTR_T_TXCMPL = 6,
106 BNA_TX_RES_T_MAX,
107};
108
109enum bna_rx_mem_type {
110 BNA_RX_RES_MEM_T_CCB = 0,
111 BNA_RX_RES_MEM_T_RCB = 1,
112 BNA_RX_RES_MEM_T_UNMAPHQ = 2,
113 BNA_RX_RES_MEM_T_UNMAPDQ = 3,
114 BNA_RX_RES_MEM_T_CQPT = 4,
115 BNA_RX_RES_MEM_T_CSWQPT = 5,
116 BNA_RX_RES_MEM_T_CQPT_PAGE = 6,
117 BNA_RX_RES_MEM_T_HQPT = 7,
118 BNA_RX_RES_MEM_T_DQPT = 8,
119 BNA_RX_RES_MEM_T_HSWQPT = 9,
120 BNA_RX_RES_MEM_T_DSWQPT = 10,
121 BNA_RX_RES_MEM_T_DPAGE = 11,
122 BNA_RX_RES_MEM_T_HPAGE = 12,
123 BNA_RX_RES_MEM_T_IBIDX = 13,
124 BNA_RX_RES_MEM_T_RIT = 14,
125 BNA_RX_RES_T_INTR = 15,
126 BNA_RX_RES_T_MAX = 16
127};
128
129enum bna_tx_type {
130 BNA_TX_T_REGULAR = 0,
131 BNA_TX_T_LOOPBACK = 1,
132};
133
134enum bna_tx_flags {
135 BNA_TX_F_ENET_STARTED = 1,
136 BNA_TX_F_ENABLED = 2,
137 BNA_TX_F_PRIO_CHANGED = 4,
138 BNA_TX_F_BW_UPDATED = 8,
139};
140
141enum bna_tx_mod_flags {
142 BNA_TX_MOD_F_ENET_STARTED = 1,
143 BNA_TX_MOD_F_ENET_LOOPBACK = 2,
144};
145
146enum bna_rx_type {
147 BNA_RX_T_REGULAR = 0,
148 BNA_RX_T_LOOPBACK = 1,
149};
150
151enum bna_rxp_type {
152 BNA_RXP_SINGLE = 1,
153 BNA_RXP_SLR = 2,
154 BNA_RXP_HDS = 3
155};
156
157enum bna_rxmode {
158 BNA_RXMODE_PROMISC = 1,
159 BNA_RXMODE_DEFAULT = 2,
160 BNA_RXMODE_ALLMULTI = 4
161};
162
163enum bna_rx_event {
164 RX_E_START = 1,
165 RX_E_STOP = 2,
166 RX_E_FAIL = 3,
167 RX_E_STARTED = 4,
168 RX_E_STOPPED = 5,
169 RX_E_RXF_STARTED = 6,
170 RX_E_RXF_STOPPED = 7,
171 RX_E_CLEANUP_DONE = 8,
172};
173
174enum bna_rx_flags {
175 BNA_RX_F_ENET_STARTED = 1,
176 BNA_RX_F_ENABLED = 2,
177};
178
179enum bna_rx_mod_flags {
180 BNA_RX_MOD_F_ENET_STARTED = 1,
181 BNA_RX_MOD_F_ENET_LOOPBACK = 2,
182};
183
184enum bna_rxf_flags {
185 BNA_RXF_F_PAUSED = 1,
186};
187
188enum bna_rxf_event {
189 RXF_E_START = 1,
190 RXF_E_STOP = 2,
191 RXF_E_FAIL = 3,
192 RXF_E_CONFIG = 4,
193 RXF_E_PAUSE = 5,
194 RXF_E_RESUME = 6,
195 RXF_E_FW_RESP = 7,
196};
197
198enum bna_enet_type {
199 BNA_ENET_T_REGULAR = 0,
200 BNA_ENET_T_LOOPBACK_INTERNAL = 1,
201 BNA_ENET_T_LOOPBACK_EXTERNAL = 2,
202};
203
204enum bna_link_status {
205 BNA_LINK_DOWN = 0,
206 BNA_LINK_UP = 1,
207 BNA_CEE_UP = 2
208};
209
210enum bna_ethport_flags {
211 BNA_ETHPORT_F_ADMIN_UP = 1,
212 BNA_ETHPORT_F_PORT_ENABLED = 2,
213 BNA_ETHPORT_F_RX_STARTED = 4,
214};
215
216enum bna_enet_flags {
217 BNA_ENET_F_IOCETH_READY = 1,
218 BNA_ENET_F_ENABLED = 2,
219 BNA_ENET_F_PAUSE_CHANGED = 4,
220 BNA_ENET_F_MTU_CHANGED = 8
221};
222
223enum bna_rss_flags {
224 BNA_RSS_F_RIT_PENDING = 1,
225 BNA_RSS_F_CFG_PENDING = 2,
226 BNA_RSS_F_STATUS_PENDING = 4,
227};
228
229enum bna_mod_flags {
230 BNA_MOD_F_INIT_DONE = 1,
231};
232
233enum bna_pkt_rates {
234 BNA_PKT_RATE_10K = 10000,
235 BNA_PKT_RATE_20K = 20000,
236 BNA_PKT_RATE_30K = 30000,
237 BNA_PKT_RATE_40K = 40000,
238 BNA_PKT_RATE_50K = 50000,
239 BNA_PKT_RATE_60K = 60000,
240 BNA_PKT_RATE_70K = 70000,
241 BNA_PKT_RATE_80K = 80000,
242};
243
244enum bna_dim_load_types {
245 BNA_LOAD_T_HIGH_4 = 0,
246 BNA_LOAD_T_HIGH_3 = 1,
247 BNA_LOAD_T_HIGH_2 = 2,
248 BNA_LOAD_T_HIGH_1 = 3,
249 BNA_LOAD_T_LOW_1 = 4,
250 BNA_LOAD_T_LOW_2 = 5,
251 BNA_LOAD_T_LOW_3 = 6,
252 BNA_LOAD_T_LOW_4 = 7,
253 BNA_LOAD_T_MAX = 8
254};
255
256enum bna_dim_bias_types {
257 BNA_BIAS_T_SMALL = 0,
258 BNA_BIAS_T_LARGE = 1,
259 BNA_BIAS_T_MAX = 2
260};
261
262#define BNA_MAX_NAME_SIZE 64
263struct bna_ident {
264 int id;
265 char name[BNA_MAX_NAME_SIZE];
266};
267
268struct bna_mac {
269
270 struct list_head qe;
271 u8 addr[ETH_ALEN];
272 struct bna_mcam_handle *handle;
273};
274
275struct bna_mem_descr {
276 u32 len;
277 void *kva;
278 struct bna_dma_addr dma;
279};
280
281struct bna_mem_info {
282 enum bna_mem_type mem_type;
283 u32 len;
284 u32 num;
285 u32 align_sz;
286 struct bna_mem_descr *mdl;
287 void *cookie;
288};
289
290struct bna_intr_descr {
291 int vector;
292};
293
294struct bna_intr_info {
295 enum bna_intr_type intr_type;
296 int num;
297 struct bna_intr_descr *idl;
298};
299
300union bna_res_u {
301 struct bna_mem_info mem_info;
302 struct bna_intr_info intr_info;
303};
304
305struct bna_res_info {
306 enum bna_res_type res_type;
307 union bna_res_u res_u;
308};
309
310
311struct bna_qpt {
312 struct bna_dma_addr hw_qpt_ptr;
313 void *kv_qpt_ptr;
314 u32 page_count;
315 u32 page_size;
316};
317
318struct bna_attr {
319 bool fw_query_complete;
320 int num_txq;
321 int num_rxp;
322 int num_ucmac;
323 int num_mcmac;
324 int max_rit_size;
325};
326
327
328
329struct bna_ioceth {
330 bfa_fsm_t fsm;
331 struct bfa_ioc ioc;
332
333 struct bna_attr attr;
334 struct bfa_msgq_cmd_entry msgq_cmd;
335 struct bfi_enet_attr_req attr_req;
336
337 void (*stop_cbfn)(struct bnad *bnad);
338 struct bnad *stop_cbarg;
339
340 struct bna *bna;
341};
342
343
344
345
346struct bna_pause_config {
347 enum bna_status tx_pause;
348 enum bna_status rx_pause;
349};
350
351struct bna_enet {
352 bfa_fsm_t fsm;
353 enum bna_enet_flags flags;
354
355 enum bna_enet_type type;
356
357 struct bna_pause_config pause_config;
358 int mtu;
359
360
361 void (*stop_cbfn)(void *);
362 void *stop_cbarg;
363
364
365 void (*pause_cbfn)(struct bnad *);
366
367
368 void (*mtu_cbfn)(struct bnad *);
369
370 struct bfa_wc chld_stop_wc;
371
372 struct bfa_msgq_cmd_entry msgq_cmd;
373 struct bfi_enet_set_pause_req pause_req;
374
375 struct bna *bna;
376};
377
378
379
380struct bna_ethport {
381 bfa_fsm_t fsm;
382 enum bna_ethport_flags flags;
383
384 enum bna_link_status link_status;
385
386 int rx_started_count;
387
388 void (*stop_cbfn)(struct bna_enet *);
389
390 void (*adminup_cbfn)(struct bnad *, enum bna_cb_status);
391
392 void (*link_cbfn)(struct bnad *, enum bna_link_status);
393
394 struct bfa_msgq_cmd_entry msgq_cmd;
395 union {
396 struct bfi_enet_enable_req admin_req;
397 struct bfi_enet_diag_lb_req lpbk_req;
398 } bfi_enet_cmd;
399
400 struct bna *bna;
401};
402
403
404
405
406struct bna_ib_dbell {
407 void __iomem *doorbell_addr;
408 u32 doorbell_ack;
409};
410
411
412struct bna_ib {
413 struct bna_dma_addr ib_seg_host_addr;
414 void *ib_seg_host_addr_kva;
415
416 struct bna_ib_dbell door_bell;
417
418 enum bna_intr_type intr_type;
419 int intr_vector;
420
421 u8 coalescing_timeo;
422
423 int interpkt_count;
424 int interpkt_timeo;
425};
426
427
428
429
430#define BNA_Q_NAME_SIZE 16
431struct bna_tcb {
432
433 void **sw_qpt;
434 void *sw_q;
435 void *unmap_q;
436 u32 producer_index;
437 u32 consumer_index;
438 volatile u32 *hw_consumer_index;
439 u32 q_depth;
440 void __iomem *q_dbell;
441 struct bna_ib_dbell *i_dbell;
442
443 struct bna_txq *txq;
444 struct bnad *bnad;
445 void *priv;
446 enum bna_intr_type intr_type;
447 int intr_vector;
448 u8 priority;
449 unsigned long flags;
450 int id;
451 char name[BNA_Q_NAME_SIZE];
452};
453
454
455struct bna_txq {
456
457 struct list_head qe;
458
459 u8 priority;
460
461 struct bna_qpt qpt;
462 struct bna_tcb *tcb;
463 struct bna_ib ib;
464
465 struct bna_tx *tx;
466
467 int hw_id;
468
469 u64 tx_packets;
470 u64 tx_bytes;
471};
472
473
474struct bna_tx {
475
476 struct list_head qe;
477 int rid;
478 int hw_id;
479
480 bfa_fsm_t fsm;
481 enum bna_tx_flags flags;
482
483 enum bna_tx_type type;
484 int num_txq;
485
486 struct list_head txq_q;
487 u16 txf_vlan_id;
488
489
490 void (*tcb_setup_cbfn)(struct bnad *, struct bna_tcb *);
491 void (*tcb_destroy_cbfn)(struct bnad *, struct bna_tcb *);
492 void (*tx_stall_cbfn)(struct bnad *, struct bna_tx *);
493 void (*tx_resume_cbfn)(struct bnad *, struct bna_tx *);
494 void (*tx_cleanup_cbfn)(struct bnad *, struct bna_tx *);
495
496
497 void (*stop_cbfn)(void *arg, struct bna_tx *tx);
498 void *stop_cbarg;
499
500
501 void (*prio_change_cbfn)(struct bnad *bnad, struct bna_tx *tx);
502
503 struct bfa_msgq_cmd_entry msgq_cmd;
504 union {
505 struct bfi_enet_tx_cfg_req cfg_req;
506 struct bfi_enet_req req;
507 struct bfi_enet_tx_cfg_rsp cfg_rsp;
508 } bfi_enet_cmd;
509
510 struct bna *bna;
511 void *priv;
512};
513
514
515struct bna_tx_config {
516 int num_txq;
517 int txq_depth;
518 int coalescing_timeo;
519 enum bna_tx_type tx_type;
520};
521
522struct bna_tx_event_cbfn {
523
524 void (*tcb_setup_cbfn)(struct bnad *, struct bna_tcb *);
525 void (*tcb_destroy_cbfn)(struct bnad *, struct bna_tcb *);
526
527 void (*tx_stall_cbfn)(struct bnad *, struct bna_tx *);
528 void (*tx_resume_cbfn)(struct bnad *, struct bna_tx *);
529 void (*tx_cleanup_cbfn)(struct bnad *, struct bna_tx *);
530};
531
532
533struct bna_tx_mod {
534 struct bna_tx *tx;
535 struct bna_txq *txq;
536
537 struct list_head tx_free_q;
538 struct list_head tx_active_q;
539
540 struct list_head txq_free_q;
541
542
543 void (*stop_cbfn)(struct bna_enet *enet);
544
545 struct bfa_wc tx_stop_wc;
546
547 enum bna_tx_mod_flags flags;
548
549 u8 prio_map;
550 int default_prio;
551 int iscsi_over_cee;
552 int iscsi_prio;
553 int prio_reconfigured;
554
555 u32 rid_mask;
556
557 struct bna *bna;
558};
559
560
561
562
563struct bna_rcb {
564
565 void **sw_qpt;
566 void *sw_q;
567 void *unmap_q;
568 u32 producer_index;
569 u32 consumer_index;
570 u32 q_depth;
571 void __iomem *q_dbell;
572
573 struct bna_rxq *rxq;
574 struct bna_ccb *ccb;
575 struct bnad *bnad;
576 void *priv;
577 unsigned long flags;
578 int id;
579};
580
581
582struct bna_rxq {
583 struct list_head qe;
584
585 int buffer_size;
586 int q_depth;
587 u32 num_vecs;
588 enum bna_status multi_buffer;
589
590 struct bna_qpt qpt;
591 struct bna_rcb *rcb;
592
593 struct bna_rxp *rxp;
594 struct bna_rx *rx;
595
596 int hw_id;
597
598 u64 rx_packets;
599 u64 rx_bytes;
600 u64 rx_packets_with_error;
601 u64 rxbuf_alloc_failed;
602};
603
604
605union bna_rxq_u {
606 struct {
607 struct bna_rxq *hdr;
608 struct bna_rxq *data;
609 } hds;
610 struct {
611 struct bna_rxq *small;
612 struct bna_rxq *large;
613 } slr;
614 struct {
615 struct bna_rxq *only;
616 struct bna_rxq *reserved;
617 } single;
618};
619
620
621struct bna_pkt_rate {
622 u32 small_pkt_cnt;
623 u32 large_pkt_cnt;
624};
625
626
627struct bna_ccb {
628
629 void **sw_qpt;
630 void *sw_q;
631 u32 producer_index;
632 volatile u32 *hw_producer_index;
633 u32 q_depth;
634 struct bna_ib_dbell *i_dbell;
635 struct bna_rcb *rcb[2];
636 void *ctrl;
637 struct bna_pkt_rate pkt_rate;
638 u32 pkts_una;
639 u32 bytes_per_intr;
640
641
642 struct bna_cq *cq;
643 struct bnad *bnad;
644 void *priv;
645 enum bna_intr_type intr_type;
646 int intr_vector;
647 u8 rx_coalescing_timeo;
648 int id;
649 char name[BNA_Q_NAME_SIZE];
650};
651
652
653struct bna_cq {
654 struct bna_qpt qpt;
655 struct bna_ccb *ccb;
656
657 struct bna_ib ib;
658
659 struct bna_rx *rx;
660};
661
662struct bna_rss_config {
663 enum bfi_enet_rss_type hash_type;
664 u8 hash_mask;
665 u32 toeplitz_hash_key[BFI_ENET_RSS_KEY_LEN];
666};
667
668struct bna_hds_config {
669 enum bfi_enet_hds_type hdr_type;
670 int forced_offset;
671};
672
673
674struct bna_rx_config {
675 enum bna_rx_type rx_type;
676 int num_paths;
677 enum bna_rxp_type rxp_type;
678 int paused;
679 int coalescing_timeo;
680
681
682
683
684 u32 frame_size;
685
686
687 u32 q1_depth;
688 u32 q1_buf_size;
689
690
691 u32 q0_depth;
692 u32 q0_buf_size;
693 u32 q0_num_vecs;
694 enum bna_status q0_multi_buf;
695
696 enum bna_status rss_status;
697 struct bna_rss_config rss_config;
698
699 struct bna_hds_config hds_config;
700
701 enum bna_status vlan_strip_status;
702};
703
704
705struct bna_rxp {
706
707 struct list_head qe;
708
709 enum bna_rxp_type type;
710 union bna_rxq_u rxq;
711 struct bna_cq cq;
712
713 struct bna_rx *rx;
714
715
716 int vector;
717 int hw_id;
718};
719
720
721struct bna_rxf {
722 bfa_fsm_t fsm;
723 enum bna_rxf_flags flags;
724
725 struct bfa_msgq_cmd_entry msgq_cmd;
726 union {
727 struct bfi_enet_enable_req req;
728 struct bfi_enet_rss_cfg_req rss_req;
729 struct bfi_enet_rit_req rit_req;
730 struct bfi_enet_rx_vlan_req vlan_req;
731 struct bfi_enet_mcast_add_req mcast_add_req;
732 struct bfi_enet_mcast_del_req mcast_del_req;
733 struct bfi_enet_ucast_req ucast_req;
734 } bfi_enet_cmd;
735
736
737 void (*start_cbfn) (struct bna_rx *rx);
738 struct bna_rx *start_cbarg;
739
740
741 void (*stop_cbfn) (struct bna_rx *rx);
742 struct bna_rx *stop_cbarg;
743
744
745 void (*oper_state_cbfn) (struct bnad *bnad, struct bna_rx *rx);
746 struct bnad *oper_state_cbarg;
747
748
749
750
751
752
753
754
755 void (*cam_fltr_cbfn)(struct bnad *bnad, struct bna_rx *rx);
756 struct bnad *cam_fltr_cbarg;
757
758
759 struct list_head ucast_pending_add_q;
760 struct list_head ucast_pending_del_q;
761 struct bna_mac *ucast_pending_mac;
762 int ucast_pending_set;
763
764 struct list_head ucast_active_q;
765 struct bna_mac ucast_active_mac;
766 int ucast_active_set;
767
768
769 struct list_head mcast_pending_add_q;
770 struct list_head mcast_pending_del_q;
771
772 struct list_head mcast_active_q;
773 struct list_head mcast_handle_q;
774
775
776 enum bna_rxmode rxmode_pending;
777 enum bna_rxmode rxmode_pending_bitmask;
778
779 enum bna_rxmode rxmode_active;
780
781 u8 vlan_pending_bitmask;
782 enum bna_status vlan_filter_status;
783 u32 vlan_filter_table[(BFI_ENET_VLAN_ID_MAX) / 32];
784 bool vlan_strip_pending;
785 enum bna_status vlan_strip_status;
786
787 enum bna_rss_flags rss_pending;
788 enum bna_status rss_status;
789 struct bna_rss_config rss_cfg;
790 u8 *rit;
791 int rit_size;
792
793 struct bna_rx *rx;
794};
795
796
797struct bna_rx {
798
799 struct list_head qe;
800 int rid;
801 int hw_id;
802
803 bfa_fsm_t fsm;
804
805 enum bna_rx_type type;
806
807 int num_paths;
808 struct list_head rxp_q;
809
810 struct bna_hds_config hds_cfg;
811
812 struct bna_rxf rxf;
813
814 enum bna_rx_flags rx_flags;
815
816 struct bfa_msgq_cmd_entry msgq_cmd;
817 union {
818 struct bfi_enet_rx_cfg_req cfg_req;
819 struct bfi_enet_req req;
820 struct bfi_enet_rx_cfg_rsp cfg_rsp;
821 } bfi_enet_cmd;
822
823
824 void (*rcb_setup_cbfn)(struct bnad *, struct bna_rcb *);
825 void (*rcb_destroy_cbfn)(struct bnad *, struct bna_rcb *);
826 void (*ccb_setup_cbfn)(struct bnad *, struct bna_ccb *);
827 void (*ccb_destroy_cbfn)(struct bnad *, struct bna_ccb *);
828 void (*rx_stall_cbfn)(struct bnad *, struct bna_rx *);
829 void (*rx_cleanup_cbfn)(struct bnad *, struct bna_rx *);
830 void (*rx_post_cbfn)(struct bnad *, struct bna_rx *);
831
832
833 void (*stop_cbfn)(void *arg, struct bna_rx *rx);
834 void *stop_cbarg;
835
836 struct bna *bna;
837 void *priv;
838};
839
840struct bna_rx_event_cbfn {
841
842 void (*rcb_setup_cbfn)(struct bnad *, struct bna_rcb *);
843 void (*rcb_destroy_cbfn)(struct bnad *, struct bna_rcb *);
844 void (*ccb_setup_cbfn)(struct bnad *, struct bna_ccb *);
845 void (*ccb_destroy_cbfn)(struct bnad *, struct bna_ccb *);
846 void (*rx_stall_cbfn)(struct bnad *, struct bna_rx *);
847
848 void (*rx_cleanup_cbfn)(struct bnad *, struct bna_rx *);
849 void (*rx_post_cbfn)(struct bnad *, struct bna_rx *);
850};
851
852
853struct bna_rx_mod {
854 struct bna *bna;
855 struct bna_rx *rx;
856 struct bna_rxp *rxp;
857 struct bna_rxq *rxq;
858
859 struct list_head rx_free_q;
860 struct list_head rx_active_q;
861 int rx_free_count;
862
863 struct list_head rxp_free_q;
864 int rxp_free_count;
865
866 struct list_head rxq_free_q;
867 int rxq_free_count;
868
869 enum bna_rx_mod_flags flags;
870
871
872 void (*stop_cbfn)(struct bna_enet *enet);
873
874 struct bfa_wc rx_stop_wc;
875 u32 dim_vector[BNA_LOAD_T_MAX][BNA_BIAS_T_MAX];
876 u32 rid_mask;
877};
878
879
880
881struct bna_ucam_mod {
882 struct bna_mac *ucmac;
883 struct list_head free_q;
884 struct list_head del_q;
885
886 struct bna *bna;
887};
888
889struct bna_mcam_handle {
890
891 struct list_head qe;
892 int handle;
893 int refcnt;
894};
895
896struct bna_mcam_mod {
897 struct bna_mac *mcmac;
898 struct bna_mcam_handle *mchandle;
899 struct list_head free_q;
900 struct list_head del_q;
901 struct list_head free_handle_q;
902
903 struct bna *bna;
904};
905
906
907
908struct bna_stats {
909 struct bna_dma_addr hw_stats_dma;
910 struct bfi_enet_stats *hw_stats_kva;
911 struct bfi_enet_stats hw_stats;
912};
913
914struct bna_stats_mod {
915 bool ioc_ready;
916 bool stats_get_busy;
917 bool stats_clr_busy;
918 struct bfa_msgq_cmd_entry stats_get_cmd;
919 struct bfa_msgq_cmd_entry stats_clr_cmd;
920 struct bfi_enet_stats_req stats_get;
921 struct bfi_enet_stats_req stats_clr;
922};
923
924
925
926struct bna {
927 struct bna_ident ident;
928 struct bfa_pcidev pcidev;
929
930 struct bna_reg regs;
931 struct bna_bit_defn bits;
932
933 struct bna_stats stats;
934
935 struct bna_ioceth ioceth;
936 struct bfa_cee cee;
937 struct bfa_flash flash;
938 struct bfa_msgq msgq;
939
940 struct bna_ethport ethport;
941 struct bna_enet enet;
942 struct bna_stats_mod stats_mod;
943
944 struct bna_tx_mod tx_mod;
945 struct bna_rx_mod rx_mod;
946 struct bna_ucam_mod ucam_mod;
947 struct bna_mcam_mod mcam_mod;
948
949 enum bna_mod_flags mod_flags;
950
951 int default_mode_rid;
952 int promisc_rid;
953
954 struct bnad *bnad;
955};
956#endif
957