From: Vincent Jardin A DPNI whose endpoint is not a DPMAC has no physical connector: it may have no endpoint at all, or be connected to another DPNI or to a DPSW port. Until now, such a DPNI was still registered as a physical devlink port with number 0, so userspace saw a physical port that does not exist. Register these DPNIs as virtual devlink ports instead. A virtual port has no phys_port_name, so only the DPNIs that serve a DPMAC at probe time report one, "p", and those names do not collide. Signed-off-by: Vincent Jardin --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c index 4c0a04c2d458..6defc00199bf 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c @@ -233,7 +233,10 @@ int dpaa2_eth_dl_port_add(struct dpaa2_eth_priv *priv) priv->dl_port_valid = true; mutex_unlock(&priv->mac_lock); - attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; + if (port_number) + attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; + else + attrs.flavour = DEVLINK_PORT_FLAVOUR_VIRTUAL; attrs.phys.port_number = port_number; devlink_port_attrs_set(devlink_port, &attrs); err = devlink_port_register(priv->devlink, devlink_port, 0); -- 2.43.0