From da328f7f115a459a64fd7005d4acc1ec9e1ba8bd Mon Sep 17 00:00:00 2001 From: Igor Romanov Date: Fri, 6 Sep 2019 15:34:53 +0100 Subject: [PATCH] ethdev: change xstats reset function to return int Change rte_eth_xstats_reset() return value from void to int and return negative errno values in case of error conditions. Signed-off-by: Igor Romanov Signed-off-by: Andrew Rybchenko Reviewed-by: Ferruh Yigit --- app/proc-info/main.c | 10 +++++++++- app/test-pmd/config.c | 8 +++++++- doc/guides/rel_notes/deprecation.rst | 1 - doc/guides/rel_notes/release_19_11.rst | 3 +++ lib/librte_ethdev/rte_ethdev.c | 8 ++++---- lib/librte_ethdev/rte_ethdev.h | 7 ++++++- 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 34eb7a7cc4..94e808dc6e 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -580,8 +580,16 @@ err: static void nic_xstats_clear(uint16_t port_id) { + int ret; + printf("\n Clearing NIC xstats for port %d\n", port_id); - rte_eth_xstats_reset(port_id); + ret = rte_eth_xstats_reset(port_id); + if (ret != 0) { + printf("\n Error clearing xstats for port %d: %s\n", port_id, + strerror(-ret)); + return; + } + printf("\n NIC extended statistics for port %d cleared\n", port_id); } diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 24158e5f7d..857b6dabc9 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -273,7 +273,13 @@ nic_xstats_display(portid_t port_id) void nic_xstats_clear(portid_t port_id) { - rte_eth_xstats_reset(port_id); + int ret; + + ret = rte_eth_xstats_reset(port_id); + if (ret != 0) { + printf("%s: Error: failed to reset xstats (port %u): %s", + __func__, port_id, strerror(ret)); + } } void diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index b2e0a1fc7c..beb9cc3b65 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -92,7 +92,6 @@ Deprecation Notices - ``rte_eth_link_get`` and ``rte_eth_link_get_nowait`` - ``rte_eth_dev_stop`` - ``rte_eth_dev_close`` - - ``rte_eth_xstats_reset`` - ``rte_eth_macaddr_get`` - ``rte_eth_dev_owner_delete`` diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst index 0cbf33986d..9d150b813b 100644 --- a/doc/guides/rel_notes/release_19_11.rst +++ b/doc/guides/rel_notes/release_19_11.rst @@ -130,6 +130,9 @@ API Changes ``rte_eth_promiscuous_disable`` return value from ``void`` to ``int`` to provide a way to report various error conditions. +* ethdev: changed ``rte_eth_dev_xstats_reset`` return value from ``void`` to + ``int`` to provide a way to report various error conditions. + ABI Changes ----------- diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 2ad0069ce5..933d71e512 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -2520,22 +2520,22 @@ rte_eth_xstats_get(uint16_t port_id, struct rte_eth_xstat *xstats, } /* reset ethdev extended statistics */ -void +int rte_eth_xstats_reset(uint16_t port_id) { struct rte_eth_dev *dev; - RTE_ETH_VALID_PORTID_OR_RET(port_id); + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); dev = &rte_eth_devices[port_id]; /* implemented by the driver */ if (dev->dev_ops->xstats_reset != NULL) { (*dev->dev_ops->xstats_reset)(dev); - return; + return 0; } /* fallback to default */ - rte_eth_stats_reset(port_id); + return rte_eth_stats_reset(port_id); } static int diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index f07a829b29..328503d1be 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -2284,8 +2284,13 @@ int rte_eth_xstats_get_id_by_name(uint16_t port_id, const char *xstat_name, * * @param port_id * The port identifier of the Ethernet device. + * @return + * - (0) if device notified to reset extended stats. + * - (-ENOTSUP) if pmd doesn't support both + * extended stats and basic stats reset. + * - (-ENODEV) if *port_id* invalid. */ -void rte_eth_xstats_reset(uint16_t port_id); +int rte_eth_xstats_reset(uint16_t port_id); /** * Set a mapping for the specified transmit queue to the specified per-queue -- 2.20.1