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:
parent
1a35dc877a
commit
3b257f7e6c
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user