ethdev: rework xstats retrieve by id
authorLee Daly <lee.daly@intel.com>
Thu, 12 Oct 2017 13:31:28 +0000 (14:31 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 13 Oct 2017 00:29:53 +0000 (01:29 +0100)
commit8c49d5f1c219d986bb129c61dfa2e155d7f2b1da
tree8796a35bf297903994e6935ac9bf2e1e66bcf488
parent43d77c2295719bad579ca0faf8d6ff39db1dfc67
ethdev: rework xstats retrieve by id

Fix xstats functions, rte_eth_xstats_get_names_by_id()
and rte_eth_xstats_get_by_id(), in current implementation
ethdev level reads all xstat values and filters out
the ones requested by the application. This behavior doesn't
benefit from PMD ops and doesn't provide the benefit the
API was created in the first place for. APIs are also unnecessarily
complicated. Both APIs have different returns for the same params.

In this fix, instead of reading all the stats and finding the
requested value, drivers can provide ops to get selected xstats.
API no longer crashes with certain params,

rte_eth_get_by_id returned seg fault with
"ids = NULL && values != NULL && n<max”
rte_eth_get_names_by_id returned seg fault with
"ids = NULL && values != NULL && n=0”
These now return max number of stats available, matching the other API.

rte_eth_get_by_id returned seg fault with
"ids != NULL && values = NULL && n<max”
This now returns -22,(EINVAL).

Standardized variable/parameter names between the 2 APIs.

Overall code complexity reduced.

Fixes: 79c913a42f0e ("ethdev: retrieve xstats by ID")

Signed-off-by: Lee Daly <lee.daly@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h