bnxt: move bp->switch_id initialization to PF probe
authorJiri Pirko <jiri@mellanox.com>
Wed, 3 Apr 2019 12:24:20 +0000 (14:24 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Apr 2019 00:42:36 +0000 (17:42 -0700)
Currently the switch_id is being only initialized when switching eswitch
mode from "legacy" to "switchdev". However, nothing prevents the id to
be initialized from the very beginning. Physical ports can show it even
in "legacy" mode.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c

index d22691403d288363d56d72a877eedfb612071a36..6131b996370908b04cd4a095b510e11c52bfe70f 100644 (file)
@@ -10429,6 +10429,26 @@ static int bnxt_init_mac_addr(struct bnxt *bp)
        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;
@@ -10569,6 +10589,11 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                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);
index 2bdd2da9aac7d5777a111b616cf2ecf178ecbe1c..f760921389a304214f854a4604f6233e6eafbfe5 100644 (file)
@@ -406,26 +406,6 @@ static void bnxt_vf_rep_netdev_init(struct bnxt *bp, struct bnxt_vf_rep *vf_rep,
        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);
@@ -490,11 +470,6 @@ static int bnxt_vf_reps_create(struct bnxt *bp)
                }
        }
 
-       /* 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;