Re: [External] : [v2, net-next 10/12] bng_en: Add initial support for ethtool stats display
From: ALOK TIWARI
Date: Wed Nov 19 2025 - 09:08:22 EST
+static const struct {
+ long base_off;
+ char string[ETH_GSTRING_LEN];
+} bnge_tx_pkts_pri_arr[] = {
+ BNGE_TX_STATS_PRI_ENTRIES(tx_packets),
+};
+
+static const struct {
+ long offset;
+ char string[ETH_GSTRING_LEN];
+} bnge_port_stats_arr[] = {
+ BNGE_RX_STATS_ENTRY(rx_64b_frames),
+ BNGE_RX_STATS_ENTRY(rx_65b_127b_frames),
+ BNGE_RX_STATS_ENTRY(rx_128b_255b_frames),
+ BNGE_RX_STATS_ENTRY(rx_256b_511b_frames),
+ BNGE_RX_STATS_ENTRY(rx_512b_1023b_frames),
+ BNGE_RX_STATS_ENTRY(rx_1024b_1518b_frames),
+ BNGE_RX_STATS_ENTRY(rx_good_vlan_frames),
+ BNGE_RX_STATS_ENTRY(rx_1519b_2047b_frames),
+ BNGE_RX_STATS_ENTRY(rx_2048b_4095b_frames),
+ BNGE_RX_STATS_ENTRY(rx_4096b_9216b_frames),
+ BNGE_RX_STATS_ENTRY(rx_9217b_16383b_frames),
+ BNGE_RX_STATS_ENTRY(rx_total_frames),
+ BNGE_RX_STATS_ENTRY(rx_ucast_frames),
+ BNGE_RX_STATS_ENTRY(rx_mcast_frames),
+ BNGE_RX_STATS_ENTRY(rx_bcast_frames),
+ BNGE_RX_STATS_ENTRY(rx_fcs_err_frames),
+ BNGE_RX_STATS_ENTRY(rx_ctrl_frames),
+ BNGE_RX_STATS_ENTRY(rx_pause_frames),
+ BNGE_RX_STATS_ENTRY(rx_pfc_frames),
+ BNGE_RX_STATS_ENTRY(rx_align_err_frames),
+ BNGE_RX_STATS_ENTRY(rx_ovrsz_frames),
+ BNGE_RX_STATS_ENTRY(rx_jbr_frames),
+ BNGE_RX_STATS_ENTRY(rx_mtu_err_frames),
+ BNGE_RX_STATS_ENTRY(rx_tagged_frames),
+ BNGE_RX_STATS_ENTRY(rx_double_tagged_frames),
+ BNGE_RX_STATS_ENTRY(rx_good_frames),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri0),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri1),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri2),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri3),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri4),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri5),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri6),
+ BNGE_RX_STATS_ENTRY(rx_pfc_ena_frames_pri7),
+ BNGE_RX_STATS_ENTRY(rx_undrsz_frames),
+ BNGE_RX_STATS_ENTRY(rx_eee_lpi_events),
+ BNGE_RX_STATS_ENTRY(rx_eee_lpi_duration),
+ BNGE_RX_STATS_ENTRY(rx_bytes),
+ BNGE_RX_STATS_ENTRY(rx_runt_bytes),
+ BNGE_RX_STATS_ENTRY(rx_runt_frames),
+ BNGE_RX_STATS_ENTRY(rx_stat_discard),
+ BNGE_RX_STATS_ENTRY(rx_stat_err),
+
+ BNGE_TX_STATS_ENTRY(tx_64b_frames),
+ BNGE_TX_STATS_ENTRY(tx_65b_127b_frames),
+ BNGE_TX_STATS_ENTRY(tx_128b_255b_frames),
+ BNGE_TX_STATS_ENTRY(tx_256b_511b_frames),
+ BNGE_TX_STATS_ENTRY(tx_512b_1023b_frames),
+ BNGE_TX_STATS_ENTRY(tx_1024b_1518b_frames),
+ BNGE_TX_STATS_ENTRY(tx_good_vlan_frames),
+ BNGE_TX_STATS_ENTRY(tx_1519b_2047b_frames),
+ BNGE_TX_STATS_ENTRY(tx_2048b_4095b_frames),
+ BNGE_TX_STATS_ENTRY(tx_4096b_9216b_frames),
+ BNGE_TX_STATS_ENTRY(tx_9217b_16383b_frames),
+ BNGE_TX_STATS_ENTRY(tx_good_frames),
+ BNGE_TX_STATS_ENTRY(tx_total_frames),
+ BNGE_TX_STATS_ENTRY(tx_ucast_frames),
+ BNGE_TX_STATS_ENTRY(tx_mcast_frames),
+ BNGE_TX_STATS_ENTRY(tx_bcast_frames),
+ BNGE_TX_STATS_ENTRY(tx_pause_frames),
+ BNGE_TX_STATS_ENTRY(tx_pfc_frames),
+ BNGE_TX_STATS_ENTRY(tx_jabber_frames),
+ BNGE_TX_STATS_ENTRY(tx_fcs_err_frames),
+ BNGE_TX_STATS_ENTRY(tx_err),
+ BNGE_TX_STATS_ENTRY(tx_fifo_underruns),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri0),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri1),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri2),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri3),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri4),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri5),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri6),
+ BNGE_TX_STATS_ENTRY(tx_pfc_ena_frames_pri7),
+ BNGE_TX_STATS_ENTRY(tx_eee_lpi_events),
+ BNGE_TX_STATS_ENTRY(tx_eee_lpi_duration),
+ BNGE_TX_STATS_ENTRY(tx_total_collisions),
+ BNGE_TX_STATS_ENTRY(tx_bytes),
+ BNGE_TX_STATS_ENTRY(tx_xthol_frames),
+ BNGE_TX_STATS_ENTRY(tx_stat_discard),
+ BNGE_TX_STATS_ENTRY(tx_stat_error),
RX uses rx_stat_err. Consider using consistent err/error
same for rx_jbr_frames and tx_jabber_frames
+};Thanks,
+
+static const struct {
+ long offset;
+ char string[ETH_GSTRING_LEN];
+} bnge_port_stats_ext_arr[] = {
+ BNGE_RX_STATS_EXT_ENTRY(link_down_events),
+ BNGE_RX_STATS_EXT_ENTRY(continuous_pause_events),
+ BNGE_RX_STATS_EXT_ENTRY(resume_pause_events),
+ BNGE_RX_STATS_EXT_ENTRY(continuous_roce_pause_events),
+ BNGE_RX_STATS_EXT_ENTRY(resume_roce_pause_events),
+ BNGE_RX_STATS_EXT_COS_ENTRIES,
+ BNGE_RX_STATS_EXT_PFC_ENTRIES,
+ BNGE_RX_STATS_EXT_ENTRY(rx_bits),
+ BNGE_RX_STATS_EXT_ENTRY(rx_buffer_passed_threshold),
+ BNGE_RX_STATS_EXT_ENTRY(rx_pcs_symbol_err),
+ BNGE_RX_STATS_EXT_ENTRY(rx_corrected_bits),
+ BNGE_RX_STATS_EXT_DISCARD_COS_ENTRIES,
+ BNGE_RX_STATS_EXT_ENTRY(rx_fec_corrected_blocks),
+ BNGE_RX_STATS_EXT_ENTRY(rx_fec_uncorrectable_blocks),
+ BNGE_RX_STATS_EXT_ENTRY(rx_filter_miss),
+};
+
Alok