linux/drivers/net/dsa
Linus Walleij a4eff910ec net: dsa: rtl8366rb: Rewrite weird VLAN filering enablement
While we were defining one VLAN per port for isolating the ports
the port_vlan_filtering() callback was implemented to enable a
VLAN on the port + 1. This function makes no sense, not only is
it incomplete as it only enables the VLAN, it doesn't do what
the callback is supposed to do, which is to selectively enable
and disable filtering on a certain port.

Implement the correct callback: we have two registers dealing
with filtering on the RTL9366RB, so we implement an ASIC-specific
callback and implement filering using the register bit that makes
the switch drop frames if the port is not in the VLAN member set.

The DSA documentation Documentation/networking/switchdev.rst states:

  When the bridge has VLAN filtering enabled and a PVID is not
  configured on the ingress port, untagged and 802.1p tagged
  packets must be dropped. When the bridge has VLAN filtering
  enabled and a PVID exists on the ingress port, untagged and
  priority-tagged packets must be accepted and forwarded according
  to the bridge's port membership of the PVID VLAN. When the
  bridge has VLAN filtering disabled, the presence/lack of a
  PVID should not influence the packet forwarding decision.

To comply with this, we add two arrays of bool in the RTL8366RB
state that keeps track of if filtering and PVID is enabled or
not for each port. We then add code such that whenever filtering
or PVID changes, we update the filter according to the
specification.

Cc: Vladimir Oltean <olteanv@gmail.com>
Cc: Mauri Sandberg <sandberg@mailfence.com>
Cc: Alvin Šipraga <alsi@bang-olufsen.dk>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: DENG Qingfang <dqfext@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-09-27 16:33:46 +01:00
..
b53 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-09-23 11:19:49 -07:00
hirschmann net: dsa: hellcreek: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
microchip net: dsa: microchip: ksz8863: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
mv88e6xxx net: dsa: tear down devlink port regions when tearing down the devlink port on error 2021-09-19 13:05:44 +01:00
ocelot net: dsa: felix: accept "ethernet-ports" OF node name 2021-09-24 14:07:59 +01:00
qca net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
sja1105 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-09-23 11:19:49 -07:00
xrs700x net: dsa: xrs700x: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
bcm_sf2.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-09-23 11:19:49 -07:00
bcm_sf2.h
bcm_sf2_cfp.c
bcm_sf2_regs.h
dsa_loop.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
dsa_loop.h
dsa_loop_bdinfo.c
Kconfig
lan9303-core.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lan9303.h net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lan9303_i2c.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lan9303_mdio.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lantiq_gswip.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lantiq_pce.h
Makefile
mt7530.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
mt7530.h net: dsa: mt7530: manually set up VLAN ID 0 2021-08-25 11:09:31 +01:00
mv88e6060.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
mv88e6060.h
qca8k.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
qca8k.h
realtek-smi-core.c net: dsa: realtek: register the MDIO bus under devres 2021-09-21 13:52:16 +01:00
realtek-smi-core.h net: dsa: rtl8366rb: Rewrite weird VLAN filering enablement 2021-09-27 16:33:46 +01:00
rtl8366.c net: dsa: rtl8366rb: Rewrite weird VLAN filering enablement 2021-09-27 16:33:46 +01:00
rtl8366rb.c net: dsa: rtl8366rb: Rewrite weird VLAN filering enablement 2021-09-27 16:33:46 +01:00
vitesse-vsc73xx-core.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
vitesse-vsc73xx-platform.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
vitesse-vsc73xx-spi.c net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
vitesse-vsc73xx.h net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00