]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: hns3: Fix for reset_level default assignment probelm
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 16 Jul 2018 15:36:25 +0000 (16:36 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Jul 2018 18:16:44 +0000 (11:16 -0700)
handle->reset_level is assigned to HNAE3_NONE_RESET when client is
initialized, if a tx timeout happens right after initialization,
then handle->reset_level is not resetted to HNAE3_FUNC_RESET in
hclge_reset_event, which will cause reset event not properly
handled problem.

This patch fixes it by setting handle->reset_level properly when
client is initialized.

Fixes: 6d4c3981a8d8 ("net: hns3: Changes to make enet watchdog timeout func common for PF/VF")
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index 24f82b774d7e1fc92c938a1319742ba6b31403aa..29be96e5cc476f479200690ad7718d5718805ace 100644 (file)
@@ -3085,7 +3085,6 @@ static int hns3_client_init(struct hnae3_handle *handle)
        priv->dev = &pdev->dev;
        priv->netdev = netdev;
        priv->ae_handle = handle;
-       priv->ae_handle->reset_level = HNAE3_NONE_RESET;
        priv->ae_handle->last_reset_time = jiffies;
        priv->tx_timeout_count = 0;
 
@@ -3106,6 +3105,11 @@ static int hns3_client_init(struct hnae3_handle *handle)
        /* Carrier off reporting is important to ethtool even BEFORE open */
        netif_carrier_off(netdev);
 
+       if (handle->flags & HNAE3_SUPPORT_VF)
+               handle->reset_level = HNAE3_VF_RESET;
+       else
+               handle->reset_level = HNAE3_FUNC_RESET;
+
        ret = hns3_get_ring_config(priv);
        if (ret) {
                ret = -ENOMEM;