Commit 82b53214 authored by Yunsheng Lin's avatar Yunsheng Lin Committed by David S. Miller
Browse files

net: hns3: Fix for reset_level default assignment probelm



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: 6d4c3981 ("net: hns3: Changes to make enet watchdog timeout func common for PF/VF")
Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d62eccae
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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;