nfp: initialize netdev's dev_port with correct id
authorYinjun Zhang <yinjun.zhang@corigine.com>
Wed, 5 Apr 2023 12:08:29 +0000 (14:08 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 6 Apr 2023 13:43:36 +0000 (15:43 +0200)
`dev_port` is used to differentiate devices that instantiate from
the same function, which is the case in most of NFP NICs.

In some customized scenario, `dev_port` is used to rename netdev
instead of `phys_port_name`. Example rules using `dev_port`:

  SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:e1:00.0", ATTR{dev_port}=="0", NAME:="ens8np0"
  SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:e1:00.0", ATTR{dev_port}=="1", NAME:="ens8np1"

To take port split case into account, here we initialize `dev_port`
according to the port sequence in eth_table from management firmware
instead of using port label id directly. And management firmware
makes sure that port sequence matches its label id.

Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com>
Acked-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Louis Peens <louis.peens@corigine.com>
Link: https://lore.kernel.org/r/20230405120829.28817-1-louis.peens@corigine.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/netronome/nfp/nfp_port.c

index 4f2308570dcf01e997f53e68f675cfee92e6ec56..54640bcb70fbabff03bb91873710021fdc4b7c4b 100644 (file)
@@ -189,6 +189,7 @@ int nfp_port_init_phy_port(struct nfp_pf *pf, struct nfp_app *app,
 
        port->eth_port = &pf->eth_tbl->ports[id];
        port->eth_id = pf->eth_tbl->ports[id].index;
+       port->netdev->dev_port = id;
        if (pf->mac_stats_mem)
                port->eth_stats =
                        pf->mac_stats_mem + port->eth_id * NFP_MAC_STATS_SIZE;