ethdev: fix overwriting driver-specific stats
authorRemy Horton <remy.horton@intel.com>
Tue, 19 Jul 2016 11:05:17 +0000 (12:05 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 21 Jul 2016 22:16:45 +0000 (00:16 +0200)
After doing a driver callout to fill in the driver specific
parts of struct rte_eth_stats, rte_eth_stats_get() overwrites
the rx_nombuf member regardless of whether the driver itself
has assigned a value. Any driver-assigned value should take
priority.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Remy Horton <remy.horton@intel.com>
lib/librte_ether/rte_ethdev.c

index 0a6e3f1..f62a9ec 100644 (file)
@@ -1490,8 +1490,8 @@ rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats)
        memset(stats, 0, sizeof(*stats));
 
        RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stats_get, -ENOTSUP);
-       (*dev->dev_ops->stats_get)(dev, stats);
        stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
+       (*dev->dev_ops->stats_get)(dev, stats);
        return 0;
 }