diff options
| author | Vincent Jardin <vjardin@free.fr> | 2026-09-28 13:22:46 +0200 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-10-01 17:08:39 -0700 |
| commit | aed5a323ec37af3ff230b7cf16045a44136aded3 (patch) | |
| tree | 6789e9f81166470f41a25fb10dcf5430f1f000c4 /drivers/net | |
| parent | 526025d552baf36b6dcb348fd8ec1287063e44f5 (diff) | |
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>
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c | 5 |
1 files changed, 4 insertions, 1 deletions
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); |
