From: Ivan Malov Date: Sat, 8 Jul 2017 15:16:55 +0000 (+0100) Subject: net/sfc: request MAC stats upload immediately on port start X-Git-Tag: spdx-start~2456 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=3b257f7e6c0fb5daa7b5f3b08e992effb45341e9;p=dpdk.git 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 --- 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 @@ fail_mac_drain: (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: