[net-next PATCH v4 00/13] net: renesas: rswitch: R-Car S4 add VLAN aware switching

From: Michael Dege

Date: Mon May 11 2026 - 05:07:34 EST


Hello!

The current R-Car S4 rswitch driver only supports basic HW offloading
for L2 switching/bridgeing. This patchset extends the driver with
support for VLAN aware switching.

1. For every port mode change from configuration to operation and
vice-versa you need to change to disabled mode first. The
functions rswitch_<port>_change_mode now take care of this.

2. In upcomming changes for adding vlan support struct net_device
will not be available in all cases, therefore use struct device
instead.

3. Fix typo in register define macro and remove duplicate macro.

4. Add register definitions needed fo vlan support.

5. Add exception path for packets with unknown destitination MAC
addresses.

6. Make the helper functions rswitch_reg_wait(),
rswitch_etha_change_mode() and rswitch_etha_change_mode()
available to the whole driver.

7. Add basic start-up time initialization needed to support VLANs.

8. Update ETHA and GWCA port HW initializations.

9. Clean up is_rdev() rswitch_device checking.

10. Provide struct rswitch_private to notifiers.

11. Add handler for FDB notifications to configure bridge MAC address
to GWCA registers and update static MAC table entry.

12. Add vlan support to L2 HW bridge.

Configuration example:
ip link add name br0 type bridge vlan_filtering 1
ip link set dev tsn0 master br0
ip link set dev tsn1 master br0
ip link set dev br0 up
ip link set dev tsn0 up
ip link set dev tsn1 up
bridge vlan add dev tsn0 vid 4
bridge vlan add dev tsn1 vid 4
bridge vlan add dev br0 vid 4 self
ip a a 192.168.1.20/24 dev br0
ip l a link br0 name br0.1 type vlan id 1
ip l a link br0 name br0.4 type vlan id 4
ip a a 192.168.2.20/24 dev br0.1
ip a a 192.168.4.20/24 dev br0.4
ip link set dev br0.1 up
ip link set dev br0.4 up

Signed-off-by: Michael Dege <michael.dege@xxxxxxxxxxx>
---
Changes in v4:
- fixed error checking in rswitch_gwca_change_mode() and rswitch_etha_change_mode().
- fixed typo in use of GENMASK macro.
- fixed comments from // to /* */.
- fixed shared queue ussage in rx interrupt.
- fixed assingment of fwpc2_clr in false branch.
- moved PORT_ATR_SET to rswitch_switchdev_blocking_event() to remove dead code.
- changed from dev_put/dev_hold to netdev_put/netdev_hold.
- reordered code to make sure the correct type is accessed with info->obj->id in
rswitch_port_obj_add()/rswitch_port_obj_del().
- Link to v3: https://lore.kernel.org/r/20260331-rswitch_add_vlans-v3-0-c37f41b1c556@xxxxxxxxxxx

Changes in v3:
- Fixed findings made by coccicheck
- Fixed missing 'depends on BRIDGE' in Kconfig found by test robot.
- Link to v2: https://lore.kernel.org/r/20260327-rswitch_add_vlans-v2-0-d7f4358ca57a@xxxxxxxxxxx

Changes in v2:
- Reworked reswitch_update_l2_hw_forwarding_gwca() as suggested.
- Fixed missing initialization found by test robot.
- Link to v1: https://lore.kernel.org/r/20260317-rswitch_add_vlans-v1-0-3a57bfa0f2d1@xxxxxxxxxxx

---
Michael Dege (13):
net: renesas: rswitch: improve port change mode functions
net: renesas: rswitch: use device instead of net_device
net: renesas: rswitch: fix FWPC2 register access macros
net: renesas: rswitch: add register definitions for vlan support
net: renesas: rswitch: add exception path for packets with unknown dst MAC
net: renesas: rswitch: add forwarding rules for gwca
net: renesas: rswitch: make helper functions available to whole driver
net: renesas: rswitch: add basic vlan init to rswitch_fwd_init
net: renesas: rswitch: update port HW init
net: renesas: rswitch: clean up is_rdev rswitch_device checking
net: renesas: rswitch: add passing of rswitch_private into notifiers
net: renesas: rswitch: add handler for FDB notification
net: renesas: rswitch: add vlan aware switching

drivers/net/ethernet/renesas/Kconfig | 1 +
drivers/net/ethernet/renesas/rswitch.h | 183 +++++++-
drivers/net/ethernet/renesas/rswitch_l2.c | 645 ++++++++++++++++++++++++----
drivers/net/ethernet/renesas/rswitch_l2.h | 6 +-
drivers/net/ethernet/renesas/rswitch_main.c | 219 +++++++---
5 files changed, 899 insertions(+), 155 deletions(-)
---
base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
change-id: 20260120-rswitch_add_vlans-39488bfb296c

Best regards,
--
Michael Dege <michael.dege@xxxxxxxxxxx>