#define PMEMSTAT_INFO(field) #field, PMEMSTAT,\ FIELDINFO(struct be_pmem_stats, field) #define DRVSTAT_INFO(field) #field, DRVSTAT,\ FIELDINFO(struct be_drv_stats, \ field) static const struct be_ethtool_stat et_stats[] = { {NETSTAT_INFO(rx_packets)}, {NETSTAT_INFO(tx_packets)}, {NETSTAT_INFO(rx_bytes)}, {NETSTAT_INFO(tx_bytes)}, {NETSTAT_INFO(rx_errors)}, {NETSTAT_INFO(tx_errors)}, {NETSTAT_INFO(rx_dropped)}, {NETSTAT_INFO(tx_dropped)}, {DRVSTAT_TX_INFO(be_tx_rate)}, {DRVSTAT_TX_INFO(be_tx_reqs)}, {DRVSTAT_TX_INFO(be_tx_wrbs)}, {DRVSTAT_TX_INFO(be_tx_stops)}, {DRVSTAT_TX_INFO(be_tx_events)}, {DRVSTAT_TX_INFO(be_tx_compl)}, {PORTSTAT_INFO(rx_unicast_frames)}, {PORTSTAT_INFO(rx_multicast_frames)}, {PORTSTAT_INFO(rx_broadcast_frames)}, {PORTSTAT_INFO(rx_crc_errors)}, {PORTSTAT_INFO(rx_alignment_symbol_errors)}, {PORTSTAT_INFO(rx_pause_frames)}, {PORTSTAT_INFO(rx_control_frames)}, {PORTSTAT_INFO(rx_in_range_errors)}, {PORTSTAT_INFO(rx_out_range_errors)}, {PORTSTAT_INFO(rx_frame_too_long)},
{DRVSTAT_RX_INFO(rx_post_fail)}, /* Recevied packets dropped due to skb allocation failure */ {DRVSTAT_RX_INFO(rx_drops_no_skbs)}, /* Received packets dropped due to lack of available fetched buffers * posted by the driver. */ {DRVSTAT_RX_INFO(rx_drops_no_frags)} }; #define ETHTOOL_RXSTATS_NUM (ARRAY_SIZE(et_rx_stats)) /* Stats related to multi TX queues: get_stats routine assumes compl is the * first member */ static const struct be_ethtool_stat et_tx_stats[] = { {DRVSTAT_TX_INFO(tx_compl)}, /* If moving this member see above note */ /* This counter is incremented when the HW encounters an error while * parsing the packet header of an outgoing TX request. This counter is * applicable only for BE2, BE3 and Skyhawk based adapters. */ {DRVSTAT_TX_INFO(tx_hdr_parse_err)}, /* This counter is incremented when an error occurs in the DMA * operation associated with the TX request from the host to the device. */ {DRVSTAT_TX_INFO(tx_dma_err)}, /* This counter is incremented when MAC or VLAN spoof checking is * enabled on the interface and the TX request fails the spoof check * in HW. */ {DRVSTAT_TX_INFO(tx_spoof_check_err)}, /* This counter is incremented when the HW encounters an error while
*/ {DRVSTAT_RX_INFO(rx_post_fail)}, /* Recevied packets dropped due to skb allocation failure */ {DRVSTAT_RX_INFO(rx_drops_no_skbs)}, /* Received packets dropped due to lack of available fetched buffers * posted by the driver. */ {DRVSTAT_RX_INFO(rx_drops_no_frags)} }; #define ETHTOOL_RXSTATS_NUM (ARRAY_SIZE(et_rx_stats)) /* Stats related to multi TX queues: get_stats routine assumes compl is the * first member */ static const struct be_ethtool_stat et_tx_stats[] = { {DRVSTAT_TX_INFO(tx_compl)}, /* If moving this member see above note */ {DRVSTAT_TX_INFO(tx_bytes)}, {DRVSTAT_TX_INFO(tx_pkts)}, /* Number of skbs queued for trasmission by the driver */ {DRVSTAT_TX_INFO(tx_reqs)}, /* Number of TX work request blocks DMAed to HW */ {DRVSTAT_TX_INFO(tx_wrbs)}, /* Number of times the TX queue was stopped due to lack * of spaces in the TXQ. */ {DRVSTAT_TX_INFO(tx_stops)}, /* Pkts dropped in the driver's transmit path */ {DRVSTAT_TX_INFO(tx_drv_drops)} }; #define ETHTOOL_TXSTATS_NUM (ARRAY_SIZE(et_tx_stats))