return rc;
 }
 
+static int bnxt_pcie_dsn_get(struct bnxt *bp, u8 dsn[])
+{
+       struct pci_dev *pdev = bp->pdev;
+       int pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_DSN);
+       u32 dw;
+
+       if (!pos) {
+               netdev_info(bp->dev, "Unable do read adapter's DSN");
+               return -EOPNOTSUPP;
+       }
+
+       /* DSN (two dw) is at an offset of 4 from the cap pos */
+       pos += 4;
+       pci_read_config_dword(pdev, pos, &dw);
+       put_unaligned_le32(dw, &dsn[0]);
+       pci_read_config_dword(pdev, pos + 4, &dw);
+       put_unaligned_le32(dw, &dsn[4]);
+       return 0;
+}
+
 static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
        static int version_printed;
                goto init_err_pci_clean;
        }
 
+       /* Read the adapter's DSN to use as the eswitch switch_id */
+       rc = bnxt_pcie_dsn_get(bp, bp->switch_id);
+       if (rc)
+               goto init_err_pci_clean;
+
        bnxt_hwrm_func_qcfg(bp);
        bnxt_hwrm_vnic_qcaps(bp);
        bnxt_hwrm_port_led_qcaps(bp);
 
        dev->min_mtu = ETH_ZLEN;
 }
 
-static int bnxt_pcie_dsn_get(struct bnxt *bp, u8 dsn[])
-{
-       struct pci_dev *pdev = bp->pdev;
-       int pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_DSN);
-       u32 dw;
-
-       if (!pos) {
-               netdev_info(bp->dev, "Unable do read adapter's DSN");
-               return -EOPNOTSUPP;
-       }
-
-       /* DSN (two dw) is at an offset of 4 from the cap pos */
-       pos += 4;
-       pci_read_config_dword(pdev, pos, &dw);
-       put_unaligned_le32(dw, &dsn[0]);
-       pci_read_config_dword(pdev, pos + 4, &dw);
-       put_unaligned_le32(dw, &dsn[4]);
-       return 0;
-}
-
 static int bnxt_vf_reps_create(struct bnxt *bp)
 {
        u16 *cfa_code_map = NULL, num_vfs = pci_num_vf(bp->pdev);
                }
        }
 
-       /* Read the adapter's DSN to use as the eswitch switch_id */
-       rc = bnxt_pcie_dsn_get(bp, bp->switch_id);
-       if (rc)
-               goto err;
-
        /* publish cfa_code_map only after all VF-reps have been initialized */
        bp->cfa_code_map = cfa_code_map;
        bp->eswitch_mode = DEVLINK_ESWITCH_MODE_SWITCHDEV;