[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211217121017.282481-1-horatiu.vultur@microchip.com>
Date: Fri, 17 Dec 2021 13:10:08 +0100
From: Horatiu Vultur <horatiu.vultur@...rochip.com>
To: <netdev@...r.kernel.org>, <devicetree@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
CC: <davem@...emloft.net>, <kuba@...nel.org>, <robh+dt@...nel.org>,
<UNGLinuxDriver@...rochip.com>, <linux@...linux.org.uk>,
<f.fainelli@...il.com>, <vivien.didelot@...il.com>,
<vladimir.oltean@....com>, <andrew@...n.ch>,
Horatiu Vultur <horatiu.vultur@...rochip.com>
Subject: [PATCH net-next v6 0/9] net: lan966x: Add switchdev and vlan support
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.
v5->v6:
- fix issues with the singletones, they were not really singletons
- simplify the case where lan966x ports are added to bridges with foreign
ports
- drop the cases NETDEV_PRE_UP and NETDEV_DOWN
- fix the change of MAC address
- drop the callbacks .ndo_set_features, .ndo_vlan_rx_add_vid,
.ndo_vlan_rx_kill_vid
- remove duplicate code when port was added in a vlan, the MAC entries
will be added by the fdb
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 | 244 +++++++++
.../ethernet/microchip/lan966x/lan966x_mac.c | 342 +++++++++++++
.../ethernet/microchip/lan966x/lan966x_main.c | 95 +++-
.../ethernet/microchip/lan966x/lan966x_main.h | 64 ++-
.../ethernet/microchip/lan966x/lan966x_regs.h | 129 +++++
.../microchip/lan966x/lan966x_switchdev.c | 468 ++++++++++++++++++
.../ethernet/microchip/lan966x/lan966x_vlan.c | 312 ++++++++++++
10 files changed, 1632 insertions(+), 28 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
Powered by blists - more mailing lists