From fd2d28fcb579330760eeb658521543093eb216fb Mon Sep 17 00:00:00 2001 From: Igor Romanov Date: Tue, 10 Sep 2019 10:02:16 +0100 Subject: [PATCH] ethdev: change owner delete function to return int Change rte_eth_dev_owner_delete() return value from void to int and return negative errno values in case of error conditions. Right now there is only one error case for rte_eth_dev_owner_delete() - invalid owner, but it still makes sense to return error to catch bugs in the code which uses the function. Also update the usage of the function in drivers/netvsc according to the new return type. Signed-off-by: Igor Romanov Signed-off-by: Andrew Rybchenko --- doc/guides/rel_notes/deprecation.rst | 1 - doc/guides/rel_notes/release_19_11.rst | 3 +++ drivers/net/netvsc/hn_ethdev.c | 5 ++++- lib/librte_ethdev/rte_ethdev.c | 6 +++++- lib/librte_ethdev/rte_ethdev.h | 4 +++- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 743f97fbb7..8f9cd2ad1f 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -91,7 +91,6 @@ Deprecation Notices - ``rte_eth_allmulticast_enable`` and ``rte_eth_allmulticast_disable`` - ``rte_eth_dev_stop`` - ``rte_eth_dev_close`` - - ``rte_eth_dev_owner_delete`` * ethdev: New offload flags ``DEV_RX_OFFLOAD_RSS_HASH`` and ``DEV_RX_OFFLOAD_FLOW_MARK`` will be added in 19.11. diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst index 1bff8721f7..458601ef98 100644 --- a/doc/guides/rel_notes/release_19_11.rst +++ b/doc/guides/rel_notes/release_19_11.rst @@ -140,6 +140,9 @@ API Changes * ethdev: changed ``rte_eth_macaddr_get`` return value from ``void`` to ``int`` to provide a way to report various error conditions. +* ethdev: changed ``rte_eth_dev_owner_delete`` return value from ``void`` to + ``int`` to provide a way to report various error conditions. + ABI Changes ----------- diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 7edfe5ec1e..89c769ce8a 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -1004,6 +1004,7 @@ static int eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) { struct hn_data *hv = eth_dev->data->dev_private; + int ret; PMD_INIT_FUNC_TRACE(); @@ -1021,7 +1022,9 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) hn_tx_pool_uninit(eth_dev); rte_vmbus_chan_close(hv->primary->chan); rte_free(hv->primary); - rte_eth_dev_owner_delete(hv->owner.id); + ret = rte_eth_dev_owner_delete(hv->owner.id); + if (ret != 0) + return ret; return 0; } diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 56875bb369..2f65143e24 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -687,10 +687,11 @@ rte_eth_dev_owner_unset(const uint16_t port_id, const uint64_t owner_id) return ret; } -void +int rte_eth_dev_owner_delete(const uint64_t owner_id) { uint16_t port_id; + int ret = 0; rte_eth_dev_shared_data_prepare(); @@ -708,9 +709,12 @@ rte_eth_dev_owner_delete(const uint64_t owner_id) RTE_ETHDEV_LOG(ERR, "Invalid owner id=%016"PRIx64"\n", owner_id); + ret = -EINVAL; } rte_spinlock_unlock(&rte_eth_dev_shared_data->ownership_lock); + + return ret; } int diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index d3f4f25730..1bc7e08dce 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1566,9 +1566,11 @@ int rte_eth_dev_owner_unset(const uint16_t port_id, * * @param owner_id * The owner identifier. + * @return + * 0 on success, negative errno value on error. */ __rte_experimental -void rte_eth_dev_owner_delete(const uint64_t owner_id); +int rte_eth_dev_owner_delete(const uint64_t owner_id); /** * @warning -- 2.20.1