summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sfc/ef100_netdev.c
diff options
context:
space:
mode:
authorEdward Cree <ecree@solarflare.com>2020-08-03 23:37:20 +0300
committerDavid S. Miller <davem@davemloft.net>2020-08-04 04:22:55 +0300
commitb593b6f1b4921700c00394d35e098259e3d04913 (patch)
treeef55192543a11cbe2a8a600d84358e5fa7d4a0ba /drivers/net/ethernet/sfc/ef100_netdev.c
parentb780feac367e5b77028b8088829b7958944bd71a (diff)
downloadlinux-b593b6f1b4921700c00394d35e098259e3d04913.tar.xz
sfc_ef100: statistics gathering
MAC stats work much the same as on EF10, with a periodic DMA to a region specified via an MCDI. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/ef100_netdev.c')
-rw-r--r--drivers/net/ethernet/sfc/ef100_netdev.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/ef100_netdev.c b/drivers/net/ethernet/sfc/ef100_netdev.c
index 362a915c836a..63c311ba28b9 100644
--- a/drivers/net/ethernet/sfc/ef100_netdev.c
+++ b/drivers/net/ethernet/sfc/ef100_netdev.c
@@ -86,6 +86,7 @@ static int ef100_net_stop(struct net_device *net_dev)
netif_stop_queue(net_dev);
efx_stop_all(efx);
+ efx_mcdi_mac_fini_stats(efx);
efx_disable_interrupts(efx);
efx_clear_interrupt_affinity(efx);
efx_nic_fini_interrupt(efx);
@@ -157,6 +158,10 @@ static int ef100_net_open(struct net_device *net_dev)
*/
(void) efx_mcdi_poll_reboot(efx);
+ rc = efx_mcdi_mac_init_stats(efx);
+ if (rc)
+ goto fail;
+
efx_start_all(efx);
/* Link state detection is normally event-driven; we have
@@ -212,6 +217,7 @@ static const struct net_device_ops ef100_netdev_ops = {
.ndo_open = ef100_net_open,
.ndo_stop = ef100_net_stop,
.ndo_start_xmit = ef100_hard_start_xmit,
+ .ndo_get_stats64 = efx_net_stats,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_rx_mode = efx_set_rx_mode, /* Lookout */
.ndo_get_phys_port_id = efx_get_phys_port_id,