Commit a8dedb65 authored by Salil Mehta's avatar Salil Mehta Committed by David S. Miller

net: hns3: Add support to request VF Reset to PF

VF driver depends upon PF to eventually reset the hardware. This
request is made using the mailbox command. This patch adds the
required function to acheive above.
Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 436667d2
...@@ -832,6 +832,20 @@ static void hclgevf_reset_tqp(struct hnae3_handle *handle, u16 queue_id) ...@@ -832,6 +832,20 @@ static void hclgevf_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
2, true, NULL, 0); 2, true, NULL, 0);
} }
static int hclgevf_do_reset(struct hclgevf_dev *hdev)
{
int status;
u8 respmsg;
status = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_RESET, 0, NULL,
0, false, &respmsg, sizeof(u8));
if (status)
dev_err(&hdev->pdev->dev,
"VF reset request to PF failed(=%d)\n", status);
return status;
}
static void hclgevf_reset_event(struct hnae3_handle *handle) static void hclgevf_reset_event(struct hnae3_handle *handle)
{ {
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle); struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
...@@ -910,6 +924,7 @@ static void hclgevf_reset_service_task(struct work_struct *work) ...@@ -910,6 +924,7 @@ static void hclgevf_reset_service_task(struct work_struct *work)
{ {
struct hclgevf_dev *hdev = struct hclgevf_dev *hdev =
container_of(work, struct hclgevf_dev, rst_service_task); container_of(work, struct hclgevf_dev, rst_service_task);
int ret;
if (test_and_set_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state)) if (test_and_set_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state))
return; return;
...@@ -965,6 +980,10 @@ static void hclgevf_reset_service_task(struct work_struct *work) ...@@ -965,6 +980,10 @@ static void hclgevf_reset_service_task(struct work_struct *work)
hdev->reset_attempts++; hdev->reset_attempts++;
/* request PF for resetting this VF via mailbox */ /* request PF for resetting this VF via mailbox */
ret = hclgevf_do_reset(hdev);
if (ret)
dev_warn(&hdev->pdev->dev,
"VF rst fail, stack will call\n");
} }
} }
......
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