mbox series

[RFC,0/9] DSA with VLAN filtering and offloading masters

Message ID 20200920014727.2754928-1-vladimir.oltean@nxp.com
Headers show
Series DSA with VLAN filtering and offloading masters | expand

Message

Vladimir Oltean Sept. 20, 2020, 1:47 a.m. UTC
This series attempts to make DSA VLANs work in the presence of a master
interface that is:
- filtering, so it drops VLANs that aren't explicitly added to its
  filter list
- offloading, so the old assumptions in the tagging code about there
  being a VLAN tag in the skb are not necessarily true anymore.

For more context:
https://lore.kernel.org/netdev/20200910150738.mwhh2i6j2qgacqev@skbuf/

This probably marks the beginning of a series of patches in which DSA
starts paying much more attention to its upper interfaces, not only for
VLAN purposes but also for address filtering and for management of the
CPU flooding domain. There was a comment from Florian on whether we
could factor some of the mlxsw logic into some common functionality, but
it doesn't look so. This seems bound to be open-coded, but frankly there
isn't a lot to it.

Vladimir Oltean (9):
  net: dsa: deny enslaving 802.1Q upper to VLAN-aware bridge from
    PRECHANGEUPPER
  net: dsa: rename dsa_slave_upper_vlan_check to something more
    suggestive
  net: dsa: convert check for 802.1Q upper when bridged into
    PRECHANGEUPPER
  net: dsa: convert denying bridge VLAN with existing 8021q upper to
    PRECHANGEUPPER
  net: dsa: refuse configuration in prepare phase of
    dsa_port_vlan_filtering()
  net: dsa: allow 8021q uppers while the bridge has vlan_filtering=0
  net: dsa: install VLANs into the master's RX filter too
  net: dsa: tag_8021q: add VLANs to the master interface too
  net: dsa: tag_sja1105: add compatibility with hwaccel VLAN tags

 drivers/net/dsa/sja1105/sja1105_main.c |   7 +-
 include/linux/dsa/8021q.h              |   2 +
 net/dsa/port.c                         |  58 +++++++--
 net/dsa/slave.c                        | 156 ++++++++++++++++++-------
 net/dsa/switch.c                       |  41 -------
 net/dsa/tag_8021q.c                    |  20 +++-
 net/dsa/tag_sja1105.c                  |  21 +++-
 7 files changed, 206 insertions(+), 99 deletions(-)

Comments

Florian Fainelli Sept. 20, 2020, 2:44 a.m. UTC | #1
On 9/19/2020 6:47 PM, Vladimir Oltean wrote:
> This series attempts to make DSA VLANs work in the presence of a master
> interface that is:
> - filtering, so it drops VLANs that aren't explicitly added to its
>    filter list
> - offloading, so the old assumptions in the tagging code about there
>    being a VLAN tag in the skb are not necessarily true anymore.
> 
> For more context:
> https://lore.kernel.org/netdev/20200910150738.mwhh2i6j2qgacqev@skbuf/
> 
> This probably marks the beginning of a series of patches in which DSA
> starts paying much more attention to its upper interfaces, not only for
> VLAN purposes but also for address filtering and for management of the
> CPU flooding domain. There was a comment from Florian on whether we
> could factor some of the mlxsw logic into some common functionality, but
> it doesn't look so. This seems bound to be open-coded, but frankly there
> isn't a lot to it.

This looks really good to me, thanks!

> 
> Vladimir Oltean (9):
>    net: dsa: deny enslaving 802.1Q upper to VLAN-aware bridge from
>      PRECHANGEUPPER
>    net: dsa: rename dsa_slave_upper_vlan_check to something more
>      suggestive
>    net: dsa: convert check for 802.1Q upper when bridged into
>      PRECHANGEUPPER
>    net: dsa: convert denying bridge VLAN with existing 8021q upper to
>      PRECHANGEUPPER
>    net: dsa: refuse configuration in prepare phase of
>      dsa_port_vlan_filtering()
>    net: dsa: allow 8021q uppers while the bridge has vlan_filtering=0
>    net: dsa: install VLANs into the master's RX filter too
>    net: dsa: tag_8021q: add VLANs to the master interface too
>    net: dsa: tag_sja1105: add compatibility with hwaccel VLAN tags
> 
>   drivers/net/dsa/sja1105/sja1105_main.c |   7 +-
>   include/linux/dsa/8021q.h              |   2 +
>   net/dsa/port.c                         |  58 +++++++--
>   net/dsa/slave.c                        | 156 ++++++++++++++++++-------
>   net/dsa/switch.c                       |  41 -------
>   net/dsa/tag_8021q.c                    |  20 +++-
>   net/dsa/tag_sja1105.c                  |  21 +++-
>   7 files changed, 206 insertions(+), 99 deletions(-)
>