1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32#ifndef __BFI_ENET_H__
33#define __BFI_ENET_H__
34
35#include "bfa_defs.h"
36#include "bfi.h"
37
38#pragma pack(1)
39
40#define BFI_ENET_CFG_MAX 32
41
42#define BFI_ENET_TXQ_PRIO_MAX 8
43#define BFI_ENET_RX_QSET_MAX 16
44#define BFI_ENET_TXQ_WI_VECT_MAX 4
45
46#define BFI_ENET_VLAN_ID_MAX 4096
47#define BFI_ENET_VLAN_BLOCK_SIZE 512
48#define BFI_ENET_VLAN_BLOCKS_MAX \
49 (BFI_ENET_VLAN_ID_MAX / BFI_ENET_VLAN_BLOCK_SIZE)
50#define BFI_ENET_VLAN_WORD_SIZE 32
51#define BFI_ENET_VLAN_WORDS_MAX \
52 (BFI_ENET_VLAN_BLOCK_SIZE / BFI_ENET_VLAN_WORD_SIZE)
53
54#define BFI_ENET_RSS_RIT_MAX 64
55#define BFI_ENET_RSS_KEY_LEN 10
56
57union bfi_addr_be_u {
58 struct {
59 u32 addr_hi;
60 u32 addr_lo;
61 } a32;
62};
63
64
65
66
67#define BFI_ENET_TXQ_WI_SEND (0x402)
68#define BFI_ENET_TXQ_WI_SEND_LSO (0x403)
69#define BFI_ENET_TXQ_WI_EXTENSION (0x104)
70
71
72#define BFI_ENET_TXQ_WI_CF_FCOE_CRC (1 << 8)
73#define BFI_ENET_TXQ_WI_CF_IPID_MODE (1 << 5)
74#define BFI_ENET_TXQ_WI_CF_INS_PRIO (1 << 4)
75#define BFI_ENET_TXQ_WI_CF_INS_VLAN (1 << 3)
76#define BFI_ENET_TXQ_WI_CF_UDP_CKSUM (1 << 2)
77#define BFI_ENET_TXQ_WI_CF_TCP_CKSUM (1 << 1)
78#define BFI_ENET_TXQ_WI_CF_IP_CKSUM (1 << 0)
79
80struct bfi_enet_txq_wi_base {
81 u8 reserved;
82 u8 num_vectors;
83 u16 opcode;
84
85 u16 flags;
86 u16 l4_hdr_size_n_offset;
87 u16 vlan_tag;
88 u16 lso_mss;
89 u32 frame_length;
90};
91
92struct bfi_enet_txq_wi_ext {
93 u16 reserved;
94 u16 opcode;
95 u32 reserved2[3];
96};
97
98struct bfi_enet_txq_wi_vector {
99 u16 reserved;
100 u16 length;
101 union bfi_addr_be_u addr;
102};
103
104
105struct bfi_enet_txq_entry {
106 union {
107 struct bfi_enet_txq_wi_base base;
108 struct bfi_enet_txq_wi_ext ext;
109 } wi;
110 struct bfi_enet_txq_wi_vector vector[BFI_ENET_TXQ_WI_VECT_MAX];
111};
112
113#define wi_hdr wi.base
114#define wi_ext_hdr wi.ext
115
116#define BFI_ENET_TXQ_WI_L4_HDR_N_OFFSET(_hdr_size, _offset) \
117 (((_hdr_size) << 10) | ((_offset) & 0x3FF))
118
119
120struct bfi_enet_rxq_entry {
121 union bfi_addr_be_u rx_buffer;
122};
123
124
125
126#define BFI_ENET_CQ_EF_MAC_ERROR (1 << 0)
127#define BFI_ENET_CQ_EF_FCS_ERROR (1 << 1)
128#define BFI_ENET_CQ_EF_TOO_LONG (1 << 2)
129#define BFI_ENET_CQ_EF_FC_CRC_OK (1 << 3)
130
131#define BFI_ENET_CQ_EF_RSVD1 (1 << 4)
132#define BFI_ENET_CQ_EF_L4_CKSUM_OK (1 << 5)
133#define BFI_ENET_CQ_EF_L3_CKSUM_OK (1 << 6)
134#define BFI_ENET_CQ_EF_HDS_HEADER (1 << 7)
135
136#define BFI_ENET_CQ_EF_UDP (1 << 8)
137#define BFI_ENET_CQ_EF_TCP (1 << 9)
138#define BFI_ENET_CQ_EF_IP_OPTIONS (1 << 10)
139#define BFI_ENET_CQ_EF_IPV6 (1 << 11)
140
141#define BFI_ENET_CQ_EF_IPV4 (1 << 12)
142#define BFI_ENET_CQ_EF_VLAN (1 << 13)
143#define BFI_ENET_CQ_EF_RSS (1 << 14)
144#define BFI_ENET_CQ_EF_RSVD2 (1 << 15)
145
146#define BFI_ENET_CQ_EF_MCAST_MATCH (1 << 16)
147#define BFI_ENET_CQ_EF_MCAST (1 << 17)
148#define BFI_ENET_CQ_EF_BCAST (1 << 18)
149#define BFI_ENET_CQ_EF_REMOTE (1 << 19)
150
151#define BFI_ENET_CQ_EF_LOCAL (1 << 20)
152
153
154struct bfi_enet_cq_entry {
155 u32 flags;
156 u16 vlan_tag;
157 u16 length;
158 u32 rss_hash;
159 u8 valid;
160 u8 reserved1;
161 u8 reserved2;
162 u8 rxq_id;
163};
164
165
166struct bfi_enet_q {
167 union bfi_addr_u pg_tbl;
168 union bfi_addr_u first_entry;
169 u16 pages;
170 u16 page_sz;
171};
172
173struct bfi_enet_txq {
174 struct bfi_enet_q q;
175 u8 priority;
176 u8 rsvd[3];
177};
178
179struct bfi_enet_rxq {
180 struct bfi_enet_q q;
181 u16 rx_buffer_size;
182 u16 rsvd;
183};
184
185struct bfi_enet_cq {
186 struct bfi_enet_q q;
187};
188
189struct bfi_enet_ib_cfg {
190 u8 int_pkt_dma;
191 u8 int_enabled;
192 u8 int_pkt_enabled;
193 u8 continuous_coalescing;
194 u8 msix;
195 u8 rsvd[3];
196 u32 coalescing_timeout;
197 u32 inter_pkt_timeout;
198 u8 inter_pkt_count;
199 u8 rsvd1[3];
200};
201
202struct bfi_enet_ib {
203 union bfi_addr_u index_addr;
204 union {
205 u16 msix_index;
206 u16 intx_bitmask;
207 } intr;
208 u16 rsvd;
209};
210
211
212enum bfi_enet_h2i_msgs {
213
214 BFI_ENET_H2I_RX_CFG_SET_REQ = 1,
215 BFI_ENET_H2I_RX_CFG_CLR_REQ = 2,
216
217 BFI_ENET_H2I_RIT_CFG_REQ = 3,
218 BFI_ENET_H2I_RSS_CFG_REQ = 4,
219 BFI_ENET_H2I_RSS_ENABLE_REQ = 5,
220 BFI_ENET_H2I_RX_PROMISCUOUS_REQ = 6,
221 BFI_ENET_H2I_RX_DEFAULT_REQ = 7,
222
223 BFI_ENET_H2I_MAC_UCAST_SET_REQ = 8,
224 BFI_ENET_H2I_MAC_UCAST_CLR_REQ = 9,
225 BFI_ENET_H2I_MAC_UCAST_ADD_REQ = 10,
226 BFI_ENET_H2I_MAC_UCAST_DEL_REQ = 11,
227
228 BFI_ENET_H2I_MAC_MCAST_ADD_REQ = 12,
229 BFI_ENET_H2I_MAC_MCAST_DEL_REQ = 13,
230 BFI_ENET_H2I_MAC_MCAST_FILTER_REQ = 14,
231
232 BFI_ENET_H2I_RX_VLAN_SET_REQ = 15,
233 BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ = 16,
234
235
236 BFI_ENET_H2I_TX_CFG_SET_REQ = 17,
237 BFI_ENET_H2I_TX_CFG_CLR_REQ = 18,
238
239
240 BFI_ENET_H2I_PORT_ADMIN_UP_REQ = 19,
241 BFI_ENET_H2I_SET_PAUSE_REQ = 20,
242 BFI_ENET_H2I_DIAG_LOOPBACK_REQ = 21,
243
244
245 BFI_ENET_H2I_GET_ATTR_REQ = 22,
246
247
248 BFI_ENET_H2I_STATS_GET_REQ = 23,
249 BFI_ENET_H2I_STATS_CLR_REQ = 24,
250
251 BFI_ENET_H2I_WOL_MAGIC_REQ = 25,
252 BFI_ENET_H2I_WOL_FRAME_REQ = 26,
253
254 BFI_ENET_H2I_MAX = 27,
255};
256
257enum bfi_enet_i2h_msgs {
258
259 BFI_ENET_I2H_RX_CFG_SET_RSP =
260 BFA_I2HM(BFI_ENET_H2I_RX_CFG_SET_REQ),
261 BFI_ENET_I2H_RX_CFG_CLR_RSP =
262 BFA_I2HM(BFI_ENET_H2I_RX_CFG_CLR_REQ),
263
264 BFI_ENET_I2H_RIT_CFG_RSP =
265 BFA_I2HM(BFI_ENET_H2I_RIT_CFG_REQ),
266 BFI_ENET_I2H_RSS_CFG_RSP =
267 BFA_I2HM(BFI_ENET_H2I_RSS_CFG_REQ),
268 BFI_ENET_I2H_RSS_ENABLE_RSP =
269 BFA_I2HM(BFI_ENET_H2I_RSS_ENABLE_REQ),
270 BFI_ENET_I2H_RX_PROMISCUOUS_RSP =
271 BFA_I2HM(BFI_ENET_H2I_RX_PROMISCUOUS_REQ),
272 BFI_ENET_I2H_RX_DEFAULT_RSP =
273 BFA_I2HM(BFI_ENET_H2I_RX_DEFAULT_REQ),
274
275 BFI_ENET_I2H_MAC_UCAST_SET_RSP =
276 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_SET_REQ),
277 BFI_ENET_I2H_MAC_UCAST_CLR_RSP =
278 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_CLR_REQ),
279 BFI_ENET_I2H_MAC_UCAST_ADD_RSP =
280 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_ADD_REQ),
281 BFI_ENET_I2H_MAC_UCAST_DEL_RSP =
282 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_DEL_REQ),
283
284 BFI_ENET_I2H_MAC_MCAST_ADD_RSP =
285 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_ADD_REQ),
286 BFI_ENET_I2H_MAC_MCAST_DEL_RSP =
287 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_DEL_REQ),
288 BFI_ENET_I2H_MAC_MCAST_FILTER_RSP =
289 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_FILTER_REQ),
290
291 BFI_ENET_I2H_RX_VLAN_SET_RSP =
292 BFA_I2HM(BFI_ENET_H2I_RX_VLAN_SET_REQ),
293
294 BFI_ENET_I2H_RX_VLAN_STRIP_ENABLE_RSP =
295 BFA_I2HM(BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ),
296
297
298 BFI_ENET_I2H_TX_CFG_SET_RSP =
299 BFA_I2HM(BFI_ENET_H2I_TX_CFG_SET_REQ),
300 BFI_ENET_I2H_TX_CFG_CLR_RSP =
301 BFA_I2HM(BFI_ENET_H2I_TX_CFG_CLR_REQ),
302
303
304 BFI_ENET_I2H_PORT_ADMIN_RSP =
305 BFA_I2HM(BFI_ENET_H2I_PORT_ADMIN_UP_REQ),
306
307 BFI_ENET_I2H_SET_PAUSE_RSP =
308 BFA_I2HM(BFI_ENET_H2I_SET_PAUSE_REQ),
309 BFI_ENET_I2H_DIAG_LOOPBACK_RSP =
310 BFA_I2HM(BFI_ENET_H2I_DIAG_LOOPBACK_REQ),
311
312
313 BFI_ENET_I2H_GET_ATTR_RSP =
314 BFA_I2HM(BFI_ENET_H2I_GET_ATTR_REQ),
315
316
317 BFI_ENET_I2H_STATS_GET_RSP =
318 BFA_I2HM(BFI_ENET_H2I_STATS_GET_REQ),
319 BFI_ENET_I2H_STATS_CLR_RSP =
320 BFA_I2HM(BFI_ENET_H2I_STATS_CLR_REQ),
321
322 BFI_ENET_I2H_WOL_MAGIC_RSP =
323 BFA_I2HM(BFI_ENET_H2I_WOL_MAGIC_REQ),
324 BFI_ENET_I2H_WOL_FRAME_RSP =
325 BFA_I2HM(BFI_ENET_H2I_WOL_FRAME_REQ),
326
327
328 BFI_ENET_I2H_LINK_DOWN_AEN = BFA_I2HM(BFI_ENET_H2I_MAX),
329 BFI_ENET_I2H_LINK_UP_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 1),
330
331 BFI_ENET_I2H_PORT_ENABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 2),
332 BFI_ENET_I2H_PORT_DISABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 3),
333
334 BFI_ENET_I2H_BW_UPDATE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 4),
335};
336
337
338enum bfi_enet_err {
339 BFI_ENET_CMD_OK = 0,
340 BFI_ENET_CMD_FAIL = 1,
341 BFI_ENET_CMD_DUP_ENTRY = 2,
342 BFI_ENET_CMD_CAM_FULL = 3,
343 BFI_ENET_CMD_NOT_OWNER = 4,
344 BFI_ENET_CMD_NOT_EXEC = 5,
345 BFI_ENET_CMD_WAITING = 6,
346 BFI_ENET_CMD_PORT_DISABLED = 7,
347};
348
349
350
351
352
353
354
355struct bfi_enet_req {
356 struct bfi_msgq_mhdr mh;
357};
358
359
360
361
362
363
364
365
366
367
368struct bfi_enet_enable_req {
369 struct bfi_msgq_mhdr mh;
370 u8 enable;
371 u8 rsvd[3];
372};
373
374
375struct bfi_enet_rsp {
376 struct bfi_msgq_mhdr mh;
377 u8 error;
378 u8 rsvd;
379 u16 cmd_offset;
380};
381
382
383
384
385
386
387struct bfi_enet_attr_req {
388 struct bfi_msgq_mhdr mh;
389};
390
391
392
393
394struct bfi_enet_attr_rsp {
395 struct bfi_msgq_mhdr mh;
396 u8 error;
397 u8 rsvd;
398 u16 cmd_offset;
399 u32 max_cfg;
400 u32 max_ucmac;
401 u32 rit_size;
402};
403
404
405
406
407
408
409enum bfi_enet_tx_vlan_mode {
410 BFI_ENET_TX_VLAN_NOP = 0,
411 BFI_ENET_TX_VLAN_INS = 1,
412 BFI_ENET_TX_VLAN_WI = 2,
413};
414
415struct bfi_enet_tx_cfg {
416 u8 vlan_mode;
417 u8 rsvd;
418 u16 vlan_id;
419 u8 admit_tagged_frame;
420 u8 apply_vlan_filter;
421 u8 add_to_vswitch;
422 u8 rsvd1[1];
423};
424
425struct bfi_enet_tx_cfg_req {
426 struct bfi_msgq_mhdr mh;
427 u8 num_queues;
428 u8 rsvd[3];
429
430 struct {
431 struct bfi_enet_txq q;
432 struct bfi_enet_ib ib;
433 } q_cfg[BFI_ENET_TXQ_PRIO_MAX];
434
435 struct bfi_enet_ib_cfg ib_cfg;
436
437 struct bfi_enet_tx_cfg tx_cfg;
438};
439
440struct bfi_enet_tx_cfg_rsp {
441 struct bfi_msgq_mhdr mh;
442 u8 error;
443 u8 hw_id;
444 u8 rsvd[2];
445 struct {
446 u32 q_dbell;
447 u32 i_dbell;
448 u8 hw_qid;
449 u8 rsvd[3];
450 } q_handles[BFI_ENET_TXQ_PRIO_MAX];
451};
452
453
454
455
456
457
458enum bfi_enet_rxq_type {
459 BFI_ENET_RXQ_SINGLE = 1,
460 BFI_ENET_RXQ_LARGE_SMALL = 2,
461 BFI_ENET_RXQ_HDS = 3,
462 BFI_ENET_RXQ_HDS_OPT_BASED = 4,
463};
464
465enum bfi_enet_hds_type {
466 BFI_ENET_HDS_FORCED = 0x01,
467 BFI_ENET_HDS_IPV6_UDP = 0x02,
468 BFI_ENET_HDS_IPV6_TCP = 0x04,
469 BFI_ENET_HDS_IPV4_TCP = 0x08,
470 BFI_ENET_HDS_IPV4_UDP = 0x10,
471};
472
473struct bfi_enet_rx_cfg {
474 u8 rxq_type;
475 u8 rsvd[3];
476
477 struct {
478 u8 max_header_size;
479 u8 force_offset;
480 u8 type;
481 u8 rsvd1;
482 } hds;
483
484 u8 multi_buffer;
485 u8 strip_vlan;
486 u8 drop_untagged;
487 u8 rsvd2;
488};
489
490
491
492
493
494
495struct bfi_enet_rx_cfg_req {
496 struct bfi_msgq_mhdr mh;
497 u8 num_queue_sets;
498 u8 rsvd[3];
499
500 struct {
501 struct bfi_enet_rxq ql;
502 struct bfi_enet_rxq qs;
503 struct bfi_enet_cq cq;
504 struct bfi_enet_ib ib;
505 } q_cfg[BFI_ENET_RX_QSET_MAX];
506
507 struct bfi_enet_ib_cfg ib_cfg;
508
509 struct bfi_enet_rx_cfg rx_cfg;
510};
511
512struct bfi_enet_rx_cfg_rsp {
513 struct bfi_msgq_mhdr mh;
514 u8 error;
515 u8 hw_id;
516 u8 rsvd[2];
517 struct {
518 u32 ql_dbell;
519 u32 qs_dbell;
520 u32 i_dbell;
521 u8 hw_lqid;
522 u8 hw_sqid;
523 u8 hw_cqid;
524 u8 rsvd;
525 } q_handles[BFI_ENET_RX_QSET_MAX];
526};
527
528
529
530
531
532
533struct bfi_enet_rit_req {
534 struct bfi_msgq_mhdr mh;
535 u16 size;
536 u8 rsvd[2];
537 u8 table[BFI_ENET_RSS_RIT_MAX];
538};
539
540
541
542
543
544
545enum bfi_enet_rss_type {
546 BFI_ENET_RSS_IPV6 = 0x01,
547 BFI_ENET_RSS_IPV6_TCP = 0x02,
548 BFI_ENET_RSS_IPV4 = 0x04,
549 BFI_ENET_RSS_IPV4_TCP = 0x08
550};
551
552struct bfi_enet_rss_cfg {
553 u8 type;
554 u8 mask;
555 u8 rsvd[2];
556 u32 key[BFI_ENET_RSS_KEY_LEN];
557};
558
559struct bfi_enet_rss_cfg_req {
560 struct bfi_msgq_mhdr mh;
561 struct bfi_enet_rss_cfg cfg;
562};
563
564
565
566
567
568
569
570
571
572struct bfi_enet_ucast_req {
573 struct bfi_msgq_mhdr mh;
574 mac_t mac_addr;
575 u8 rsvd[2];
576};
577
578
579struct bfi_enet_mac_n_vlan_req {
580 struct bfi_msgq_mhdr mh;
581 u16 vlan_id;
582 mac_t mac_addr;
583};
584
585
586
587
588
589
590struct bfi_enet_mcast_add_req {
591 struct bfi_msgq_mhdr mh;
592 mac_t mac_addr;
593 u8 rsvd[2];
594};
595
596
597
598
599struct bfi_enet_mcast_add_rsp {
600 struct bfi_msgq_mhdr mh;
601 u8 error;
602 u8 rsvd;
603 u16 cmd_offset;
604 u16 handle;
605 u8 rsvd1[2];
606};
607
608
609
610
611struct bfi_enet_mcast_del_req {
612 struct bfi_msgq_mhdr mh;
613 u16 handle;
614 u8 rsvd[2];
615};
616
617
618
619
620
621
622struct bfi_enet_rx_vlan_req {
623 struct bfi_msgq_mhdr mh;
624 u8 block_idx;
625 u8 rsvd[3];
626 u32 bit_mask[BFI_ENET_VLAN_WORDS_MAX];
627};
628
629
630
631
632
633
634struct bfi_enet_set_pause_req {
635 struct bfi_msgq_mhdr mh;
636 u8 rsvd[2];
637 u8 tx_pause;
638 u8 rx_pause;
639};
640
641
642
643
644
645
646struct bfi_enet_diag_lb_req {
647 struct bfi_msgq_mhdr mh;
648 u8 rsvd[2];
649 u8 mode;
650 u8 enable;
651};
652
653
654enum {
655 BFI_ENET_DIAG_LB_OPMODE_EXT = 0,
656 BFI_ENET_DIAG_LB_OPMODE_CBL = 1,
657};
658
659
660
661
662
663
664
665struct bfi_enet_stats_req {
666 struct bfi_msgq_mhdr mh;
667 u16 stats_mask;
668 u8 rsvd[2];
669 u32 rx_enet_mask;
670 u32 tx_enet_mask;
671 union bfi_addr_u host_buffer;
672};
673
674
675#define BFI_ENET_STATS_MAC (1 << 0)
676#define BFI_ENET_STATS_BPC (1 << 1)
677#define BFI_ENET_STATS_RAD (1 << 2)
678#define BFI_ENET_STATS_RX_FC (1 << 3)
679#define BFI_ENET_STATS_TX_FC (1 << 4)
680
681#define BFI_ENET_STATS_ALL 0x1f
682
683
684struct bfi_enet_stats_txf {
685 u64 ucast_octets;
686 u64 ucast;
687 u64 ucast_vlan;
688
689 u64 mcast_octets;
690 u64 mcast;
691 u64 mcast_vlan;
692
693 u64 bcast_octets;
694 u64 bcast;
695 u64 bcast_vlan;
696
697 u64 errors;
698 u64 filter_vlan;
699 u64 filter_mac_sa;
700};
701
702
703struct bfi_enet_stats_rxf {
704 u64 ucast_octets;
705 u64 ucast;
706 u64 ucast_vlan;
707
708 u64 mcast_octets;
709 u64 mcast;
710 u64 mcast_vlan;
711
712 u64 bcast_octets;
713 u64 bcast;
714 u64 bcast_vlan;
715 u64 frame_drops;
716};
717
718
719struct bfi_enet_stats_fc_tx {
720 u64 txf_ucast_octets;
721 u64 txf_ucast;
722 u64 txf_ucast_vlan;
723
724 u64 txf_mcast_octets;
725 u64 txf_mcast;
726 u64 txf_mcast_vlan;
727
728 u64 txf_bcast_octets;
729 u64 txf_bcast;
730 u64 txf_bcast_vlan;
731
732 u64 txf_parity_errors;
733 u64 txf_timeout;
734 u64 txf_fid_parity_errors;
735};
736
737
738struct bfi_enet_stats_fc_rx {
739 u64 rxf_ucast_octets;
740 u64 rxf_ucast;
741 u64 rxf_ucast_vlan;
742
743 u64 rxf_mcast_octets;
744 u64 rxf_mcast;
745 u64 rxf_mcast_vlan;
746
747 u64 rxf_bcast_octets;
748 u64 rxf_bcast;
749 u64 rxf_bcast_vlan;
750};
751
752
753struct bfi_enet_stats_rad {
754 u64 rx_frames;
755 u64 rx_octets;
756 u64 rx_vlan_frames;
757
758 u64 rx_ucast;
759 u64 rx_ucast_octets;
760 u64 rx_ucast_vlan;
761
762 u64 rx_mcast;
763 u64 rx_mcast_octets;
764 u64 rx_mcast_vlan;
765
766 u64 rx_bcast;
767 u64 rx_bcast_octets;
768 u64 rx_bcast_vlan;
769
770 u64 rx_drops;
771};
772
773
774struct bfi_enet_stats_bpc {
775
776 u64 tx_pause[8];
777 u64 tx_zero_pause[8];
778
779 u64 tx_first_pause[8];
780
781
782 u64 rx_pause[8];
783 u64 rx_zero_pause[8];
784
785 u64 rx_first_pause[8];
786};
787
788
789struct bfi_enet_stats_mac {
790 u64 stats_clr_cnt;
791 u64 frame_64;
792 u64 frame_65_127;
793 u64 frame_128_255;
794 u64 frame_256_511;
795 u64 frame_512_1023;
796 u64 frame_1024_1518;
797 u64 frame_1519_1522;
798
799
800 u64 rx_bytes;
801 u64 rx_packets;
802 u64 rx_fcs_error;
803 u64 rx_multicast;
804 u64 rx_broadcast;
805 u64 rx_control_frames;
806 u64 rx_pause;
807 u64 rx_unknown_opcode;
808 u64 rx_alignment_error;
809 u64 rx_frame_length_error;
810 u64 rx_code_error;
811 u64 rx_carrier_sense_error;
812 u64 rx_undersize;
813 u64 rx_oversize;
814 u64 rx_fragments;
815 u64 rx_jabber;
816 u64 rx_drop;
817
818
819 u64 tx_bytes;
820 u64 tx_packets;
821 u64 tx_multicast;
822 u64 tx_broadcast;
823 u64 tx_pause;
824 u64 tx_deferral;
825 u64 tx_excessive_deferral;
826 u64 tx_single_collision;
827 u64 tx_muliple_collision;
828 u64 tx_late_collision;
829 u64 tx_excessive_collision;
830 u64 tx_total_collision;
831 u64 tx_pause_honored;
832 u64 tx_drop;
833 u64 tx_jabber;
834 u64 tx_fcs_error;
835 u64 tx_control_frame;
836 u64 tx_oversize;
837 u64 tx_undersize;
838 u64 tx_fragments;
839};
840
841
842
843
844struct bfi_enet_stats {
845 struct bfi_enet_stats_mac mac_stats;
846 struct bfi_enet_stats_bpc bpc_stats;
847 struct bfi_enet_stats_rad rad_stats;
848 struct bfi_enet_stats_rad rlb_stats;
849 struct bfi_enet_stats_fc_rx fc_rx_stats;
850 struct bfi_enet_stats_fc_tx fc_tx_stats;
851 struct bfi_enet_stats_rxf rxf_stats[BFI_ENET_CFG_MAX];
852 struct bfi_enet_stats_txf txf_stats[BFI_ENET_CFG_MAX];
853};
854
855#pragma pack()
856
857#endif
858