513c78ae3f
The function rte_eth_xstats_get() return an array of tuples (id, value). The value is the statistic counter, while the id references a name in the array returned by rte_eth_xstats_get_name(). Today, each 'id' returned by rte_eth_xstats_get() is equal to the index in the returned array, making this value useless. It also prevents a driver from having different indexes for names and value, like in the example below: rte_eth_xstats_get_name() returns: 0: "rx0_stat" 1: "rx1_stat" 2: ... 7: "rx7_stat" 8: "tx0_stat" 9: "tx1_stat" ... 15: "tx7_stat" rte_eth_xstats_get() returns: 0: id=0, val=<stat> ("rx0_stat") 1: id=1, val=<stat> ("rx1_stat") 2: id=8, val=<stat> ("tx0_stat") 3: id=9, val=<stat> ("tx1_stat") This patch fixes the drivers to set the 'id' in their ethdev->xstats_get() (except e1000 which was already doing it), and fixes ethdev by not setting the 'id' field to the index of the table for pmd-specific stats: instead, they should just be shifted by the max number of generic statistics. Fixes: bd6aa172cf35 ("ethdev: fetch extended statistics with integer ids") Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Remy Horton <remy.horton@intel.com>