]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
docs: net: dsa: delete misinformation about -EOPNOTSUPP for FDB/MDB/VLAN
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sat, 16 Jul 2022 18:53:43 +0000 (21:53 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Jul 2022 11:44:37 +0000 (12:44 +0100)
commit6ba1a4aa5974f8a47e6322cecc965e6357b58d80
treed8fcdbc28b16970f8ac6c2762ab53a2043f68aef
parentea7006a7aaee54a8861e0bfd5cf6a8495fb998a7
docs: net: dsa: delete misinformation about -EOPNOTSUPP for FDB/MDB/VLAN

Returning -EOPNOTSUPP does *NOT* mean anything special.

port_vlan_add() is actually called from 2 code paths, one is
vlan_vid_add() from 8021q module and the other is
br_switchdev_port_vlan_add() from switchdev.

The bridge has a wrapper __vlan_vid_add() which first tries via
switchdev, then if that returns -EOPNOTSUPP, tries again via the VLAN RX
filters in the 8021q module. But DSA doesn't distinguish between one
call path and the other when calling the driver's port_vlan_add(), so if
the driver returns -EOPNOTSUPP to switchdev, it also returns -EOPNOTSUPP
to the 8021q module. And the latter is a hard error.

port_fdb_add() is called from the deferred dsa_owq only, so obviously
its return code isn't propagated anywhere, and cannot be interpreted in
any way.

The return code from port_mdb_add() is propagated to the bridge, but
again, this doesn't do anything special when -EOPNOTSUPP is returned,
but rather, br_switchdev_mdb_notify() returns void.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/dsa/dsa.rst