[PATCH v2 net-next 0/7] Rework DSA bridge TX forwarding offload API
flat view
STALE1782d
SUPERSEDED
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2021-12-04 20:15:42
Revision v2 of 3 in this series.
Revisions (3)
- rfc [diff vs current]
- v2 current
- v3 [diff vs current]
This change set is preparation work for DSA support of bridge FDB isolation. It replaces struct net_device *dp->bridge_dev with a struct dsa_bridge *dp->bridge that contains some extra information about that bridge, like a unique number kept by DSA. Up until now we computed that number only with the bridge TX forwarding offload feature, but it will be needed for other features too, like for isolation of FDB entries belonging to different bridges. Hardware implementations vary, but one common pattern seems to be the presence of a FID field which can be associated with that bridge number kept by DSA. The idea was outlined here: https://patchwork.kernel.org/project/netdevbpf/patch/20210818120150.892647-16-vladimir.oltean@nxp.com/ (the difference being that with this new proposal, drivers would not need to call dsa_bridge_num_find, instead the bridge_num would be part of the struct dsa_bridge :: num passed as argument). No functional change is intended for drivers that don't already make use of the bridge TX forwarding offload. I've tested the changes on the felix, sja1105 and mv88e6xxx drivers, but nonetheless I'm copying all DSA driver maintainers due to API changes that are taking place. Vladimir Oltean (7): net: dsa: make dp->bridge_num one-based net: dsa: assign a bridge number even without TX forwarding offload net: dsa: hide dp->bridge_dev and dp->bridge_num behind helpers net: dsa: rename dsa_port_offloads_bridge to dsa_port_offloads_bridge_dev net: dsa: keep the bridge_dev and bridge_num as part of the same structure net: dsa: add a "tx_fwd_offload" argument to ->port_bridge_join net: dsa: eliminate dsa_switch_ops :: port_bridge_tx_fwd_{,un}offload drivers/net/dsa/b53/b53_common.c | 9 +- drivers/net/dsa/b53/b53_priv.h | 5 +- drivers/net/dsa/dsa_loop.c | 9 +- drivers/net/dsa/hirschmann/hellcreek.c | 5 +- drivers/net/dsa/lan9303-core.c | 7 +- drivers/net/dsa/lantiq_gswip.c | 25 +++-- drivers/net/dsa/microchip/ksz_common.c | 7 +- drivers/net/dsa/microchip/ksz_common.h | 4 +- drivers/net/dsa/mt7530.c | 18 ++-- drivers/net/dsa/mv88e6xxx/chip.c | 140 ++++++++++++------------- drivers/net/dsa/ocelot/felix.c | 8 +- drivers/net/dsa/qca8k.c | 13 +-- drivers/net/dsa/rtl8366rb.c | 9 +- drivers/net/dsa/sja1105/sja1105_main.c | 40 ++++--- drivers/net/dsa/xrs700x/xrs700x.c | 10 +- include/linux/dsa/8021q.h | 9 +- include/net/dsa.h | 108 +++++++++++++++---- net/dsa/dsa2.c | 67 +++++++----- net/dsa/dsa_priv.h | 59 ++--------- net/dsa/port.c | 123 +++++++++++----------- net/dsa/slave.c | 34 +++--- net/dsa/switch.c | 20 ++-- net/dsa/tag_8021q.c | 20 ++-- net/dsa/tag_dsa.c | 5 +- net/dsa/tag_ocelot.c | 2 +- net/dsa/tag_sja1105.c | 11 +- 26 files changed, 422 insertions(+), 345 deletions(-) -- 2.25.1