From 3b257f7e6c0fb5daa7b5f3b08e992effb45341e9 Mon Sep 17 00:00:00 2001 From: Ivan Malov Date: Sat, 8 Jul 2017 16:16:55 +0100 Subject: [PATCH] net/sfc: request MAC stats upload immediately on port start If MAC stats refresh is arranged to be done by periodic DMA, the first DMA transaction is unlikely to occur right on the port start; if the user tries to get stats right after port start and before the transaction occurs, bogus figures will be collected; a one-off stats upload on port start is a fix Fixes: 1caab2f1e684 ("net/sfc: add basic statistics") Cc: stable@dpdk.org Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko --- drivers/net/sfc/sfc_port.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/net/sfc/sfc_port.c b/drivers/net/sfc/sfc_port.c index e7eea9fad0..ba2284fcbe 100644 --- a/drivers/net/sfc/sfc_port.c +++ b/drivers/net/sfc/sfc_port.c @@ -245,6 +245,18 @@ sfc_port_start(struct sfc_adapter *sa) } } + if ((port->mac_stats_update_period_ms != 0) && + port->mac_stats_periodic_dma_supported) { + /* + * Request an explicit MAC stats upload immediately to + * preclude bogus figures readback if the user decides + * to read stats before periodic DMA is really started + */ + rc = efx_mac_stats_upload(sa->nic, &port->mac_stats_dma_mem); + if (rc != 0) + goto fail_mac_stats_upload; + } + sfc_log_init(sa, "disable MAC drain"); rc = efx_mac_drain(sa->nic, B_FALSE); if (rc != 0) @@ -265,6 +277,7 @@ sfc_port_start(struct sfc_adapter *sa) (void)efx_mac_stats_periodic(sa->nic, &port->mac_stats_dma_mem, 0, B_FALSE); +fail_mac_stats_upload: fail_mac_stats_periodic: fail_mcast_address_list_set: fail_mac_filter_set: