[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