Commit 39cfbc9c authored by Huazhong Tan's avatar Huazhong Tan Committed by David S. Miller

net: hns3: reset tqp while doing DOWN operation

While doing DOWN operation, the driver will reclaim the memory which has
already used for TX. If the hardware is processing this memory, it will
cause a RCB error to the hardware. According the hardware's description,
the driver should reset the tqp before reclaim the memory during DOWN.
Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 75edb610
...@@ -5331,6 +5331,7 @@ static void hclge_ae_stop(struct hnae3_handle *handle) ...@@ -5331,6 +5331,7 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
{ {
struct hclge_vport *vport = hclge_get_vport(handle); struct hclge_vport *vport = hclge_get_vport(handle);
struct hclge_dev *hdev = vport->back; struct hclge_dev *hdev = vport->back;
int i;
set_bit(HCLGE_STATE_DOWN, &hdev->state); set_bit(HCLGE_STATE_DOWN, &hdev->state);
...@@ -5343,6 +5344,9 @@ static void hclge_ae_stop(struct hnae3_handle *handle) ...@@ -5343,6 +5344,9 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
return; return;
} }
for (i = 0; i < handle->kinfo.num_tqps; i++)
hclge_reset_tqp(handle, i);
/* Mac disable */ /* Mac disable */
hclge_cfg_mac_mode(hdev, false); hclge_cfg_mac_mode(hdev, false);
......
...@@ -1870,9 +1870,13 @@ static int hclgevf_ae_start(struct hnae3_handle *handle) ...@@ -1870,9 +1870,13 @@ static int hclgevf_ae_start(struct hnae3_handle *handle)
static void hclgevf_ae_stop(struct hnae3_handle *handle) static void hclgevf_ae_stop(struct hnae3_handle *handle)
{ {
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle); struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
int i;
set_bit(HCLGEVF_STATE_DOWN, &hdev->state); set_bit(HCLGEVF_STATE_DOWN, &hdev->state);
for (i = 0; i < handle->kinfo.num_tqps; i++)
hclgevf_reset_tqp(handle, i);
/* reset tqp stats */ /* reset tqp stats */
hclgevf_reset_tqp_stats(handle); hclgevf_reset_tqp_stats(handle);
hclgevf_update_link_status(hdev, 0); hclgevf_update_link_status(hdev, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment