patches for DPDK stable branches
 help / color / mirror / Atom feed
* [PATCH 23.11] net/nfp: fix VF link speed problem
@ 2025-02-24  8:01 Chaoyong He
  2025-04-05  7:40 ` Xueming Li
  0 siblings, 1 reply; 2+ messages in thread
From: Chaoyong He @ 2025-02-24  8:01 UTC (permalink / raw)
  To: stable; +Cc: oss-drivers, Long Wu, Chaoyong He

From: Long Wu <long.wu@corigine.com>

[ 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@corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c        | 14 ++++++++++++++
 drivers/net/nfp/flower/nfp_flower_representor.c |  2 +-
 drivers/net/nfp/flower/nfp_flower_representor.h |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 102daa3d70..574e4fa056 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -419,6 +419,8 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower,
 		struct rte_mbuf *pkt_burst)
 {
 	uint32_t port;
+	uint16_t link_status;
+	struct rte_eth_dev *eth_dev;
 	struct nfp_flower_representor *repr;
 	struct nfp_flower_cmsg_port_mod *msg;
 
@@ -447,11 +449,23 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower,
 	}
 
 	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;
 	else
 		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 ethernet device 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 ada28d07c6..a86b6bb580 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -18,7 +18,7 @@ enum nfp_repr_type {
 	NFP_REPR_TYPE_MAX,          /*<< Number of representor types */
 };
 
-static int
+int
 nfp_flower_repr_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete)
 {
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h
index 8053617562..ea912ddcd4 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.h
+++ b/drivers/net/nfp/flower/nfp_flower_representor.h
@@ -24,5 +24,7 @@ struct nfp_flower_representor {
 };
 
 int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower);
+int nfp_flower_repr_link_update(struct rte_eth_dev *dev,
+		__rte_unused int wait_to_complete);
 
 #endif /* __NFP_FLOWER_REPRESENTOR_H__ */
-- 
2.43.5


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 23.11] net/nfp: fix VF link speed problem
  2025-02-24  8:01 [PATCH 23.11] net/nfp: fix VF link speed problem Chaoyong He
@ 2025-04-05  7:40 ` Xueming Li
  0 siblings, 0 replies; 2+ messages in thread
From: Xueming Li @ 2025-04-05  7:40 UTC (permalink / raw)
  To: Chaoyong He, stable; +Cc: oss-drivers, Long Wu

[-- Attachment #1: Type: text/plain, Size: 3806 bytes --]

Thanks for your help, patch queued to 23.11.4 LTS release staging

Regards,
Xueming
________________________________
From: Chaoyong He <chaoyong.he@corigine.com>
Sent: Monday, February 24, 2025 4:01 PM
To: stable@dpdk.org <stable@dpdk.org>
Cc: oss-drivers@corigine.com <oss-drivers@corigine.com>; Long Wu <long.wu@corigine.com>; Chaoyong He <chaoyong.he@corigine.com>
Subject: [PATCH 23.11] net/nfp: fix VF link speed problem

From: Long Wu <long.wu@corigine.com>

[ 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@corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c        | 14 ++++++++++++++
 drivers/net/nfp/flower/nfp_flower_representor.c |  2 +-
 drivers/net/nfp/flower/nfp_flower_representor.h |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 102daa3d70..574e4fa056 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -419,6 +419,8 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower,
                 struct rte_mbuf *pkt_burst)
 {
         uint32_t port;
+       uint16_t link_status;
+       struct rte_eth_dev *eth_dev;
         struct nfp_flower_representor *repr;
         struct nfp_flower_cmsg_port_mod *msg;

@@ -447,11 +449,23 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower,
         }

         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;
         else
                 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 ethernet device 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 ada28d07c6..a86b6bb580 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -18,7 +18,7 @@ enum nfp_repr_type {
         NFP_REPR_TYPE_MAX,          /*<< Number of representor types */
 };

-static int
+int
 nfp_flower_repr_link_update(struct rte_eth_dev *dev,
                 __rte_unused int wait_to_complete)
 {
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h
index 8053617562..ea912ddcd4 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.h
+++ b/drivers/net/nfp/flower/nfp_flower_representor.h
@@ -24,5 +24,7 @@ struct nfp_flower_representor {
 };

 int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower);
+int nfp_flower_repr_link_update(struct rte_eth_dev *dev,
+               __rte_unused int wait_to_complete);

 #endif /* __NFP_FLOWER_REPRESENTOR_H__ */
--
2.43.5


[-- Attachment #2: Type: text/html, Size: 7153 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-04-05  7:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-24  8:01 [PATCH 23.11] net/nfp: fix VF link speed problem Chaoyong He
2025-04-05  7:40 ` Xueming Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).