bnx2x: Per queue statistics
Re-ordering the statistics to enhance readability and adding per queue statistics (available via ethtool -S) Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d3d4f49527
commit
de832a55d2
|
@ -189,6 +189,43 @@ struct sw_rx_page {
|
||||||
#define NEXT_SGE_MASK_ELEM(el) (((el) + 1) & RX_SGE_MASK_LEN_MASK)
|
#define NEXT_SGE_MASK_ELEM(el) (((el) + 1) & RX_SGE_MASK_LEN_MASK)
|
||||||
|
|
||||||
|
|
||||||
|
struct bnx2x_eth_q_stats {
|
||||||
|
u32 total_bytes_received_hi;
|
||||||
|
u32 total_bytes_received_lo;
|
||||||
|
u32 total_bytes_transmitted_hi;
|
||||||
|
u32 total_bytes_transmitted_lo;
|
||||||
|
u32 total_unicast_packets_received_hi;
|
||||||
|
u32 total_unicast_packets_received_lo;
|
||||||
|
u32 total_multicast_packets_received_hi;
|
||||||
|
u32 total_multicast_packets_received_lo;
|
||||||
|
u32 total_broadcast_packets_received_hi;
|
||||||
|
u32 total_broadcast_packets_received_lo;
|
||||||
|
u32 total_unicast_packets_transmitted_hi;
|
||||||
|
u32 total_unicast_packets_transmitted_lo;
|
||||||
|
u32 total_multicast_packets_transmitted_hi;
|
||||||
|
u32 total_multicast_packets_transmitted_lo;
|
||||||
|
u32 total_broadcast_packets_transmitted_hi;
|
||||||
|
u32 total_broadcast_packets_transmitted_lo;
|
||||||
|
u32 valid_bytes_received_hi;
|
||||||
|
u32 valid_bytes_received_lo;
|
||||||
|
|
||||||
|
u32 error_bytes_received_hi;
|
||||||
|
u32 error_bytes_received_lo;
|
||||||
|
u32 etherstatsoverrsizepkts_hi;
|
||||||
|
u32 etherstatsoverrsizepkts_lo;
|
||||||
|
u32 no_buff_discard_hi;
|
||||||
|
u32 no_buff_discard_lo;
|
||||||
|
|
||||||
|
u32 driver_xoff;
|
||||||
|
u32 rx_err_discard_pkt;
|
||||||
|
u32 rx_skb_alloc_failed;
|
||||||
|
u32 hw_csum_err;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BNX2X_NUM_Q_STATS 11
|
||||||
|
#define Q_STATS_OFFSET32(stat_name) \
|
||||||
|
(offsetof(struct bnx2x_eth_q_stats, stat_name) / 4)
|
||||||
|
|
||||||
struct bnx2x_fastpath {
|
struct bnx2x_fastpath {
|
||||||
|
|
||||||
struct napi_struct napi;
|
struct napi_struct napi;
|
||||||
|
@ -268,6 +305,11 @@ struct bnx2x_fastpath {
|
||||||
u64 tpa_queue_used;
|
u64 tpa_queue_used;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct tstorm_per_client_stats old_tclient;
|
||||||
|
struct ustorm_per_client_stats old_uclient;
|
||||||
|
struct xstorm_per_client_stats old_xclient;
|
||||||
|
struct bnx2x_eth_q_stats eth_q_stats;
|
||||||
|
|
||||||
char name[IFNAMSIZ];
|
char name[IFNAMSIZ];
|
||||||
struct bnx2x *bp; /* parent */
|
struct bnx2x *bp; /* parent */
|
||||||
};
|
};
|
||||||
|
@ -576,6 +618,10 @@ struct bnx2x_eth_stats {
|
||||||
|
|
||||||
u32 error_bytes_received_hi;
|
u32 error_bytes_received_hi;
|
||||||
u32 error_bytes_received_lo;
|
u32 error_bytes_received_lo;
|
||||||
|
u32 etherstatsoverrsizepkts_hi;
|
||||||
|
u32 etherstatsoverrsizepkts_lo;
|
||||||
|
u32 no_buff_discard_hi;
|
||||||
|
u32 no_buff_discard_lo;
|
||||||
|
|
||||||
u32 rx_stat_ifhcinbadoctets_hi;
|
u32 rx_stat_ifhcinbadoctets_hi;
|
||||||
u32 rx_stat_ifhcinbadoctets_lo;
|
u32 rx_stat_ifhcinbadoctets_lo;
|
||||||
|
@ -654,19 +700,20 @@ struct bnx2x_eth_stats {
|
||||||
u32 tx_stat_bmac_ufl_hi;
|
u32 tx_stat_bmac_ufl_hi;
|
||||||
u32 tx_stat_bmac_ufl_lo;
|
u32 tx_stat_bmac_ufl_lo;
|
||||||
|
|
||||||
u32 brb_drop_hi;
|
u32 pause_frames_received_hi;
|
||||||
u32 brb_drop_lo;
|
u32 pause_frames_received_lo;
|
||||||
u32 brb_truncate_hi;
|
u32 pause_frames_sent_hi;
|
||||||
u32 brb_truncate_lo;
|
u32 pause_frames_sent_lo;
|
||||||
|
|
||||||
u32 jabber_packets_received;
|
|
||||||
|
|
||||||
u32 etherstatspkts1024octetsto1522octets_hi;
|
u32 etherstatspkts1024octetsto1522octets_hi;
|
||||||
u32 etherstatspkts1024octetsto1522octets_lo;
|
u32 etherstatspkts1024octetsto1522octets_lo;
|
||||||
u32 etherstatspktsover1522octets_hi;
|
u32 etherstatspktsover1522octets_hi;
|
||||||
u32 etherstatspktsover1522octets_lo;
|
u32 etherstatspktsover1522octets_lo;
|
||||||
|
|
||||||
u32 no_buff_discard;
|
u32 brb_drop_hi;
|
||||||
|
u32 brb_drop_lo;
|
||||||
|
u32 brb_truncate_hi;
|
||||||
|
u32 brb_truncate_lo;
|
||||||
|
|
||||||
u32 mac_filter_discard;
|
u32 mac_filter_discard;
|
||||||
u32 xxoverflow_discard;
|
u32 xxoverflow_discard;
|
||||||
|
@ -677,8 +724,11 @@ struct bnx2x_eth_stats {
|
||||||
u32 rx_err_discard_pkt;
|
u32 rx_err_discard_pkt;
|
||||||
u32 rx_skb_alloc_failed;
|
u32 rx_skb_alloc_failed;
|
||||||
u32 hw_csum_err;
|
u32 hw_csum_err;
|
||||||
|
|
||||||
|
u32 nig_timer_max;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define BNX2X_NUM_STATS 41
|
||||||
#define STATS_OFFSET32(stat_name) \
|
#define STATS_OFFSET32(stat_name) \
|
||||||
(offsetof(struct bnx2x_eth_stats, stat_name) / 4)
|
(offsetof(struct bnx2x_eth_stats, stat_name) / 4)
|
||||||
|
|
||||||
|
@ -906,8 +956,6 @@ struct bnx2x {
|
||||||
int executer_idx;
|
int executer_idx;
|
||||||
|
|
||||||
u16 stats_counter;
|
u16 stats_counter;
|
||||||
struct tstorm_per_client_stats old_tclient;
|
|
||||||
struct xstorm_per_client_stats old_xclient;
|
|
||||||
struct bnx2x_eth_stats eth_stats;
|
struct bnx2x_eth_stats eth_stats;
|
||||||
|
|
||||||
struct z_stream_s *strm;
|
struct z_stream_s *strm;
|
||||||
|
@ -1008,7 +1056,6 @@ static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
|
||||||
#define PCICFG_LINK_SPEED_SHIFT 16
|
#define PCICFG_LINK_SPEED_SHIFT 16
|
||||||
|
|
||||||
|
|
||||||
#define BNX2X_NUM_STATS 42
|
|
||||||
#define BNX2X_NUM_TESTS 7
|
#define BNX2X_NUM_TESTS 7
|
||||||
|
|
||||||
#define BNX2X_MAC_LOOPBACK 0
|
#define BNX2X_MAC_LOOPBACK 0
|
||||||
|
|
|
@ -107,6 +107,9 @@
|
||||||
#define USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
|
#define USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
|
||||||
(IS_E1H_OFFSET ? (0x9508 + ((function>>1) * 0x40) + \
|
(IS_E1H_OFFSET ? (0x9508 + ((function>>1) * 0x40) + \
|
||||||
((function&1) * 0x100)) : (0x1908 + (function * 0x40)))
|
((function&1) * 0x100)) : (0x1908 + (function * 0x40)))
|
||||||
|
#define USTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \
|
||||||
|
(IS_E1H_OFFSET ? (0x2a50 + (function * 0x8)) : (0x1d98 + \
|
||||||
|
(function * 0x8)))
|
||||||
#define USTORM_FUNCTION_MODE_OFFSET \
|
#define USTORM_FUNCTION_MODE_OFFSET \
|
||||||
(IS_E1H_OFFSET ? 0x2448 : 0xffffffff)
|
(IS_E1H_OFFSET ? 0x2448 : 0xffffffff)
|
||||||
#define USTORM_HC_BTR_OFFSET(port) \
|
#define USTORM_HC_BTR_OFFSET(port) \
|
||||||
|
@ -117,6 +120,9 @@
|
||||||
#define USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(function) \
|
#define USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(function) \
|
||||||
(IS_E1H_OFFSET ? (0x2408 + (function * 0x8)) : (0x5308 + \
|
(IS_E1H_OFFSET ? (0x2408 + (function * 0x8)) : (0x5308 + \
|
||||||
(function * 0x8)))
|
(function * 0x8)))
|
||||||
|
#define USTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \
|
||||||
|
(IS_E1H_OFFSET ? (0x2450 + (port * 0x2d0) + (stats_counter_id * \
|
||||||
|
0x28)) : (0x4740 + (port * 0x2d0) + (stats_counter_id * 0x28)))
|
||||||
#define USTORM_RX_PRODS_OFFSET(port, client_id) \
|
#define USTORM_RX_PRODS_OFFSET(port, client_id) \
|
||||||
(IS_E1H_OFFSET ? (0x8000 + (port * 0x4b0) + (client_id * 0x30)) \
|
(IS_E1H_OFFSET ? (0x8000 + (port * 0x4b0) + (client_id * 0x30)) \
|
||||||
: (0x5318 + (port * 0x260) + (client_id * 0x20)))
|
: (0x5318 + (port * 0x260) + (client_id * 0x20)))
|
||||||
|
@ -134,6 +140,9 @@
|
||||||
#define USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, cpu_id) \
|
#define USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, cpu_id) \
|
||||||
(IS_E1H_OFFSET ? (0x9008 + (port * 0x280) + (cpu_id * 0x28)) : \
|
(IS_E1H_OFFSET ? (0x9008 + (port * 0x280) + (cpu_id * 0x28)) : \
|
||||||
(0x1408 + (port * 0x280) + (cpu_id * 0x28)))
|
(0x1408 + (port * 0x280) + (cpu_id * 0x28)))
|
||||||
|
#define USTORM_STATS_FLAGS_OFFSET(function) \
|
||||||
|
(IS_E1H_OFFSET ? (0x29f0 + (function * 0x8)) : (0x1d80 + \
|
||||||
|
(function * 0x8)))
|
||||||
#define XSTORM_ASSERT_LIST_INDEX_OFFSET \
|
#define XSTORM_ASSERT_LIST_INDEX_OFFSET \
|
||||||
(IS_E1H_OFFSET ? 0x9000 : 0x1000)
|
(IS_E1H_OFFSET ? 0x9000 : 0x1000)
|
||||||
#define XSTORM_ASSERT_LIST_OFFSET(idx) \
|
#define XSTORM_ASSERT_LIST_OFFSET(idx) \
|
||||||
|
|
|
@ -641,7 +641,8 @@ struct drv_port_mb {
|
||||||
|
|
||||||
u32 port_stx;
|
u32 port_stx;
|
||||||
|
|
||||||
u32 reserved[2];
|
u32 stat_nig_timer;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1429,8 +1430,10 @@ struct ustorm_eth_st_context_config {
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
|
||||||
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0xF<<4)
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<4)
|
||||||
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 4
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 4
|
||||||
|
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0x7<<5)
|
||||||
|
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 5
|
||||||
u8 status_block_id;
|
u8 status_block_id;
|
||||||
u8 clientId;
|
u8 clientId;
|
||||||
u8 sb_index_numbers;
|
u8 sb_index_numbers;
|
||||||
|
@ -1455,8 +1458,10 @@ struct ustorm_eth_st_context_config {
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
|
||||||
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
|
||||||
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0xF<<4)
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<4)
|
||||||
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 4
|
#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 4
|
||||||
|
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0x7<<5)
|
||||||
|
#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 5
|
||||||
#endif
|
#endif
|
||||||
#if defined(__BIG_ENDIAN)
|
#if defined(__BIG_ENDIAN)
|
||||||
u16 bd_buff_size;
|
u16 bd_buff_size;
|
||||||
|
@ -2763,12 +2768,34 @@ struct tstorm_common_stats {
|
||||||
struct tstorm_per_client_stats client_statistics[MAX_T_STAT_COUNTER_ID];
|
struct tstorm_per_client_stats client_statistics[MAX_T_STAT_COUNTER_ID];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Protocol-common statistics collected by the Ustorm (per client)
|
||||||
|
*/
|
||||||
|
struct ustorm_per_client_stats {
|
||||||
|
struct regpair ucast_no_buff_bytes;
|
||||||
|
struct regpair mcast_no_buff_bytes;
|
||||||
|
struct regpair bcast_no_buff_bytes;
|
||||||
|
__le32 ucast_no_buff_pkts;
|
||||||
|
__le32 mcast_no_buff_pkts;
|
||||||
|
__le32 bcast_no_buff_pkts;
|
||||||
|
__le16 stats_counter;
|
||||||
|
__le16 reserved0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Protocol-common statistics collected by the Ustorm
|
||||||
|
*/
|
||||||
|
struct ustorm_common_stats {
|
||||||
|
struct ustorm_per_client_stats client_statistics[MAX_U_STAT_COUNTER_ID];
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Eth statistics query structure for the eth_stats_query ramrod
|
* Eth statistics query structure for the eth_stats_query ramrod
|
||||||
*/
|
*/
|
||||||
struct eth_stats_query {
|
struct eth_stats_query {
|
||||||
struct xstorm_common_stats xstorm_common;
|
struct xstorm_common_stats xstorm_common;
|
||||||
struct tstorm_common_stats tstorm_common;
|
struct tstorm_common_stats tstorm_common;
|
||||||
|
struct ustorm_common_stats ustorm_common;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue