return status;
 }
 
+int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport)
+{
+       u8 msg_data[2];
+       u8 dest_vfid;
+
+       dest_vfid = (u8)vport->vport_id;
+
+       /* send this requested info to VF */
+       return hclge_send_mbx_msg(vport, msg_data, sizeof(u8),
+                                 HCLGE_MBX_ASSERTING_RESET, dest_vfid);
+}
+
 static void hclge_free_vector_ring_chain(struct hnae3_ring_chain_node *head)
 {
        struct hnae3_ring_chain_node *chain_tmp, *chain;
        hclge_gen_resp_to_vf(vport, mbx_req, 0, NULL, 0);
 }
 
+static void hclge_reset_vf(struct hclge_vport *vport,
+                          struct hclge_mbx_vf_to_pf_cmd *mbx_req)
+{
+       struct hclge_dev *hdev = vport->back;
+       int ret;
+
+       dev_warn(&hdev->pdev->dev, "PF received VF reset request from VF %d!",
+                mbx_req->mbx_src_vfid);
+
+       /* Acknowledge VF that PF is now about to assert the reset for the VF.
+        * On receiving this message VF will get into pending state and will
+        * start polling for the hardware reset completion status.
+        */
+       ret = hclge_inform_reset_assert_to_vf(vport);
+       if (ret) {
+               dev_err(&hdev->pdev->dev,
+                       "PF fail(%d) to inform VF(%d)of reset, reset failed!\n",
+                       ret, vport->vport_id);
+               return;
+       }
+
+       dev_warn(&hdev->pdev->dev, "PF is now resetting VF %d.\n",
+                mbx_req->mbx_src_vfid);
+       /* reset this virtual function */
+       hclge_func_reset_cmd(hdev, mbx_req->mbx_src_vfid);
+}
+
 void hclge_mbx_handler(struct hclge_dev *hdev)
 {
        struct hclge_cmq_ring *crq = &hdev->hw.cmq.crq;
                case HCLGE_MBX_QUEUE_RESET:
                        hclge_mbx_reset_vf_queue(vport, req);
                        break;
+               case HCLGE_MBX_RESET:
+                       hclge_reset_vf(vport, req);
+                       break;
                default:
                        dev_err(&hdev->pdev->dev,
                                "un-supported mailbox message, code = %d\n",