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