]> git.droids-corp.org - dpdk.git/commitdiff
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 e3f1b7c3ad9a074c306ff51ea793da0c22ac689c..63ae555c9d688544e8b3522519a58186dbbf52f0 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);
 }