[PATCH v3 03/16] net/zxdh: optimize link update process

Junlong Wang wang.junlong1 at zte.com.cn
Tue Feb 25 11:42:55 CET 2025


optimize link update process.

Signed-off-by: Junlong Wang <wang.junlong1 at zte.com.cn>
---
 drivers/net/zxdh/zxdh_ethdev_ops.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c
index eefecde823..0c92bd7c05 100644
--- a/drivers/net/zxdh/zxdh_ethdev_ops.c
+++ b/drivers/net/zxdh/zxdh_ethdev_ops.c
@@ -193,6 +193,7 @@ zxdh_link_info_get(struct rte_eth_dev *dev, struct rte_eth_link *link)
 			return -1;
 		}
 		link->link_speed = reply_info.reply_body.link_msg.speed;
+		link->link_autoneg = reply_info.reply_body.link_msg.autoneg;
 		hw->speed_mode = reply_info.reply_body.link_msg.speed_modes;
 		if ((reply_info.reply_body.link_msg.duplex & RTE_ETH_LINK_FULL_DUPLEX) ==
 				RTE_ETH_LINK_FULL_DUPLEX)
@@ -263,13 +264,22 @@ int32_t zxdh_dev_link_update(struct rte_eth_dev *dev, int32_t wait_to_complete _
 		return ret;
 	}
 	link.link_status &= hw->admin_status;
-	if (link.link_status == RTE_ETH_LINK_DOWN)
-		link.link_speed  = RTE_ETH_SPEED_NUM_UNKNOWN;
-
-	ret = zxdh_config_port_status(dev, link.link_status);
-	if (ret != 0) {
-		PMD_DRV_LOG(ERR, "set port attr %d failed", link.link_status);
-		return ret;
+	if (link.link_status == RTE_ETH_LINK_DOWN) {
+		PMD_DRV_LOG(DEBUG, "dev link status is down.");
+		goto link_down;
+	}
+	goto out;
+
+link_down:
+	link.link_status = RTE_ETH_LINK_DOWN;
+	link.link_speed  = RTE_ETH_SPEED_NUM_UNKNOWN;
+out:
+	if (link.link_status != dev->data->dev_link.link_status) {
+		ret = zxdh_config_port_status(dev, link.link_status);
+		if (ret != 0) {
+			PMD_DRV_LOG(ERR, "set port attr %d failed", link.link_status);
+			return ret;
+		}
 	}
 	return rte_eth_linkstatus_set(dev, &link);
 }
-- 
2.27.0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/dev/attachments/20250225/e2177a03/attachment.htm>


More information about the dev mailing list