static int hclge_set_mac_mtu(struct hclge_dev *hdev, int new_mps);
 static int hclge_init_vlan_config(struct hclge_dev *hdev);
 static int hclge_reset_ae_dev(struct hnae3_ae_dev *ae_dev);
+static bool hclge_get_hw_reset_stat(struct hnae3_handle *handle);
 static int hclge_set_umv_space(struct hclge_dev *hdev, u16 space_size,
                               u16 *allocated_size, bool is_alloc);
 
 
 static void hclge_do_reset(struct hclge_dev *hdev)
 {
+       struct hnae3_handle *handle = &hdev->vport[0].nic;
        struct pci_dev *pdev = hdev->pdev;
        u32 val;
 
+       if (hclge_get_hw_reset_stat(handle)) {
+               dev_info(&pdev->dev, "Hardware reset not finish\n");
+               dev_info(&pdev->dev, "func_rst_reg:0x%x, global_rst_reg:0x%x\n",
+                        hclge_read_dev(&hdev->hw, HCLGE_FUN_RST_ING),
+                        hclge_read_dev(&hdev->hw, HCLGE_GLOBAL_RESET_REG));
+               return;
+       }
+
        switch (hdev->reset_type) {
        case HNAE3_GLOBAL_RESET:
                val = hclge_read_dev(&hdev->hw, HCLGE_GLOBAL_RESET_REG);