[dpdk-stable] patch 'net/mlx5: fix representor port link status' has been queued to stable release 18.08.1

Kevin Traynor ktraynor at redhat.com
Wed Nov 21 17:48:01 CET 2018


Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From f907ba8117135f3c6d058c9ba27afd3f6f1a7120 Mon Sep 17 00:00:00 2001
From: Xueming Li <xuemingl at mellanox.com>
Date: Wed, 19 Sep 2018 16:27:37 +0800
Subject: [PATCH] net/mlx5: fix representor port link status

[ upstream commit 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 ]

Current code uses PF links status for representor port, not the
representor interface itself.
This caused wrong representor port link status when toggling
interface up or down.

Fixes: 2b7302638898 ("net/mlx5: probe all port representors")

Signed-off-by: Xueming Li <xuemingl at mellanox.com>
Acked-by: Yongseok Koh <yskoh at mellanox.com>
---
 drivers/net/mlx5/mlx5_ethdev.c | 36 +++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 34c5b95ee..5515fdbae 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -628,5 +628,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -634,8 +634,11 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 		return ret;
 	}
-	memset(&dev_link, 0, sizeof(dev_link));
-	dev_link.link_status = ((ifr.ifr_flags & IFF_UP) &&
-				(ifr.ifr_flags & IFF_RUNNING));
-	ifr.ifr_data = (void *)&edata;
+	dev_link = (struct rte_eth_link) {
+		.link_status = ((ifr.ifr_flags & IFF_UP) &&
+				(ifr.ifr_flags & IFF_RUNNING)),
+	};
+	ifr = (struct ifreq) {
+		.ifr_data = (void *)&edata,
+	};
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
 	if (ret) {
@@ -667,6 +670,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	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 (!priv->representor &&
+	    ((dev_link.link_speed && !dev_link.link_status) ||
+	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
 		return -rte_errno;
@@ -699,5 +703,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -705,8 +709,11 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 		return ret;
 	}
-	memset(&dev_link, 0, sizeof(dev_link));
-	dev_link.link_status = ((ifr.ifr_flags & IFF_UP) &&
-				(ifr.ifr_flags & IFF_RUNNING));
-	ifr.ifr_data = (void *)&gcmd;
+	dev_link = (struct rte_eth_link) {
+		.link_status = ((ifr.ifr_flags & IFF_UP) &&
+				(ifr.ifr_flags & IFF_RUNNING)),
+	};
+	ifr = (struct ifreq) {
+		.ifr_data = (void *)&gcmd,
+	};
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
 	if (ret) {
@@ -776,6 +783,7 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	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 (!priv->representor &&
+	    ((dev_link.link_speed && !dev_link.link_status) ||
+	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
 		return -rte_errno;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.231965647 +0000
+++ 0047-net-mlx5-fix-representor-port-link-status.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 Mon Sep 17 00:00:00 2001
+From f907ba8117135f3c6d058c9ba27afd3f6f1a7120 Mon Sep 17 00:00:00 2001
 From: Xueming Li <xuemingl at mellanox.com>
 Date: Wed, 19 Sep 2018 16:27:37 +0800
 Subject: [PATCH] net/mlx5: fix representor port link status
 
+[ upstream commit 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 ]
+
 Current code uses PF links status for representor port, not the
 representor interface itself.
 This caused wrong representor port link status when toggling
 interface up or down.
 
 Fixes: 2b7302638898 ("net/mlx5: probe all port representors")
-Cc: stable at dpdk.org
 
 Signed-off-by: Xueming Li <xuemingl at mellanox.com>
 Acked-by: Yongseok Koh <yskoh at mellanox.com>


More information about the stable mailing list