dpaa2-eth: mark DPNIs without a DPMAC as virtual devlink ports

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<dpmac id>", and those names do not collide.

Signed-off-by: Vincent Jardin <vjardin@free.fr>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260928-for-upstream-dpaa2_ports-v2-2-1cda148530bf@free.fr
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Vincent Jardin 2026-09-28 13:22:46 +02:00 committed by Jakub Kicinski
parent 526025d552
commit aed5a323ec

View File

@ -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);