]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bnxt_en: Move devlink_register before registering netdev
authorVasundhara Volam <vasundhara-v.volam@broadcom.com>
Mon, 27 Jan 2020 09:56:22 +0000 (04:56 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Feb 2020 12:36:34 +0000 (04:36 -0800)
[ Upstream commit cda2cab0771183932d6ba73c5ac63bb63decdadf ]

Latest kernels get the phys_port_name via devlink, if
ndo_get_phys_port_name is not defined. To provide the phys_port_name
correctly, register devlink before registering netdev.

Also call devlink_port_type_eth_set() after registering netdev as
devlink port updates the netdev structure and notifies user.

Cc: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c

index e6f18f6070ef7527b1f3552d049b08ee01f30998..d45b662123c00db33380dab6c57f6102f3734e59 100644 (file)
@@ -11433,9 +11433,9 @@ static void bnxt_remove_one(struct pci_dev *pdev)
                bnxt_sriov_disable(bp);
 
        bnxt_dl_fw_reporters_destroy(bp, true);
-       bnxt_dl_unregister(bp);
        pci_disable_pcie_error_reporting(pdev);
        unregister_netdev(dev);
+       bnxt_dl_unregister(bp);
        bnxt_shutdown_tc(bp);
        bnxt_cancel_sp_work(bp);
        bp->sp_event = 0;
@@ -11905,11 +11905,14 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                bnxt_init_tc(bp);
        }
 
+       bnxt_dl_register(bp);
+
        rc = register_netdev(dev);
        if (rc)
-               goto init_err_cleanup_tc;
+               goto init_err_cleanup;
 
-       bnxt_dl_register(bp);
+       if (BNXT_PF(bp))
+               devlink_port_type_eth_set(&bp->dl_port, bp->dev);
        bnxt_dl_fw_reporters_create(bp);
 
        netdev_info(dev, "%s found at mem %lx, node addr %pM\n",
@@ -11919,7 +11922,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        return 0;
 
-init_err_cleanup_tc:
+init_err_cleanup:
+       bnxt_dl_unregister(bp);
        bnxt_shutdown_tc(bp);
        bnxt_clear_int_mode(bp);
 
index 3eedd44772182fc923cbd2c6fb3eb151d68e0dfa..8fcaa2398344d415954fa9abac6589929b6cd173 100644 (file)
@@ -526,7 +526,6 @@ int bnxt_dl_register(struct bnxt *bp)
                netdev_err(bp->dev, "devlink_port_register failed");
                goto err_dl_param_unreg;
        }
-       devlink_port_type_eth_set(&bp->dl_port, bp->dev);
 
        rc = devlink_port_params_register(&bp->dl_port, bnxt_dl_port_params,
                                          ARRAY_SIZE(bnxt_dl_port_params));