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

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -5331,6 +5331,7 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
{
	struct hclge_vport *vport = hclge_get_vport(handle);
	struct hclge_dev *hdev = vport->back;
	int i;

	set_bit(HCLGE_STATE_DOWN, &hdev->state);

@@ -5343,6 +5344,9 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
		return;
	}

	for (i = 0; i < handle->kinfo.num_tqps; i++)
		hclge_reset_tqp(handle, i);

	/* Mac disable */
	hclge_cfg_mac_mode(hdev, false);

+4 −0
Original line number Diff line number Diff line
@@ -1870,9 +1870,13 @@ static int hclgevf_ae_start(struct hnae3_handle *handle)
static void hclgevf_ae_stop(struct hnae3_handle *handle)
{
	struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
	int i;

	set_bit(HCLGEVF_STATE_DOWN, &hdev->state);

	for (i = 0; i < handle->kinfo.num_tqps; i++)
		hclgevf_reset_tqp(handle, i);

	/* reset tqp stats */
	hclgevf_reset_tqp_stats(handle);
	hclgevf_update_link_status(hdev, 0);