@ -27,7 +27,7 @@ struct be_ethtool_stat {
} ;
enum { NETSTAT , PORTSTAT , MISCSTAT , DRVSTAT_TX , DRVSTAT_RX , ERXSTAT ,
PMEMSTAT } ;
PMEMSTAT , DRVSTAT } ;
# define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \
offsetof ( _struct , field )
# define NETSTAT_INFO(field) #field, NETSTAT,\
@ -46,6 +46,9 @@ enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT,
FIELDINFO ( struct be_erx_stats , field )
# 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 ) } ,
@ -105,7 +108,8 @@ static const struct be_ethtool_stat et_stats[] = {
{ MISCSTAT_INFO ( rx_drops_mtu ) } ,
{ MISCSTAT_INFO ( port0_jabber_events ) } ,
{ MISCSTAT_INFO ( port1_jabber_events ) } ,
{ PMEMSTAT_INFO ( eth_red_drops ) }
{ PMEMSTAT_INFO ( eth_red_drops ) } ,
{ DRVSTAT_INFO ( be_on_die_temperature ) }
} ;
# define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats)
@ -285,6 +289,9 @@ be_get_ethtool_stats(struct net_device *netdev,
case PMEMSTAT :
p = & hw_stats - > pmem ;
break ;
case DRVSTAT :
p = & adapter - > drv_stats ;
break ;
}
p = ( u8 * ) p + et_stats [ i ] . offset ;