net: bcmasp: Add support for ethtool standard stats
Add support for eth_mac_stats, rmon_stats, and eth_ctrl_stats. Signed-off-by: Justin Chen <justin.chen@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
550e6f3456
commit
6493153467
@ -250,6 +250,80 @@ static int bcmasp_set_eee(struct net_device *dev, struct ethtool_eee *e)
|
||||
return phy_ethtool_set_eee(dev->phydev, e);
|
||||
}
|
||||
|
||||
static void bcmasp_get_eth_mac_stats(struct net_device *dev,
|
||||
struct ethtool_eth_mac_stats *mac_stats)
|
||||
{
|
||||
struct bcmasp_intf *intf = netdev_priv(dev);
|
||||
|
||||
mac_stats->FramesTransmittedOK = umac_rl(intf, UMC_GTPOK);
|
||||
mac_stats->SingleCollisionFrames = umac_rl(intf, UMC_GTSCL);
|
||||
mac_stats->MultipleCollisionFrames = umac_rl(intf, UMC_GTMCL);
|
||||
mac_stats->FramesReceivedOK = umac_rl(intf, UMC_GRPOK);
|
||||
mac_stats->FrameCheckSequenceErrors = umac_rl(intf, UMC_GRFCS);
|
||||
mac_stats->AlignmentErrors = umac_rl(intf, UMC_GRALN);
|
||||
mac_stats->OctetsTransmittedOK = umac_rl(intf, UMC_GTBYT);
|
||||
mac_stats->FramesWithDeferredXmissions = umac_rl(intf, UMC_GTDRF);
|
||||
mac_stats->LateCollisions = umac_rl(intf, UMC_GTLCL);
|
||||
mac_stats->FramesAbortedDueToXSColls = umac_rl(intf, UMC_GTXCL);
|
||||
mac_stats->OctetsReceivedOK = umac_rl(intf, UMC_GRBYT);
|
||||
mac_stats->MulticastFramesXmittedOK = umac_rl(intf, UMC_GTMCA);
|
||||
mac_stats->BroadcastFramesXmittedOK = umac_rl(intf, UMC_GTBCA);
|
||||
mac_stats->FramesWithExcessiveDeferral = umac_rl(intf, UMC_GTEDF);
|
||||
mac_stats->MulticastFramesReceivedOK = umac_rl(intf, UMC_GRMCA);
|
||||
mac_stats->BroadcastFramesReceivedOK = umac_rl(intf, UMC_GRBCA);
|
||||
}
|
||||
|
||||
static const struct ethtool_rmon_hist_range bcmasp_rmon_ranges[] = {
|
||||
{ 0, 64},
|
||||
{ 65, 127},
|
||||
{ 128, 255},
|
||||
{ 256, 511},
|
||||
{ 512, 1023},
|
||||
{ 1024, 1518},
|
||||
{ 1519, 1522},
|
||||
{}
|
||||
};
|
||||
|
||||
static void bcmasp_get_rmon_stats(struct net_device *dev,
|
||||
struct ethtool_rmon_stats *rmon_stats,
|
||||
const struct ethtool_rmon_hist_range **ranges)
|
||||
{
|
||||
struct bcmasp_intf *intf = netdev_priv(dev);
|
||||
|
||||
*ranges = bcmasp_rmon_ranges;
|
||||
|
||||
rmon_stats->undersize_pkts = umac_rl(intf, UMC_RRUND);
|
||||
rmon_stats->oversize_pkts = umac_rl(intf, UMC_GROVR);
|
||||
rmon_stats->fragments = umac_rl(intf, UMC_RRFRG);
|
||||
rmon_stats->jabbers = umac_rl(intf, UMC_GRJBR);
|
||||
|
||||
rmon_stats->hist[0] = umac_rl(intf, UMC_GR64);
|
||||
rmon_stats->hist[1] = umac_rl(intf, UMC_GR127);
|
||||
rmon_stats->hist[2] = umac_rl(intf, UMC_GR255);
|
||||
rmon_stats->hist[3] = umac_rl(intf, UMC_GR511);
|
||||
rmon_stats->hist[4] = umac_rl(intf, UMC_GR1023);
|
||||
rmon_stats->hist[5] = umac_rl(intf, UMC_GR1518);
|
||||
rmon_stats->hist[6] = umac_rl(intf, UMC_GRMGV);
|
||||
|
||||
rmon_stats->hist_tx[0] = umac_rl(intf, UMC_TR64);
|
||||
rmon_stats->hist_tx[1] = umac_rl(intf, UMC_TR127);
|
||||
rmon_stats->hist_tx[2] = umac_rl(intf, UMC_TR255);
|
||||
rmon_stats->hist_tx[3] = umac_rl(intf, UMC_TR511);
|
||||
rmon_stats->hist_tx[4] = umac_rl(intf, UMC_TR1023);
|
||||
rmon_stats->hist_tx[5] = umac_rl(intf, UMC_TR1518);
|
||||
rmon_stats->hist_tx[6] = umac_rl(intf, UMC_TRMGV);
|
||||
}
|
||||
|
||||
static void bcmasp_get_eth_ctrl_stats(struct net_device *dev,
|
||||
struct ethtool_eth_ctrl_stats *ctrl_stats)
|
||||
{
|
||||
struct bcmasp_intf *intf = netdev_priv(dev);
|
||||
|
||||
ctrl_stats->MACControlFramesTransmitted = umac_rl(intf, UMC_GTXCF);
|
||||
ctrl_stats->MACControlFramesReceived = umac_rl(intf, UMC_GRXCF);
|
||||
ctrl_stats->UnsupportedOpcodesReceived = umac_rl(intf, UMC_GRXUO);
|
||||
}
|
||||
|
||||
const struct ethtool_ops bcmasp_ethtool_ops = {
|
||||
.get_drvinfo = bcmasp_get_drvinfo,
|
||||
.get_link = ethtool_op_get_link,
|
||||
@ -263,4 +337,7 @@ const struct ethtool_ops bcmasp_ethtool_ops = {
|
||||
.set_rxnfc = bcmasp_set_rxnfc,
|
||||
.set_eee = bcmasp_set_eee,
|
||||
.get_eee = bcmasp_get_eee,
|
||||
.get_eth_mac_stats = bcmasp_get_eth_mac_stats,
|
||||
.get_rmon_stats = bcmasp_get_rmon_stats,
|
||||
.get_eth_ctrl_stats = bcmasp_get_eth_ctrl_stats,
|
||||
};
|
||||
|
@ -45,7 +45,68 @@
|
||||
#define UMC_EEE_LPI_TIMER 0x68
|
||||
#define UMC_PAUSE_CNTRL 0x330
|
||||
#define UMC_TX_FLUSH 0x334
|
||||
#define UMC_MIB_START 0x400
|
||||
#define UMC_GR64 0x400
|
||||
#define UMC_GR127 0x404
|
||||
#define UMC_GR255 0x408
|
||||
#define UMC_GR511 0x40c
|
||||
#define UMC_GR1023 0x410
|
||||
#define UMC_GR1518 0x414
|
||||
#define UMC_GRMGV 0x418
|
||||
#define UMC_GR2047 0x41c
|
||||
#define UMC_GR4095 0x420
|
||||
#define UMC_GR9216 0x424
|
||||
#define UMC_GRPKT 0x428
|
||||
#define UMC_GRBYT 0x42c
|
||||
#define UMC_GRMCA 0x430
|
||||
#define UMC_GRBCA 0x434
|
||||
#define UMC_GRFCS 0x438
|
||||
#define UMC_GRXCF 0x43c
|
||||
#define UMC_GRXPF 0x440
|
||||
#define UMC_GRXUO 0x444
|
||||
#define UMC_GRALN 0x448
|
||||
#define UMC_GRFLR 0x44c
|
||||
#define UMC_GRCDE 0x450
|
||||
#define UMC_GRFCR 0x454
|
||||
#define UMC_GROVR 0x458
|
||||
#define UMC_GRJBR 0x45c
|
||||
#define UMC_GRMTUE 0x460
|
||||
#define UMC_GRPOK 0x464
|
||||
#define UMC_GRUC 0x468
|
||||
#define UMC_GRPPP 0x46c
|
||||
#define UMC_GRMCRC 0x470
|
||||
#define UMC_TR64 0x480
|
||||
#define UMC_TR127 0x484
|
||||
#define UMC_TR255 0x488
|
||||
#define UMC_TR511 0x48c
|
||||
#define UMC_TR1023 0x490
|
||||
#define UMC_TR1518 0x494
|
||||
#define UMC_TRMGV 0x498
|
||||
#define UMC_TR2047 0x49c
|
||||
#define UMC_TR4095 0x4a0
|
||||
#define UMC_TR9216 0x4a4
|
||||
#define UMC_GTPKT 0x4a8
|
||||
#define UMC_GTMCA 0x4ac
|
||||
#define UMC_GTBCA 0x4b0
|
||||
#define UMC_GTXPF 0x4b4
|
||||
#define UMC_GTXCF 0x4b8
|
||||
#define UMC_GTFCS 0x4bc
|
||||
#define UMC_GTOVR 0x4c0
|
||||
#define UMC_GTDRF 0x4c4
|
||||
#define UMC_GTEDF 0x4c8
|
||||
#define UMC_GTSCL 0x4cc
|
||||
#define UMC_GTMCL 0x4d0
|
||||
#define UMC_GTLCL 0x4d4
|
||||
#define UMC_GTXCL 0x4d8
|
||||
#define UMC_GTFRG 0x4dc
|
||||
#define UMC_GTNCL 0x4e0
|
||||
#define UMC_GTJBR 0x4e4
|
||||
#define UMC_GTBYT 0x4e8
|
||||
#define UMC_GTPOK 0x4ec
|
||||
#define UMC_GTUC 0x4f0
|
||||
#define UMC_RRPKT 0x500
|
||||
#define UMC_RRUND 0x504
|
||||
#define UMC_RRFRG 0x508
|
||||
#define UMC_RRBYT 0x50c
|
||||
#define UMC_MIB_CNTRL 0x580
|
||||
#define UMC_MIB_CNTRL_RX_CNT_RST BIT(0)
|
||||
#define UMC_MIB_CNTRL_RUNT_CNT_RST BIT(1)
|
||||
|
Loading…
Reference in New Issue
Block a user