[dpdk-dev] [PATCH v2] net/failsafe: check eth dev stop status

Gaetan Rivet grive at u256.net
Thu Oct 15 12:37:50 CEST 2020


From: Ivan Ilchenko <Ivan.Ilchenko at oktetlabs.ru>

rte_eth_dev_stop() return value was changed from void to int,
so this patch modify usage of this function across net/failsafe
according to new return type.

Signed-off-by: Ivan Ilchenko <Ivan.Ilchenko at oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
---

Hello Andrew,

Thanks for doing this. I had some comments, so instead I made a v2.
Changes:

  * Use SUB_ID() instead of PORT_ID() for error reporting.
    The sub-device ID is the one failsafe uses to communicate
    with upper layers (app & user).

  * Run rte_eth_dev_stop() through fs_err() as well.
    Though your implementation of rte_eth_dev_stop() cannot return -EIO
    for the moment, I don't think it is precluded from happening later.

Regards,

 drivers/net/failsafe/failsafe_ether.c | 4 +++-
 drivers/net/failsafe/failsafe_ops.c   | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c
index f18935a7e2..7c6e28dc93 100644
--- a/drivers/net/failsafe/failsafe_ether.c
+++ b/drivers/net/failsafe/failsafe_ether.c
@@ -282,7 +282,9 @@ fs_dev_remove(struct sub_device *sdev)
 	switch (sdev->state) {
 	case DEV_STARTED:
 		failsafe_rx_intr_uninstall_subdevice(sdev);
-		rte_eth_dev_stop(PORT_ID(sdev));
+		ret = rte_eth_dev_stop(PORT_ID(sdev));
+		if (ret < 0)
+			ERROR("Failed to stop sub-device %u", SUB_ID(sdev));
 		sdev->state = DEV_ACTIVE;
 		/* fallthrough */
 	case DEV_ACTIVE:
diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 0ce7dfc8a6..5bcc250b5e 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -147,7 +147,9 @@ fs_dev_start(struct rte_eth_dev *dev)
 		if (ret) {
 			if (!fs_err(sdev, ret))
 				continue;
-			rte_eth_dev_stop(PORT_ID(sdev));
+			if (fs_err(sdev, rte_eth_dev_stop(PORT_ID(sdev))) < 0)
+				ERROR("Failed to stop sub-device %u",
+				      SUB_ID(sdev));
 			fs_unlock(dev, 0);
 			return ret;
 		}
-- 
2.28.0



More information about the dev mailing list