octeon_ep: ensure octep_get_link_status() successfully before octep_link_up()
authorZiyang Xuan <william.xuanziyang@huawei.com>
Fri, 11 Nov 2022 07:08:47 +0000 (15:08 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Nov 2022 10:55:43 +0000 (10:55 +0000)
octep_get_link_status() can fail because send mbox message failed, then
octep_get_link_status() will return ret less than 0. Excute octep_link_up()
as long as ret is not equal to 0 in octep_open() now. That is not correct.

The value type of link.state is enum octep_ctrl_net_state. Positive value
represents up. Excute octep_link_up() when ret is bigger than 0.

Fixes: 862cd659a6fb ("octeon_ep: Add driver framework and device initialization")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeon_ep/octep_main.c

index 7985a74..546bceb 100644 (file)
@@ -521,7 +521,7 @@ static int octep_open(struct net_device *netdev)
        octep_oq_dbell_init(oct);
 
        ret = octep_get_link_status(oct);
-       if (ret)
+       if (ret > 0)
                octep_link_up(netdev);
 
        return 0;