|
@@ -5568,6 +5568,30 @@ static void hclge_pci_uninit(struct hclge_dev *hdev)
|
|
|
pci_disable_device(pdev);
|
|
|
}
|
|
|
|
|
|
+static void hclge_state_init(struct hclge_dev *hdev)
|
|
|
+{
|
|
|
+ set_bit(HCLGE_STATE_SERVICE_INITED, &hdev->state);
|
|
|
+ set_bit(HCLGE_STATE_DOWN, &hdev->state);
|
|
|
+ clear_bit(HCLGE_STATE_RST_SERVICE_SCHED, &hdev->state);
|
|
|
+ clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
|
|
|
+ clear_bit(HCLGE_STATE_MBX_SERVICE_SCHED, &hdev->state);
|
|
|
+ clear_bit(HCLGE_STATE_MBX_HANDLING, &hdev->state);
|
|
|
+}
|
|
|
+
|
|
|
+static void hclge_state_uninit(struct hclge_dev *hdev)
|
|
|
+{
|
|
|
+ set_bit(HCLGE_STATE_DOWN, &hdev->state);
|
|
|
+
|
|
|
+ if (hdev->service_timer.function)
|
|
|
+ del_timer_sync(&hdev->service_timer);
|
|
|
+ if (hdev->service_task.func)
|
|
|
+ cancel_work_sync(&hdev->service_task);
|
|
|
+ if (hdev->rst_service_task.func)
|
|
|
+ cancel_work_sync(&hdev->rst_service_task);
|
|
|
+ if (hdev->mbx_service_task.func)
|
|
|
+ cancel_work_sync(&hdev->mbx_service_task);
|
|
|
+}
|
|
|
+
|
|
|
static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
|
|
|
{
|
|
|
struct pci_dev *pdev = ae_dev->pdev;
|
|
@@ -5708,12 +5732,7 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
|
|
|
/* Enable MISC vector(vector0) */
|
|
|
hclge_enable_vector(&hdev->misc_vector, true);
|
|
|
|
|
|
- set_bit(HCLGE_STATE_SERVICE_INITED, &hdev->state);
|
|
|
- set_bit(HCLGE_STATE_DOWN, &hdev->state);
|
|
|
- clear_bit(HCLGE_STATE_RST_SERVICE_SCHED, &hdev->state);
|
|
|
- clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
|
|
|
- clear_bit(HCLGE_STATE_MBX_SERVICE_SCHED, &hdev->state);
|
|
|
- clear_bit(HCLGE_STATE_MBX_HANDLING, &hdev->state);
|
|
|
+ hclge_state_init(hdev);
|
|
|
|
|
|
pr_info("%s driver initialization finished.\n", HCLGE_DRIVER_NAME);
|
|
|
return 0;
|
|
@@ -5818,16 +5837,7 @@ static void hclge_uninit_ae_dev(struct hnae3_ae_dev *ae_dev)
|
|
|
struct hclge_dev *hdev = ae_dev->priv;
|
|
|
struct hclge_mac *mac = &hdev->hw.mac;
|
|
|
|
|
|
- set_bit(HCLGE_STATE_DOWN, &hdev->state);
|
|
|
-
|
|
|
- if (hdev->service_timer.function)
|
|
|
- del_timer_sync(&hdev->service_timer);
|
|
|
- if (hdev->service_task.func)
|
|
|
- cancel_work_sync(&hdev->service_task);
|
|
|
- if (hdev->rst_service_task.func)
|
|
|
- cancel_work_sync(&hdev->rst_service_task);
|
|
|
- if (hdev->mbx_service_task.func)
|
|
|
- cancel_work_sync(&hdev->mbx_service_task);
|
|
|
+ hclge_state_uninit(hdev);
|
|
|
|
|
|
if (mac->phydev)
|
|
|
mdiobus_unregister(mac->mdio_bus);
|