This patch series extends lan966x with switchdev and vlan support. The first patches just adds new registers and extend the MAC table to handle the interrupts when a new address is learn/forget. v4->v5: - make the notifier_block from lan966x to be singletones - use switchdev_handle_port_obj_add and switchdev_handle_fdb_event_to_device when getting callbacks in the lan966x - merge the two vlan patches in a single one v3->v4: - split the last patch in multiple patches - replace spin_lock_irqsave/restore with spin_lock/spin_unlock - remove lan966x_port_change_rx_flags because it was copying all the frames to the CPU instead of removing all RX filters. - implement SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS - remove calls to __dev_mc_unsync/sync as they are not needed - replace 0/1 with false/true - make sure that the lan966x ports are not added to bridges that have other interfaces except lan966x - and allow the lan966x ports to be part of only the same bridge. v2->v3: - separate the PVID used when the port is in host mode or vlan unaware - fix issue when the port was leaving the bridge v1->v2: - when allocating entries for the mac table use kzalloc instead of devm_kzalloc - also use GFP_KERNEL instead of GFP_ATOMIC, because is never called in atomic context - when deleting an mac table entry, the order of operations was wrong - if ana irq is enabled make sure it gets disabled when the driver is removed Horatiu Vultur (9): net: lan966x: Add registers that are used for switch and vlan functionality dt-bindings: net: lan966x: Extend with the analyzer interrupt net: lan966x: add support for interrupts from analyzer net: lan966x: More MAC table functionality net: lan966x: Remove .ndo_change_rx_flags net: lan966x: Add support to offload the forwarding. net: lan966x: Add vlan support. net: lan966x: Extend switchdev bridge flags net: lan966x: Extend switchdev with fdb support .../net/microchip,lan966x-switch.yaml | 2 + .../net/ethernet/microchip/lan966x/Kconfig | 1 + .../net/ethernet/microchip/lan966x/Makefile | 3 +- .../ethernet/microchip/lan966x/lan966x_fdb.c | 246 ++++++++ .../ethernet/microchip/lan966x/lan966x_mac.c | 342 +++++++++++ .../ethernet/microchip/lan966x/lan966x_main.c | 109 +++- .../ethernet/microchip/lan966x/lan966x_main.h | 80 ++- .../ethernet/microchip/lan966x/lan966x_regs.h | 129 ++++ .../microchip/lan966x/lan966x_switchdev.c | 557 ++++++++++++++++++ .../ethernet/microchip/lan966x/lan966x_vlan.c | 448 ++++++++++++++ 10 files changed, 1886 insertions(+), 31 deletions(-) create mode 100644 drivers/net/ethernet/microchip/lan966x/lan966x_fdb.c create mode 100644 drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c create mode 100644 drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c -- 2.33.0