[dpdk-dev] [PATCH] net/mlx5: fix eagain on admin down

Mike Manning mmanning at vyatta.att-mail.com
Mon Dec 9 19:23:14 CET 2019


The check in mlx5_link_update_unlocked_gs() returns -EAGAIN if link
status does not correspond to link speed. If status is DOWN, the speed
is expected to be ETH_SPEED_NUM_NONE (0). But as the link speed is -1
on admin down, modify the check to account for this.

Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to complete")
Cc: Nélio Laranjeiro <nelio.laranjeiro at 6wind.com>

Signed-off-by: Mike Manning <mmanning at vyatta.att-mail.com>
---
 drivers/net/mlx5/mlx5_ethdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index d80ae458b..6ef2dfd74 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -1031,8 +1031,8 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 				ETH_LINK_HALF_DUPLEX : ETH_LINK_FULL_DUPLEX);
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 				  ETH_LINK_SPEED_FIXED);
-	if (((dev_link.link_speed && !dev_link.link_status) ||
-	     (!dev_link.link_speed && dev_link.link_status))) {
+	if ((((int)dev_link.link_speed > 0 && !dev_link.link_status) ||
+	     ((int)dev_link.link_speed <= 0 && dev_link.link_status))) {
 		rte_errno = EAGAIN;
 		return -rte_errno;
 	}
-- 
2.11.0



More information about the dev mailing list