return 0;
 }
 
-static int hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev)
+static enum hnae3_reset_type
+hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev)
 {
-       enum hnae3_reset_type reset_type = HNAE3_FUNC_RESET;
-       struct hnae3_ae_dev *ae_dev = hdev->ae_dev;
+       enum hnae3_reset_type reset_type = HNAE3_NONE_RESET;
        struct device *dev = &hdev->pdev->dev;
        struct hclge_desc desc[2];
        unsigned int status;
        if (ret) {
                dev_err(dev, "failed(%d) to query ROCEE RAS INT SRC\n", ret);
                /* reset everything for now */
-               HCLGE_SET_DEFAULT_RESET_REQUEST(HNAE3_GLOBAL_RESET);
-               return ret;
+               return HNAE3_GLOBAL_RESET;
        }
 
        status = le32_to_cpu(desc[0].data[0]);
 
-       if (status & HCLGE_ROCEE_RERR_INT_MASK)
+       if (status & HCLGE_ROCEE_RERR_INT_MASK) {
                dev_warn(dev, "ROCEE RAS AXI rresp error\n");
+               reset_type = HNAE3_FUNC_RESET;
+       }
 
-       if (status & HCLGE_ROCEE_BERR_INT_MASK)
+       if (status & HCLGE_ROCEE_BERR_INT_MASK) {
                dev_warn(dev, "ROCEE RAS AXI bresp error\n");
+               reset_type = HNAE3_FUNC_RESET;
+       }
 
        if (status & HCLGE_ROCEE_ECC_INT_MASK) {
                dev_warn(dev, "ROCEE RAS 2bit ECC error\n");
                if (ret) {
                        dev_err(dev, "failed(%d) to process ovf error\n", ret);
                        /* reset everything for now */
-                       HCLGE_SET_DEFAULT_RESET_REQUEST(HNAE3_GLOBAL_RESET);
-                       return ret;
+                       return HNAE3_GLOBAL_RESET;
                }
+               reset_type = HNAE3_FUNC_RESET;
        }
 
        /* clear error status */
        if (ret) {
                dev_err(dev, "failed(%d) to clear ROCEE RAS error\n", ret);
                /* reset everything for now */
-               reset_type = HNAE3_GLOBAL_RESET;
+               return HNAE3_GLOBAL_RESET;
        }
 
-       HCLGE_SET_DEFAULT_RESET_REQUEST(reset_type);
-
-       return ret;
+       return reset_type;
 }
 
 static int hclge_config_rocee_ras_interrupt(struct hclge_dev *hdev, bool en)
        return ret;
 }
 
-static int hclge_handle_rocee_ras_error(struct hnae3_ae_dev *ae_dev)
+static void hclge_handle_rocee_ras_error(struct hnae3_ae_dev *ae_dev)
 {
+       enum hnae3_reset_type reset_type = HNAE3_NONE_RESET;
        struct hclge_dev *hdev = ae_dev->priv;
 
        if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) ||
            hdev->pdev->revision < 0x21)
-               return HNAE3_NONE_RESET;
+               return;
 
-       return hclge_log_and_clear_rocee_ras_error(hdev);
+       reset_type = hclge_log_and_clear_rocee_ras_error(hdev);
+       if (reset_type != HNAE3_NONE_RESET)
+               HCLGE_SET_DEFAULT_RESET_REQUEST(reset_type);
 }
 
 static const struct hclge_hw_blk hw_blk[] = {