patch 'net/nfp: fix VF link speed' has been queued to stable release 24.11.2

Kevin Traynor ktraynor at redhat.com
Thu Feb 13 10:57:39 CET 2025


Hi,

FYI, your patch has been queued to stable release 24.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/17/25. 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. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/054215a0333cf1a063155fb24b27bfc896868570

Thanks.

Kevin

---
>From 054215a0333cf1a063155fb24b27bfc896868570 Mon Sep 17 00:00:00 2001
From: Long Wu <long.wu at corigine.com>
Date: Wed, 18 Dec 2024 14:52:55 +0800
Subject: [PATCH] net/nfp: fix VF link speed

[ upstream commit c43d2aab426bdc6e22142b4c5667d6d1634248de ]

The previous logic does not update the 'rte_eth_device' link status
when the port link status changed, which cause the firmware won't be
notified by the PMD.
Furthermore, the physical representor port should also notify firmware
its current speed with multi-pf firmware.

Fix these problems by modify the related logic, also add needed helper
function at the same time.

Fixes: eae7dadbe987 ("net/nfp: update link status reporting")

Signed-off-by: Long Wu <long.wu at corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he at corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c      | 14 ++++++++++++++
 .../net/nfp/flower/nfp_flower_representor.c   | 19 +++++++++++++++++--
 .../net/nfp/flower/nfp_flower_representor.h   |  3 +++
 drivers/net/nfp/nfp_net_common.c              | 11 ++++++++++-
 4 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 92887ce1be..21bf26b738 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -421,4 +421,6 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv,
 	uint32_t port;
 	uint32_t index;
+	uint16_t link_status;
+	struct rte_eth_dev *eth_dev;
 	struct nfp_flower_representor *repr;
 	struct nfp_flower_cmsg_port_mod *msg;
@@ -457,4 +459,6 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv,
 
 	repr->link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
+
+	link_status = repr->link.link_status;
 	if ((msg->info & NFP_FLOWER_CMSG_PORT_MOD_INFO_LINK) != 0)
 		repr->link.link_status = RTE_ETH_LINK_UP;
@@ -462,4 +466,14 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv,
 		repr->link.link_status = RTE_ETH_LINK_DOWN;
 
+	if (link_status != repr->link.link_status) {
+		eth_dev = rte_eth_dev_get_by_name(repr->name);
+		if (eth_dev == NULL) {
+			PMD_DRV_LOG(ERR, "Can not get 'eth_dev' by name %s.", repr->name);
+			return -EINVAL;
+		}
+
+		nfp_flower_repr_link_update(eth_dev, 0);
+	}
+
 	return 0;
 }
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index 4017f602a2..9601aa5f96 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -25,4 +25,19 @@ struct nfp_repr_init {
 };
 
+bool
+nfp_flower_repr_is_pf(struct rte_eth_dev *dev)
+{
+	struct nfp_net_hw_priv *hw_priv;
+	struct nfp_flower_representor *repr;
+
+	hw_priv = dev->process_private;
+	repr = dev->data->dev_private;
+
+	if (hw_priv->pf_dev->multi_pf.enabled)
+		return repr->repr_type == NFP_REPR_TYPE_PHYS_PORT;
+	else
+		return repr->repr_type == NFP_REPR_TYPE_PF;
+}
+
 static int
 nfp_repr_get_eeprom_len(struct rte_eth_dev *dev)
@@ -113,5 +128,5 @@ nfp_flower_repr_led_off(struct rte_eth_dev *dev)
 }
 
-static int
+int
 nfp_flower_repr_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete)
@@ -126,5 +141,5 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev,
 	ret = nfp_net_link_update_common(dev, link, link->link_status);
 
-	if (repr->repr_type == NFP_REPR_TYPE_PF)
+	if (nfp_flower_repr_is_pf(dev))
 		nfp_net_notify_port_speed(repr->app_fw_flower->pf_hw, link);
 
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h
index 3f6ee32fe4..a7416eccab 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.h
+++ b/drivers/net/nfp/flower/nfp_flower_representor.h
@@ -33,4 +33,7 @@ bool nfp_flower_repr_is_vf(struct nfp_flower_representor *repr);
 bool nfp_flower_repr_is_phy(struct nfp_flower_representor *repr);
 int nfp_flower_repr_stats_reset(struct rte_eth_dev *ethdev);
+int nfp_flower_repr_link_update(struct rte_eth_dev *dev,
+		__rte_unused int wait_to_complete);
+bool nfp_flower_repr_is_pf(struct rte_eth_dev *dev);
 
 #endif /* __NFP_FLOWER_REPRESENTOR_H__ */
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index e68ce68229..aaa515bac2 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -160,4 +160,13 @@ static const uint32_t nfp_net_link_speed_nfp2rte[] = {
 };
 
+static bool
+nfp_net_is_pf(struct rte_eth_dev *dev)
+{
+	if (rte_eth_dev_is_repr(dev))
+		return nfp_flower_repr_is_pf(dev);
+
+	return ((struct nfp_net_hw_priv *)dev->process_private)->is_pf;
+}
+
 static size_t
 nfp_net_link_speed_rte2nfp(uint32_t speed)
@@ -827,5 +836,5 @@ nfp_net_link_update_common(struct rte_eth_dev *dev,
 	hw_priv = dev->process_private;
 	if (link->link_status == RTE_ETH_LINK_UP) {
-		if (hw_priv->is_pf)
+		if (nfp_net_is_pf(dev))
 			nfp_net_pf_speed_update(dev, hw_priv, link);
 		else
-- 
2.48.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-02-12 17:29:35.887269014 +0000
+++ 0012-net-nfp-fix-VF-link-speed.patch	2025-02-12 17:29:34.160944796 +0000
@@ -1 +1 @@
-From c43d2aab426bdc6e22142b4c5667d6d1634248de Mon Sep 17 00:00:00 2001
+From 054215a0333cf1a063155fb24b27bfc896868570 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c43d2aab426bdc6e22142b4c5667d6d1634248de ]
+
@@ -16 +17,0 @@
-Cc: stable at dpdk.org



More information about the stable mailing list