net/hns3: fix link status when port is stopped
authorHuisong Li <lihuisong@huawei.com>
Sun, 25 Apr 2021 12:06:28 +0000 (20:06 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 29 Apr 2021 07:54:27 +0000 (09:54 +0200)
When port is stopped, link down should be reported to user. For HNS3
PF driver, link status comes from link status of hardware. If the port
supports NCSI feature, hardware MAC will not be disabled. At this case,
even if the port is stopped, the link status is still Up. So driver
should set link down when the port is stopped.

Fixes: 59fad0f32135 ("net/hns3: support link update operation")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
drivers/net/hns3/hns3_ethdev.c

index e3f1b7c..63ae555 100644 (file)
@@ -2897,6 +2897,15 @@ hns3_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete)
        struct rte_eth_link new_link;
        int ret;
 
+       /* When port is stopped, report link down. */
+       if (eth_dev->data->dev_started == 0) {
+               new_link.link_autoneg = mac->link_autoneg;
+               new_link.link_duplex = mac->link_duplex;
+               new_link.link_speed = ETH_SPEED_NUM_NONE;
+               new_link.link_status = ETH_LINK_DOWN;
+               goto out;
+       }
+
        do {
                ret = hns3_update_port_link_info(eth_dev);
                if (ret) {
@@ -2914,6 +2923,7 @@ hns3_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete)
        memset(&new_link, 0, sizeof(new_link));
        hns3_setup_linkstatus(eth_dev, &new_link);
 
+out:
        return rte_eth_linkstatus_set(eth_dev, &new_link);
 }