The current extended ethernet statistics fetching involve doing several string operations, which causes performance issues if there are lots of statistics and/or network interfaces. This patchset changes the API for xstats to use integer identifiers instead of strings and implements this new API for the ixgbe, i40e, e1000, fm10k, and virtio drivers.
-- v5 changes: * Missing .map file change added (broke shared builds) * rte_eth_xstats_get_names(): Changed buffer-too-small return value * Missing commit description added * Documentation patch squashed (had been ACK'd) v4 changes: * rte_eth_xstats_count() removed * rte_eth_xstats_names() changed to rte_eth_xstats_get_names() * struct rte_eth_xstats_name renamed to rte_eth_xstat_name * struct rte_eth_xstats renamed to rte_eth_xstat * struct rte_eth_dev: .xstats_names renamed to .xstats_get_names * Other minor local variable name changes * Documentation updates due to renames * API changeover patches squashed v3 changes: * Corrected ixgbe vf xstats fetching * Added xstats changes to e1000, f10k, and virtio drivers * Added cleanup patch that removes now-redundant name field * Removed ethtool xstats command * Removed unused .xstats_count from eth-dev_ops * Changed test-pmd & proc_info to use new API * Added documentation update * Added missing changes to .map file (affected shared lib builds) v2 changes: * Fetching xstats count now seperate API function * Added #define constants for some magic numbers * Fixed bug with virtual function count fetching * For non-xstats-supporting drivers, queue stats returned * Some refactoring/cleanups * Removed index assumption from example Remy Horton (7): rte: change xstats to use integer ids drivers/net/ixgbe: change xstats to use integer ids drivers/net/e1000: change xstats to use integer ids drivers/net/fm10k: change xstats to use integer ids drivers/net/i40e: change xstats to use integer ids drivers/net/virtio: change xstats to use integer ids rte: change xstats usage to new API app/proc_info/main.c | 29 +++++++-- app/test-pmd/config.c | 54 ++++++++++++---- doc/guides/prog_guide/poll_mode_drv.rst | 25 ++++++-- drivers/net/e1000/igb_ethdev.c | 58 ++++++++++++++--- drivers/net/fm10k/fm10k_ethdev.c | 54 +++++++++++++--- drivers/net/i40e/i40e_ethdev.c | 82 +++++++++++++++++++----- drivers/net/i40e/i40e_ethdev_vf.c | 29 +++++++-- drivers/net/ixgbe/ixgbe_ethdev.c | 106 ++++++++++++++++++++++++++------ drivers/net/virtio/virtio_ethdev.c | 64 ++++++++++++++++--- lib/librte_ether/rte_ethdev.c | 92 ++++++++++++++++++++++++--- lib/librte_ether/rte_ethdev.h | 48 +++++++++++++-- lib/librte_ether/rte_ether_version.map | 6 ++ 12 files changed, 546 insertions(+), 101 deletions(-) -- 2.5.5