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: 1caab2f1e6 ("net/sfc: add basic statistics")
Cc: stable@dpdk.org

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
Ivan Malov 2017-07-08 16:16:55 +01:00 committed by Ferruh Yigit
parent 1a35dc877a
commit 3b257f7e6c

View File

@ -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"); sfc_log_init(sa, "disable MAC drain");
rc = efx_mac_drain(sa->nic, B_FALSE); rc = efx_mac_drain(sa->nic, B_FALSE);
if (rc != 0) 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, (void)efx_mac_stats_periodic(sa->nic, &port->mac_stats_dma_mem,
0, B_FALSE); 0, B_FALSE);
fail_mac_stats_upload:
fail_mac_stats_periodic: fail_mac_stats_periodic:
fail_mcast_address_list_set: fail_mcast_address_list_set:
fail_mac_filter_set: fail_mac_filter_set: