mlx4_stats.h (3487B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _MLX4_STATS_ 3#define _MLX4_STATS_ 4 5#define NUM_PRIORITIES 9 6#define NUM_PRIORITY_STATS 2 7 8struct mlx4_en_pkt_stats { 9 unsigned long rx_multicast_packets; 10 unsigned long rx_broadcast_packets; 11 unsigned long rx_jabbers; 12 unsigned long rx_in_range_length_error; 13 unsigned long rx_out_range_length_error; 14 unsigned long tx_multicast_packets; 15 unsigned long tx_broadcast_packets; 16 unsigned long rx_prio[NUM_PRIORITIES][NUM_PRIORITY_STATS]; 17 unsigned long tx_prio[NUM_PRIORITIES][NUM_PRIORITY_STATS]; 18#define NUM_PKT_STATS 43 19}; 20 21struct mlx4_en_counter_stats { 22 unsigned long rx_packets; 23 unsigned long rx_bytes; 24 unsigned long tx_packets; 25 unsigned long tx_bytes; 26#define NUM_PF_STATS 4 27}; 28 29struct mlx4_en_port_stats { 30 unsigned long tso_packets; 31 unsigned long xmit_more; 32 unsigned long queue_stopped; 33 unsigned long wake_queue; 34 unsigned long tx_timeout; 35 unsigned long rx_alloc_pages; 36 unsigned long rx_chksum_good; 37 unsigned long rx_chksum_none; 38 unsigned long rx_chksum_complete; 39 unsigned long tx_chksum_offload; 40#define NUM_PORT_STATS 10 41}; 42 43struct mlx4_en_xdp_stats { 44 unsigned long rx_xdp_drop; 45 unsigned long rx_xdp_redirect; 46 unsigned long rx_xdp_redirect_fail; 47 unsigned long rx_xdp_tx; 48 unsigned long rx_xdp_tx_full; 49#define NUM_XDP_STATS 5 50}; 51 52struct mlx4_en_phy_stats { 53 unsigned long rx_packets_phy; 54 unsigned long rx_bytes_phy; 55 unsigned long tx_packets_phy; 56 unsigned long tx_bytes_phy; 57#define NUM_PHY_STATS 4 58}; 59 60#define NUM_MAIN_STATS 21 61 62#define MLX4_NUM_PRIORITIES 8 63 64struct mlx4_en_flow_stats_rx { 65 u64 rx_pause; 66 u64 rx_pause_duration; 67 u64 rx_pause_transition; 68#define NUM_FLOW_STATS_RX 3 69#define NUM_FLOW_PRIORITY_STATS_RX (NUM_FLOW_STATS_RX * \ 70 MLX4_NUM_PRIORITIES) 71}; 72 73#define FLOW_PRIORITY_STATS_IDX_RX_FRAMES (NUM_MAIN_STATS + \ 74 NUM_PORT_STATS + \ 75 NUM_PF_STATS + \ 76 NUM_FLOW_PRIORITY_STATS_RX) 77 78struct mlx4_en_flow_stats_tx { 79 u64 tx_pause; 80 u64 tx_pause_duration; 81 u64 tx_pause_transition; 82#define NUM_FLOW_STATS_TX 3 83#define NUM_FLOW_PRIORITY_STATS_TX (NUM_FLOW_STATS_TX * \ 84 MLX4_NUM_PRIORITIES) 85}; 86 87#define FLOW_PRIORITY_STATS_IDX_TX_FRAMES (NUM_MAIN_STATS + \ 88 NUM_PORT_STATS + \ 89 NUM_PF_STATS + \ 90 NUM_FLOW_PRIORITY_STATS_RX + \ 91 NUM_FLOW_STATS_RX + \ 92 NUM_FLOW_PRIORITY_STATS_TX) 93 94#define NUM_FLOW_STATS (NUM_FLOW_STATS_RX + NUM_FLOW_STATS_TX + \ 95 NUM_FLOW_PRIORITY_STATS_TX + \ 96 NUM_FLOW_PRIORITY_STATS_RX) 97 98struct mlx4_en_stat_out_flow_control_mbox { 99 /* Total number of PAUSE frames received from the far-end port */ 100 __be64 rx_pause; 101 /* Total number of microseconds that far-end port requested to pause 102 * transmission of packets 103 */ 104 __be64 rx_pause_duration; 105 /* Number of received transmission from XOFF state to XON state */ 106 __be64 rx_pause_transition; 107 /* Total number of PAUSE frames sent from the far-end port */ 108 __be64 tx_pause; 109 /* Total time in microseconds that transmission of packets has been 110 * paused 111 */ 112 __be64 tx_pause_duration; 113 /* Number of transmitter transitions from XOFF state to XON state */ 114 __be64 tx_pause_transition; 115 /* Reserverd */ 116 __be64 reserved[2]; 117}; 118 119enum { 120 MLX4_DUMP_ETH_STATS_FLOW_CONTROL = 1 << 12 121}; 122 123#define NUM_ALL_STATS (NUM_MAIN_STATS + NUM_PORT_STATS + NUM_PKT_STATS + \ 124 NUM_FLOW_STATS + NUM_PF_STATS + \ 125 NUM_XDP_STATS + NUM_PHY_STATS) 126 127#define MLX4_FIND_NETDEV_STAT(n) (offsetof(struct net_device_stats, n) / \ 128 sizeof(((struct net_device_stats *)0)->n)) 129 130#endif