0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #ifndef __BFI_ENET_H__
0026 #define __BFI_ENET_H__
0027
0028 #include "bfa_defs.h"
0029 #include "bfi.h"
0030
0031 #define BFI_ENET_CFG_MAX 32
0032
0033 #define BFI_ENET_TXQ_PRIO_MAX 8
0034 #define BFI_ENET_RX_QSET_MAX 16
0035 #define BFI_ENET_TXQ_WI_VECT_MAX 4
0036
0037 #define BFI_ENET_VLAN_ID_MAX 4096
0038 #define BFI_ENET_VLAN_BLOCK_SIZE 512
0039 #define BFI_ENET_VLAN_BLOCKS_MAX \
0040 (BFI_ENET_VLAN_ID_MAX / BFI_ENET_VLAN_BLOCK_SIZE)
0041 #define BFI_ENET_VLAN_WORD_SIZE 32
0042 #define BFI_ENET_VLAN_WORDS_MAX \
0043 (BFI_ENET_VLAN_BLOCK_SIZE / BFI_ENET_VLAN_WORD_SIZE)
0044
0045 #define BFI_ENET_RSS_RIT_MAX 64
0046 #define BFI_ENET_RSS_KEY_LEN 10
0047
0048 union bfi_addr_be_u {
0049 struct {
0050 u32 addr_hi;
0051 u32 addr_lo;
0052 } __packed a32;
0053 } __packed;
0054
0055
0056
0057
0058 #define BFI_ENET_TXQ_WI_SEND (0x402)
0059 #define BFI_ENET_TXQ_WI_SEND_LSO (0x403)
0060 #define BFI_ENET_TXQ_WI_EXTENSION (0x104)
0061
0062
0063 #define BFI_ENET_TXQ_WI_CF_FCOE_CRC BIT(8)
0064 #define BFI_ENET_TXQ_WI_CF_IPID_MODE BIT(5)
0065 #define BFI_ENET_TXQ_WI_CF_INS_PRIO BIT(4)
0066 #define BFI_ENET_TXQ_WI_CF_INS_VLAN BIT(3)
0067 #define BFI_ENET_TXQ_WI_CF_UDP_CKSUM BIT(2)
0068 #define BFI_ENET_TXQ_WI_CF_TCP_CKSUM BIT(1)
0069 #define BFI_ENET_TXQ_WI_CF_IP_CKSUM BIT(0)
0070
0071 struct bfi_enet_txq_wi_base {
0072 u8 reserved;
0073 u8 num_vectors;
0074 u16 opcode;
0075
0076 u16 flags;
0077 u16 l4_hdr_size_n_offset;
0078 u16 vlan_tag;
0079 u16 lso_mss;
0080 u32 frame_length;
0081 } __packed;
0082
0083 struct bfi_enet_txq_wi_ext {
0084 u16 reserved;
0085 u16 opcode;
0086 u32 reserved2[3];
0087 } __packed;
0088
0089 struct bfi_enet_txq_wi_vector {
0090 u16 reserved;
0091 u16 length;
0092 union bfi_addr_be_u addr;
0093 } __packed;
0094
0095
0096 struct bfi_enet_txq_entry {
0097 union {
0098 struct bfi_enet_txq_wi_base base;
0099 struct bfi_enet_txq_wi_ext ext;
0100 } __packed wi;
0101 struct bfi_enet_txq_wi_vector vector[BFI_ENET_TXQ_WI_VECT_MAX];
0102 } __packed;
0103
0104 #define wi_hdr wi.base
0105 #define wi_ext_hdr wi.ext
0106
0107 #define BFI_ENET_TXQ_WI_L4_HDR_N_OFFSET(_hdr_size, _offset) \
0108 (((_hdr_size) << 10) | ((_offset) & 0x3FF))
0109
0110
0111 struct bfi_enet_rxq_entry {
0112 union bfi_addr_be_u rx_buffer;
0113 } __packed;
0114
0115
0116
0117 #define BFI_ENET_CQ_EF_MAC_ERROR BIT(0)
0118 #define BFI_ENET_CQ_EF_FCS_ERROR BIT(1)
0119 #define BFI_ENET_CQ_EF_TOO_LONG BIT(2)
0120 #define BFI_ENET_CQ_EF_FC_CRC_OK BIT(3)
0121
0122 #define BFI_ENET_CQ_EF_RSVD1 BIT(4)
0123 #define BFI_ENET_CQ_EF_L4_CKSUM_OK BIT(5)
0124 #define BFI_ENET_CQ_EF_L3_CKSUM_OK BIT(6)
0125 #define BFI_ENET_CQ_EF_HDS_HEADER BIT(7)
0126
0127 #define BFI_ENET_CQ_EF_UDP BIT(8)
0128 #define BFI_ENET_CQ_EF_TCP BIT(9)
0129 #define BFI_ENET_CQ_EF_IP_OPTIONS BIT(10)
0130 #define BFI_ENET_CQ_EF_IPV6 BIT(11)
0131
0132 #define BFI_ENET_CQ_EF_IPV4 BIT(12)
0133 #define BFI_ENET_CQ_EF_VLAN BIT(13)
0134 #define BFI_ENET_CQ_EF_RSS BIT(14)
0135 #define BFI_ENET_CQ_EF_RSVD2 BIT(15)
0136
0137 #define BFI_ENET_CQ_EF_MCAST_MATCH BIT(16)
0138 #define BFI_ENET_CQ_EF_MCAST BIT(17)
0139 #define BFI_ENET_CQ_EF_BCAST BIT(18)
0140 #define BFI_ENET_CQ_EF_REMOTE BIT(19)
0141
0142 #define BFI_ENET_CQ_EF_LOCAL BIT(20)
0143
0144
0145 struct bfi_enet_cq_entry {
0146 u32 flags;
0147 u16 vlan_tag;
0148 u16 length;
0149 u32 rss_hash;
0150 u8 valid;
0151 u8 reserved1;
0152 u8 reserved2;
0153 u8 rxq_id;
0154 } __packed;
0155
0156
0157 struct bfi_enet_q {
0158 union bfi_addr_u pg_tbl;
0159 union bfi_addr_u first_entry;
0160 u16 pages;
0161 u16 page_sz;
0162 } __packed;
0163
0164 struct bfi_enet_txq {
0165 struct bfi_enet_q q;
0166 u8 priority;
0167 u8 rsvd[3];
0168 } __packed;
0169
0170 struct bfi_enet_rxq {
0171 struct bfi_enet_q q;
0172 u16 rx_buffer_size;
0173 u16 rsvd;
0174 } __packed;
0175
0176 struct bfi_enet_cq {
0177 struct bfi_enet_q q;
0178 } __packed;
0179
0180 struct bfi_enet_ib_cfg {
0181 u8 int_pkt_dma;
0182 u8 int_enabled;
0183 u8 int_pkt_enabled;
0184 u8 continuous_coalescing;
0185 u8 msix;
0186 u8 rsvd[3];
0187 u32 coalescing_timeout;
0188 u32 inter_pkt_timeout;
0189 u8 inter_pkt_count;
0190 u8 rsvd1[3];
0191 } __packed;
0192
0193 struct bfi_enet_ib {
0194 union bfi_addr_u index_addr;
0195 union {
0196 u16 msix_index;
0197 u16 intx_bitmask;
0198 } __packed intr;
0199 u16 rsvd;
0200 } __packed;
0201
0202
0203 enum bfi_enet_h2i_msgs {
0204
0205 BFI_ENET_H2I_RX_CFG_SET_REQ = 1,
0206 BFI_ENET_H2I_RX_CFG_CLR_REQ = 2,
0207
0208 BFI_ENET_H2I_RIT_CFG_REQ = 3,
0209 BFI_ENET_H2I_RSS_CFG_REQ = 4,
0210 BFI_ENET_H2I_RSS_ENABLE_REQ = 5,
0211 BFI_ENET_H2I_RX_PROMISCUOUS_REQ = 6,
0212 BFI_ENET_H2I_RX_DEFAULT_REQ = 7,
0213
0214 BFI_ENET_H2I_MAC_UCAST_SET_REQ = 8,
0215 BFI_ENET_H2I_MAC_UCAST_CLR_REQ = 9,
0216 BFI_ENET_H2I_MAC_UCAST_ADD_REQ = 10,
0217 BFI_ENET_H2I_MAC_UCAST_DEL_REQ = 11,
0218
0219 BFI_ENET_H2I_MAC_MCAST_ADD_REQ = 12,
0220 BFI_ENET_H2I_MAC_MCAST_DEL_REQ = 13,
0221 BFI_ENET_H2I_MAC_MCAST_FILTER_REQ = 14,
0222
0223 BFI_ENET_H2I_RX_VLAN_SET_REQ = 15,
0224 BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ = 16,
0225
0226
0227 BFI_ENET_H2I_TX_CFG_SET_REQ = 17,
0228 BFI_ENET_H2I_TX_CFG_CLR_REQ = 18,
0229
0230
0231 BFI_ENET_H2I_PORT_ADMIN_UP_REQ = 19,
0232 BFI_ENET_H2I_SET_PAUSE_REQ = 20,
0233 BFI_ENET_H2I_DIAG_LOOPBACK_REQ = 21,
0234
0235
0236 BFI_ENET_H2I_GET_ATTR_REQ = 22,
0237
0238
0239 BFI_ENET_H2I_STATS_GET_REQ = 23,
0240 BFI_ENET_H2I_STATS_CLR_REQ = 24,
0241
0242 BFI_ENET_H2I_WOL_MAGIC_REQ = 25,
0243 BFI_ENET_H2I_WOL_FRAME_REQ = 26,
0244
0245 BFI_ENET_H2I_MAX = 27,
0246 };
0247
0248 enum bfi_enet_i2h_msgs {
0249
0250 BFI_ENET_I2H_RX_CFG_SET_RSP =
0251 BFA_I2HM(BFI_ENET_H2I_RX_CFG_SET_REQ),
0252 BFI_ENET_I2H_RX_CFG_CLR_RSP =
0253 BFA_I2HM(BFI_ENET_H2I_RX_CFG_CLR_REQ),
0254
0255 BFI_ENET_I2H_RIT_CFG_RSP =
0256 BFA_I2HM(BFI_ENET_H2I_RIT_CFG_REQ),
0257 BFI_ENET_I2H_RSS_CFG_RSP =
0258 BFA_I2HM(BFI_ENET_H2I_RSS_CFG_REQ),
0259 BFI_ENET_I2H_RSS_ENABLE_RSP =
0260 BFA_I2HM(BFI_ENET_H2I_RSS_ENABLE_REQ),
0261 BFI_ENET_I2H_RX_PROMISCUOUS_RSP =
0262 BFA_I2HM(BFI_ENET_H2I_RX_PROMISCUOUS_REQ),
0263 BFI_ENET_I2H_RX_DEFAULT_RSP =
0264 BFA_I2HM(BFI_ENET_H2I_RX_DEFAULT_REQ),
0265
0266 BFI_ENET_I2H_MAC_UCAST_SET_RSP =
0267 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_SET_REQ),
0268 BFI_ENET_I2H_MAC_UCAST_CLR_RSP =
0269 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_CLR_REQ),
0270 BFI_ENET_I2H_MAC_UCAST_ADD_RSP =
0271 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_ADD_REQ),
0272 BFI_ENET_I2H_MAC_UCAST_DEL_RSP =
0273 BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_DEL_REQ),
0274
0275 BFI_ENET_I2H_MAC_MCAST_ADD_RSP =
0276 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_ADD_REQ),
0277 BFI_ENET_I2H_MAC_MCAST_DEL_RSP =
0278 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_DEL_REQ),
0279 BFI_ENET_I2H_MAC_MCAST_FILTER_RSP =
0280 BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_FILTER_REQ),
0281
0282 BFI_ENET_I2H_RX_VLAN_SET_RSP =
0283 BFA_I2HM(BFI_ENET_H2I_RX_VLAN_SET_REQ),
0284
0285 BFI_ENET_I2H_RX_VLAN_STRIP_ENABLE_RSP =
0286 BFA_I2HM(BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ),
0287
0288
0289 BFI_ENET_I2H_TX_CFG_SET_RSP =
0290 BFA_I2HM(BFI_ENET_H2I_TX_CFG_SET_REQ),
0291 BFI_ENET_I2H_TX_CFG_CLR_RSP =
0292 BFA_I2HM(BFI_ENET_H2I_TX_CFG_CLR_REQ),
0293
0294
0295 BFI_ENET_I2H_PORT_ADMIN_RSP =
0296 BFA_I2HM(BFI_ENET_H2I_PORT_ADMIN_UP_REQ),
0297
0298 BFI_ENET_I2H_SET_PAUSE_RSP =
0299 BFA_I2HM(BFI_ENET_H2I_SET_PAUSE_REQ),
0300 BFI_ENET_I2H_DIAG_LOOPBACK_RSP =
0301 BFA_I2HM(BFI_ENET_H2I_DIAG_LOOPBACK_REQ),
0302
0303
0304 BFI_ENET_I2H_GET_ATTR_RSP =
0305 BFA_I2HM(BFI_ENET_H2I_GET_ATTR_REQ),
0306
0307
0308 BFI_ENET_I2H_STATS_GET_RSP =
0309 BFA_I2HM(BFI_ENET_H2I_STATS_GET_REQ),
0310 BFI_ENET_I2H_STATS_CLR_RSP =
0311 BFA_I2HM(BFI_ENET_H2I_STATS_CLR_REQ),
0312
0313 BFI_ENET_I2H_WOL_MAGIC_RSP =
0314 BFA_I2HM(BFI_ENET_H2I_WOL_MAGIC_REQ),
0315 BFI_ENET_I2H_WOL_FRAME_RSP =
0316 BFA_I2HM(BFI_ENET_H2I_WOL_FRAME_REQ),
0317
0318
0319 BFI_ENET_I2H_LINK_DOWN_AEN = BFA_I2HM(BFI_ENET_H2I_MAX),
0320 BFI_ENET_I2H_LINK_UP_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 1),
0321
0322 BFI_ENET_I2H_PORT_ENABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 2),
0323 BFI_ENET_I2H_PORT_DISABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 3),
0324
0325 BFI_ENET_I2H_BW_UPDATE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 4),
0326 };
0327
0328
0329 enum bfi_enet_err {
0330 BFI_ENET_CMD_OK = 0,
0331 BFI_ENET_CMD_FAIL = 1,
0332 BFI_ENET_CMD_DUP_ENTRY = 2,
0333 BFI_ENET_CMD_CAM_FULL = 3,
0334 BFI_ENET_CMD_NOT_OWNER = 4,
0335 BFI_ENET_CMD_NOT_EXEC = 5,
0336 BFI_ENET_CMD_WAITING = 6,
0337 BFI_ENET_CMD_PORT_DISABLED = 7,
0338 };
0339
0340
0341
0342
0343
0344
0345
0346 struct bfi_enet_req {
0347 struct bfi_msgq_mhdr mh;
0348 } __packed;
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359 struct bfi_enet_enable_req {
0360 struct bfi_msgq_mhdr mh;
0361 u8 enable;
0362 u8 rsvd[3];
0363 } __packed;
0364
0365
0366 struct bfi_enet_rsp {
0367 struct bfi_msgq_mhdr mh;
0368 u8 error;
0369 u8 rsvd;
0370 u16 cmd_offset;
0371 } __packed;
0372
0373
0374
0375
0376
0377
0378 struct bfi_enet_attr_req {
0379 struct bfi_msgq_mhdr mh;
0380 } __packed;
0381
0382
0383
0384
0385 struct bfi_enet_attr_rsp {
0386 struct bfi_msgq_mhdr mh;
0387 u8 error;
0388 u8 rsvd;
0389 u16 cmd_offset;
0390 u32 max_cfg;
0391 u32 max_ucmac;
0392 u32 rit_size;
0393 } __packed;
0394
0395
0396
0397
0398
0399
0400 enum bfi_enet_tx_vlan_mode {
0401 BFI_ENET_TX_VLAN_NOP = 0,
0402 BFI_ENET_TX_VLAN_INS = 1,
0403 BFI_ENET_TX_VLAN_WI = 2,
0404 };
0405
0406 struct bfi_enet_tx_cfg {
0407 u8 vlan_mode;
0408 u8 rsvd;
0409 u16 vlan_id;
0410 u8 admit_tagged_frame;
0411 u8 apply_vlan_filter;
0412 u8 add_to_vswitch;
0413 u8 rsvd1[1];
0414 } __packed;
0415
0416 struct bfi_enet_tx_cfg_req {
0417 struct bfi_msgq_mhdr mh;
0418 u8 num_queues;
0419 u8 rsvd[3];
0420
0421 struct {
0422 struct bfi_enet_txq q;
0423 struct bfi_enet_ib ib;
0424 } __packed q_cfg[BFI_ENET_TXQ_PRIO_MAX];
0425
0426 struct bfi_enet_ib_cfg ib_cfg;
0427
0428 struct bfi_enet_tx_cfg tx_cfg;
0429 };
0430
0431 struct bfi_enet_tx_cfg_rsp {
0432 struct bfi_msgq_mhdr mh;
0433 u8 error;
0434 u8 hw_id;
0435 u8 rsvd[2];
0436 struct {
0437 u32 q_dbell;
0438 u32 i_dbell;
0439 u8 hw_qid;
0440 u8 rsvd[3];
0441 } __packed q_handles[BFI_ENET_TXQ_PRIO_MAX];
0442 };
0443
0444
0445
0446
0447
0448
0449 enum bfi_enet_rxq_type {
0450 BFI_ENET_RXQ_SINGLE = 1,
0451 BFI_ENET_RXQ_LARGE_SMALL = 2,
0452 BFI_ENET_RXQ_HDS = 3,
0453 BFI_ENET_RXQ_HDS_OPT_BASED = 4,
0454 };
0455
0456 enum bfi_enet_hds_type {
0457 BFI_ENET_HDS_FORCED = 0x01,
0458 BFI_ENET_HDS_IPV6_UDP = 0x02,
0459 BFI_ENET_HDS_IPV6_TCP = 0x04,
0460 BFI_ENET_HDS_IPV4_TCP = 0x08,
0461 BFI_ENET_HDS_IPV4_UDP = 0x10,
0462 };
0463
0464 struct bfi_enet_rx_cfg {
0465 u8 rxq_type;
0466 u8 rsvd[1];
0467 u16 frame_size;
0468
0469 struct {
0470 u8 max_header_size;
0471 u8 force_offset;
0472 u8 type;
0473 u8 rsvd1;
0474 } __packed hds;
0475
0476 u8 multi_buffer;
0477 u8 strip_vlan;
0478 u8 drop_untagged;
0479 u8 rsvd2;
0480 } __packed;
0481
0482
0483
0484
0485
0486
0487 struct bfi_enet_rx_cfg_req {
0488 struct bfi_msgq_mhdr mh;
0489 u8 num_queue_sets;
0490 u8 rsvd[3];
0491
0492 struct {
0493 struct bfi_enet_rxq ql;
0494 struct bfi_enet_rxq qs;
0495 struct bfi_enet_cq cq;
0496 struct bfi_enet_ib ib;
0497 } __packed q_cfg[BFI_ENET_RX_QSET_MAX];
0498
0499 struct bfi_enet_ib_cfg ib_cfg;
0500
0501 struct bfi_enet_rx_cfg rx_cfg;
0502 } __packed;
0503
0504 struct bfi_enet_rx_cfg_rsp {
0505 struct bfi_msgq_mhdr mh;
0506 u8 error;
0507 u8 hw_id;
0508 u8 rsvd[2];
0509 struct {
0510 u32 ql_dbell;
0511 u32 qs_dbell;
0512 u32 i_dbell;
0513 u8 hw_lqid;
0514 u8 hw_sqid;
0515 u8 hw_cqid;
0516 u8 rsvd;
0517 } __packed q_handles[BFI_ENET_RX_QSET_MAX];
0518 } __packed;
0519
0520
0521
0522
0523
0524
0525 struct bfi_enet_rit_req {
0526 struct bfi_msgq_mhdr mh;
0527 u16 size;
0528 u8 rsvd[2];
0529 u8 table[BFI_ENET_RSS_RIT_MAX];
0530 } __packed;
0531
0532
0533
0534
0535
0536
0537 enum bfi_enet_rss_type {
0538 BFI_ENET_RSS_IPV6 = 0x01,
0539 BFI_ENET_RSS_IPV6_TCP = 0x02,
0540 BFI_ENET_RSS_IPV4 = 0x04,
0541 BFI_ENET_RSS_IPV4_TCP = 0x08
0542 };
0543
0544 struct bfi_enet_rss_cfg {
0545 u8 type;
0546 u8 mask;
0547 u8 rsvd[2];
0548 u32 key[BFI_ENET_RSS_KEY_LEN];
0549 } __packed;
0550
0551 struct bfi_enet_rss_cfg_req {
0552 struct bfi_msgq_mhdr mh;
0553 struct bfi_enet_rss_cfg cfg;
0554 } __packed;
0555
0556
0557
0558
0559
0560
0561
0562
0563
0564 struct bfi_enet_ucast_req {
0565 struct bfi_msgq_mhdr mh;
0566 u8 mac_addr[ETH_ALEN];
0567 u8 rsvd[2];
0568 } __packed;
0569
0570
0571 struct bfi_enet_mac_n_vlan_req {
0572 struct bfi_msgq_mhdr mh;
0573 u16 vlan_id;
0574 u8 mac_addr[ETH_ALEN];
0575 } __packed;
0576
0577
0578
0579
0580
0581
0582 struct bfi_enet_mcast_add_req {
0583 struct bfi_msgq_mhdr mh;
0584 u8 mac_addr[ETH_ALEN];
0585 u8 rsvd[2];
0586 } __packed;
0587
0588
0589
0590
0591 struct bfi_enet_mcast_add_rsp {
0592 struct bfi_msgq_mhdr mh;
0593 u8 error;
0594 u8 rsvd;
0595 u16 cmd_offset;
0596 u16 handle;
0597 u8 rsvd1[2];
0598 } __packed;
0599
0600
0601
0602
0603 struct bfi_enet_mcast_del_req {
0604 struct bfi_msgq_mhdr mh;
0605 u16 handle;
0606 u8 rsvd[2];
0607 } __packed;
0608
0609
0610
0611
0612
0613
0614 struct bfi_enet_rx_vlan_req {
0615 struct bfi_msgq_mhdr mh;
0616 u8 block_idx;
0617 u8 rsvd[3];
0618 u32 bit_mask[BFI_ENET_VLAN_WORDS_MAX];
0619 } __packed;
0620
0621
0622
0623
0624
0625
0626 struct bfi_enet_set_pause_req {
0627 struct bfi_msgq_mhdr mh;
0628 u8 rsvd[2];
0629 u8 tx_pause;
0630 u8 rx_pause;
0631 } __packed;
0632
0633
0634
0635
0636
0637
0638 struct bfi_enet_diag_lb_req {
0639 struct bfi_msgq_mhdr mh;
0640 u8 rsvd[2];
0641 u8 mode;
0642 u8 enable;
0643 } __packed;
0644
0645
0646 enum {
0647 BFI_ENET_DIAG_LB_OPMODE_EXT = 0,
0648 BFI_ENET_DIAG_LB_OPMODE_CBL = 1,
0649 };
0650
0651
0652
0653
0654
0655
0656
0657 struct bfi_enet_stats_req {
0658 struct bfi_msgq_mhdr mh;
0659 u16 stats_mask;
0660 u8 rsvd[2];
0661 u32 rx_enet_mask;
0662 u32 tx_enet_mask;
0663 union bfi_addr_u host_buffer;
0664 } __packed;
0665
0666
0667 #define BFI_ENET_STATS_MAC BIT(0)
0668 #define BFI_ENET_STATS_BPC BIT(1)
0669 #define BFI_ENET_STATS_RAD BIT(2)
0670 #define BFI_ENET_STATS_RX_FC BIT(3)
0671 #define BFI_ENET_STATS_TX_FC BIT(4)
0672
0673 #define BFI_ENET_STATS_ALL 0x1f
0674
0675
0676 struct bfi_enet_stats_txf {
0677 u64 ucast_octets;
0678 u64 ucast;
0679 u64 ucast_vlan;
0680
0681 u64 mcast_octets;
0682 u64 mcast;
0683 u64 mcast_vlan;
0684
0685 u64 bcast_octets;
0686 u64 bcast;
0687 u64 bcast_vlan;
0688
0689 u64 errors;
0690 u64 filter_vlan;
0691 u64 filter_mac_sa;
0692 } __packed;
0693
0694
0695 struct bfi_enet_stats_rxf {
0696 u64 ucast_octets;
0697 u64 ucast;
0698 u64 ucast_vlan;
0699
0700 u64 mcast_octets;
0701 u64 mcast;
0702 u64 mcast_vlan;
0703
0704 u64 bcast_octets;
0705 u64 bcast;
0706 u64 bcast_vlan;
0707 u64 frame_drops;
0708 } __packed;
0709
0710
0711 struct bfi_enet_stats_fc_tx {
0712 u64 txf_ucast_octets;
0713 u64 txf_ucast;
0714 u64 txf_ucast_vlan;
0715
0716 u64 txf_mcast_octets;
0717 u64 txf_mcast;
0718 u64 txf_mcast_vlan;
0719
0720 u64 txf_bcast_octets;
0721 u64 txf_bcast;
0722 u64 txf_bcast_vlan;
0723
0724 u64 txf_parity_errors;
0725 u64 txf_timeout;
0726 u64 txf_fid_parity_errors;
0727 } __packed;
0728
0729
0730 struct bfi_enet_stats_fc_rx {
0731 u64 rxf_ucast_octets;
0732 u64 rxf_ucast;
0733 u64 rxf_ucast_vlan;
0734
0735 u64 rxf_mcast_octets;
0736 u64 rxf_mcast;
0737 u64 rxf_mcast_vlan;
0738
0739 u64 rxf_bcast_octets;
0740 u64 rxf_bcast;
0741 u64 rxf_bcast_vlan;
0742 } __packed;
0743
0744
0745 struct bfi_enet_stats_rad {
0746 u64 rx_frames;
0747 u64 rx_octets;
0748 u64 rx_vlan_frames;
0749
0750 u64 rx_ucast;
0751 u64 rx_ucast_octets;
0752 u64 rx_ucast_vlan;
0753
0754 u64 rx_mcast;
0755 u64 rx_mcast_octets;
0756 u64 rx_mcast_vlan;
0757
0758 u64 rx_bcast;
0759 u64 rx_bcast_octets;
0760 u64 rx_bcast_vlan;
0761
0762 u64 rx_drops;
0763 } __packed;
0764
0765
0766 struct bfi_enet_stats_bpc {
0767
0768 u64 tx_pause[8];
0769 u64 tx_zero_pause[8];
0770
0771 u64 tx_first_pause[8];
0772
0773
0774 u64 rx_pause[8];
0775 u64 rx_zero_pause[8];
0776
0777 u64 rx_first_pause[8];
0778 } __packed;
0779
0780
0781 struct bfi_enet_stats_mac {
0782 u64 stats_clr_cnt;
0783 u64 frame_64;
0784 u64 frame_65_127;
0785 u64 frame_128_255;
0786 u64 frame_256_511;
0787 u64 frame_512_1023;
0788 u64 frame_1024_1518;
0789 u64 frame_1519_1522;
0790
0791
0792 u64 rx_bytes;
0793 u64 rx_packets;
0794 u64 rx_fcs_error;
0795 u64 rx_multicast;
0796 u64 rx_broadcast;
0797 u64 rx_control_frames;
0798 u64 rx_pause;
0799 u64 rx_unknown_opcode;
0800 u64 rx_alignment_error;
0801 u64 rx_frame_length_error;
0802 u64 rx_code_error;
0803 u64 rx_carrier_sense_error;
0804 u64 rx_undersize;
0805 u64 rx_oversize;
0806 u64 rx_fragments;
0807 u64 rx_jabber;
0808 u64 rx_drop;
0809
0810
0811 u64 tx_bytes;
0812 u64 tx_packets;
0813 u64 tx_multicast;
0814 u64 tx_broadcast;
0815 u64 tx_pause;
0816 u64 tx_deferral;
0817 u64 tx_excessive_deferral;
0818 u64 tx_single_collision;
0819 u64 tx_muliple_collision;
0820 u64 tx_late_collision;
0821 u64 tx_excessive_collision;
0822 u64 tx_total_collision;
0823 u64 tx_pause_honored;
0824 u64 tx_drop;
0825 u64 tx_jabber;
0826 u64 tx_fcs_error;
0827 u64 tx_control_frame;
0828 u64 tx_oversize;
0829 u64 tx_undersize;
0830 u64 tx_fragments;
0831 } __packed;
0832
0833
0834
0835
0836 struct bfi_enet_stats {
0837 struct bfi_enet_stats_mac mac_stats;
0838 struct bfi_enet_stats_bpc bpc_stats;
0839 struct bfi_enet_stats_rad rad_stats;
0840 struct bfi_enet_stats_rad rlb_stats;
0841 struct bfi_enet_stats_fc_rx fc_rx_stats;
0842 struct bfi_enet_stats_fc_tx fc_tx_stats;
0843 struct bfi_enet_stats_rxf rxf_stats[BFI_ENET_CFG_MAX];
0844 struct bfi_enet_stats_txf txf_stats[BFI_ENET_CFG_MAX];
0845 } __packed;
0846
0847 #endif