ice: Open devlink when device is ready
authorLeon Romanovsky <leonro@nvidia.com>
Sat, 25 Sep 2021 11:22:46 +0000 (14:22 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Sep 2021 15:31:59 +0000 (16:31 +0100)
Move devlink_registration routine to be the last command, when the
device is fully initialized.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/ice/ice_main.c

index aacc0b3..627adf8 100644 (file)
@@ -4258,8 +4258,6 @@ ice_probe(struct pci_dev *pdev, const struct pci_device_id __always_unused *ent)
 
        pf->msg_enable = netif_msg_init(debug, ICE_DFLT_NETIF_M);
 
-       ice_devlink_register(pf);
-
 #ifndef CONFIG_DYNAMIC_DEBUG
        if (debug < -1)
                hw->debug_mask = debug;
@@ -4493,6 +4491,7 @@ probe_done:
                dev_warn(dev, "RDMA is not supported on this device\n");
        }
 
+       ice_devlink_register(pf);
        return 0;
 
 err_init_aux_unroll:
@@ -4516,7 +4515,6 @@ err_init_pf_unroll:
        ice_devlink_destroy_regions(pf);
        ice_deinit_hw(hw);
 err_exit_unroll:
-       ice_devlink_unregister(pf);
        pci_disable_pcie_error_reporting(pdev);
        pci_disable_device(pdev);
        return err;
@@ -4593,6 +4591,7 @@ static void ice_remove(struct pci_dev *pdev)
        struct ice_pf *pf = pci_get_drvdata(pdev);
        int i;
 
+       ice_devlink_unregister(pf);
        for (i = 0; i < ICE_MAX_RESET_WAIT; i++) {
                if (!ice_is_reset_in_progress(pf->state))
                        break;
@@ -4629,7 +4628,6 @@ static void ice_remove(struct pci_dev *pdev)
        ice_deinit_pf(pf);
        ice_devlink_destroy_regions(pf);
        ice_deinit_hw(&pf->hw);
-       ice_devlink_unregister(pf);
 
        /* Issue a PFR as part of the prescribed driver unload flow.  Do not
         * do it via ice_schedule_reset() since there is no need to rebuild