Commit f6c4bf3e authored by Ajit Khaparde's avatar Ajit Khaparde Committed by David S. Miller

be2net: add new counters to display via ethtool stats

New counters:
	> jabber frame stats
	> red drop stats
Signed-off-by: default avatarAjit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2a3bcfdd
...@@ -619,7 +619,10 @@ struct be_rxf_stats { ...@@ -619,7 +619,10 @@ struct be_rxf_stats {
u32 rx_drops_invalid_ring; /* dword 145*/ u32 rx_drops_invalid_ring; /* dword 145*/
u32 forwarded_packets; /* dword 146*/ u32 forwarded_packets; /* dword 146*/
u32 rx_drops_mtu; /* dword 147*/ u32 rx_drops_mtu; /* dword 147*/
u32 rsvd0[15]; u32 rsvd0[7];
u32 port0_jabber_events;
u32 port1_jabber_events;
u32 rsvd1[6];
}; };
struct be_erx_stats { struct be_erx_stats {
...@@ -630,11 +633,16 @@ struct be_erx_stats { ...@@ -630,11 +633,16 @@ struct be_erx_stats {
u32 debug_pmem_pbuf_dealloc; /* dword 47*/ u32 debug_pmem_pbuf_dealloc; /* dword 47*/
}; };
struct be_pmem_stats {
u32 eth_red_drops;
u32 rsvd[4];
};
struct be_hw_stats { struct be_hw_stats {
struct be_rxf_stats rxf; struct be_rxf_stats rxf;
u32 rsvd[48]; u32 rsvd[48];
struct be_erx_stats erx; struct be_erx_stats erx;
u32 rsvd1[6]; struct be_pmem_stats pmem;
}; };
struct be_cmd_req_get_stats { struct be_cmd_req_get_stats {
......
...@@ -26,7 +26,8 @@ struct be_ethtool_stat { ...@@ -26,7 +26,8 @@ struct be_ethtool_stat {
int offset; int offset;
}; };
enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT}; enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT,
PMEMSTAT};
#define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \ #define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \
offsetof(_struct, field) offsetof(_struct, field)
#define NETSTAT_INFO(field) #field, NETSTAT,\ #define NETSTAT_INFO(field) #field, NETSTAT,\
...@@ -43,6 +44,8 @@ enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT}; ...@@ -43,6 +44,8 @@ enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT};
field) field)
#define ERXSTAT_INFO(field) #field, ERXSTAT,\ #define ERXSTAT_INFO(field) #field, ERXSTAT,\
FIELDINFO(struct be_erx_stats, field) FIELDINFO(struct be_erx_stats, field)
#define PMEMSTAT_INFO(field) #field, PMEMSTAT,\
FIELDINFO(struct be_pmem_stats, field)
static const struct be_ethtool_stat et_stats[] = { static const struct be_ethtool_stat et_stats[] = {
{NETSTAT_INFO(rx_packets)}, {NETSTAT_INFO(rx_packets)},
...@@ -99,7 +102,10 @@ static const struct be_ethtool_stat et_stats[] = { ...@@ -99,7 +102,10 @@ static const struct be_ethtool_stat et_stats[] = {
{MISCSTAT_INFO(rx_drops_too_many_frags)}, {MISCSTAT_INFO(rx_drops_too_many_frags)},
{MISCSTAT_INFO(rx_drops_invalid_ring)}, {MISCSTAT_INFO(rx_drops_invalid_ring)},
{MISCSTAT_INFO(forwarded_packets)}, {MISCSTAT_INFO(forwarded_packets)},
{MISCSTAT_INFO(rx_drops_mtu)} {MISCSTAT_INFO(rx_drops_mtu)},
{MISCSTAT_INFO(port0_jabber_events)},
{MISCSTAT_INFO(port1_jabber_events)},
{PMEMSTAT_INFO(eth_red_drops)}
}; };
#define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats) #define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats)
...@@ -276,6 +282,9 @@ be_get_ethtool_stats(struct net_device *netdev, ...@@ -276,6 +282,9 @@ be_get_ethtool_stats(struct net_device *netdev,
case MISCSTAT: case MISCSTAT:
p = &hw_stats->rxf; p = &hw_stats->rxf;
break; break;
case PMEMSTAT:
p = &hw_stats->pmem;
break;
} }
p = (u8 *)p + et_stats[i].offset; p = (u8 *)p + et_stats[i].offset;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment