optimize link update process.<br /> <br />Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn> <br />---<br /> drivers/net/zxdh/zxdh_ethdev_ops.c | 24 +++++++++++++++++-------<br /> 1 file changed, 17 insertions(+), 7 deletions(-)<br /> <br />diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c<br />index 6ed6c6cfdc..bb9d291181 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev_ops.c<br />+++ b/drivers/net/zxdh/zxdh_ethdev_ops.c<br />@@ -193,6 +193,7 @@ zxdh_link_info_get(struct rte_eth_dev *dev, struct rte_eth_link *link)<br />             return -1;<br />         }<br />         link->link_speed = reply_info.reply_body.link_msg.speed;<br />+        link->link_autoneg = reply_info.reply_body.link_msg.autoneg;<br />         hw->speed_mode = reply_info.reply_body.link_msg.speed_modes;<br />         if ((reply_info.reply_body.link_msg.duplex & RTE_ETH_LINK_FULL_DUPLEX) ==<br />                 RTE_ETH_LINK_FULL_DUPLEX)<br />@@ -263,13 +264,22 @@ int32_t zxdh_dev_link_update(struct rte_eth_dev *dev, int32_t wait_to_complete _<br />         return ret;<br />     }<br />     link.link_status &= hw->admin_status;<br />-    if (link.link_status == RTE_ETH_LINK_DOWN)<br />-        link.link_speed  = RTE_ETH_SPEED_NUM_UNKNOWN;<br />-<br />-    ret = zxdh_config_port_status(dev, link.link_status);<br />-    if (ret != 0) {<br />-        PMD_DRV_LOG(ERR, "set port attr %d failed", link.link_status);<br />-        return ret;<br />+    if (link.link_status == RTE_ETH_LINK_DOWN) {<br />+        PMD_DRV_LOG(DEBUG, "dev link status is down.");<br />+        goto link_down;<br />+    }<br />+    goto out;<br />+<br />+link_down:<br />+    link.link_status = RTE_ETH_LINK_DOWN;<br />+    link.link_speed  = RTE_ETH_SPEED_NUM_UNKNOWN;<br />+out:<br />+    if (link.link_status != dev->data->dev_link.link_status) {<br />+        ret = zxdh_config_port_status(dev, link.link_status);<br />+        if (ret != 0) {<br />+            PMD_DRV_LOG(ERR, "set port attr %d failed", link.link_status);<br />+            return ret;<br />+        }<br />     }<br />     return rte_eth_linkstatus_set(dev, &link);<br /> }<br />--  <br />2.27.0<br />