All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC net-next 00/13] RX filtering for DSA switches
@ 2020-05-21 21:10 Vladimir Oltean
  2020-05-21 21:10 ` [PATCH RFC net-next 01/13] net: core: dev_addr_lists: add VID to device address Vladimir Oltean
                   ` (15 more replies)
  0 siblings, 16 replies; 48+ messages in thread
From: Vladimir Oltean @ 2020-05-21 21:10 UTC (permalink / raw)
  To: andrew, f.fainelli, vivien.didelot, davem
  Cc: jiri, idosch, kuba, ivecera, netdev, horatiu.vultur,
	allan.nielsen, nikolay, roopa

From: Vladimir Oltean <vladimir.oltean@nxp.com>

This is a WIP series whose stated goal is to allow DSA and switchdev
drivers to flood less traffic to the CPU while keeping the same level of
functionality.

The strategy is to whitelist towards the CPU only the {DMAC, VLAN} pairs
that the operating system has expressed its interest in, either due to
those being the MAC addresses of one of the switch ports, or addresses
added to our device's RX filter via calls to dev_uc_add/dev_mc_add.
Then, the traffic which is not explicitly whitelisted is not sent by the
hardware to the CPU, under the assumption that the CPU didn't ask for it
and would have dropped it anyway.

The ground for these patches were the discussions surrounding RX
filtering with switchdev in general, as well as with DSA in particular:

"[PATCH net-next 0/4] DSA: promisc on master, generic flow dissector code":
https://www.spinics.net/lists/netdev/msg651922.html
"[PATCH v3 net-next 2/2] net: dsa: felix: Allow unknown unicast traffic towards the CPU port module":
https://www.spinics.net/lists/netdev/msg634859.html
"[PATCH v3 0/2] net: core: Notify on changes to dev->promiscuity":
https://lkml.org/lkml/2019/8/29/255
LPC2019 - SwitchDev offload optimizations:
https://www.youtube.com/watch?v=B1HhxEcU7Jg

Unicast filtering comes to me as most important, and this includes
termination of MAC addresses corresponding to the network interfaces in
the system (DSA switch ports, VLAN sub-interfaces, bridge interface).
The first 4 patches use Ivan Khoronzhuk's IVDF framework for extending
network interface addresses with a Virtual ID (typically VLAN ID). This
matches DSA switches perfectly because their FDB already contains keys
of the {DMAC, VID} form.

Multicast filtering was taken and reworked from Florian Fainelli's
previous attempts, according to my own understanding of multicast
forwarding requirements of an IGMP snooping switch. This is the part
that needs the most extra work, not only in the DSA core but also in
drivers. For this reason, I've left out of this patchset anything that
has to do with driver-level configuration (since the audience is a bit
larger than usual), as I'm trying to focus more on policy for now, and
the series is already pretty huge.

Florian Fainelli (3):
  net: bridge: multicast: propagate br_mc_disabled_update() return
  net: dsa: add ability to program unicast and multicast filters for CPU
    port
  net: dsa: wire up multicast IGMP snooping attribute notification

Ivan Khoronzhuk (4):
  net: core: dev_addr_lists: add VID to device address
  net: 8021q: vlan_dev: add vid tag to addresses of uc and mc lists
  net: 8021q: vlan_dev: add vid tag for vlan device own address
  ethernet: eth: add default vid len for all ethernet kind devices

Vladimir Oltean (6):
  net: core: dev_addr_lists: export some raw __hw_addr helpers
  net: dsa: don't use switchdev_notifier_fdb_info in
    dsa_switchdev_event_work
  net: dsa: mroute: don't panic the kernel if called without the prepare
    phase
  net: bridge: add port flags for host flooding
  net: dsa: deal with new flooding port attributes from bridge
  net: dsa: treat switchdev notifications for multicast router connected
    to port

 include/linux/if_bridge.h |   3 +
 include/linux/if_vlan.h   |   2 +
 include/linux/netdevice.h |  11 ++
 include/net/dsa.h         |  17 +++
 net/8021q/Kconfig         |  12 ++
 net/8021q/vlan.c          |   3 +
 net/8021q/vlan.h          |   2 +
 net/8021q/vlan_core.c     |  25 ++++
 net/8021q/vlan_dev.c      | 102 +++++++++++---
 net/bridge/br_if.c        |  40 ++++++
 net/bridge/br_multicast.c |  21 ++-
 net/bridge/br_switchdev.c |   4 +-
 net/core/dev_addr_lists.c | 144 +++++++++++++++----
 net/dsa/Kconfig           |   1 +
 net/dsa/dsa2.c            |   6 +
 net/dsa/dsa_priv.h        |  27 +++-
 net/dsa/port.c            | 155 ++++++++++++++++----
 net/dsa/slave.c           | 288 +++++++++++++++++++++++++++++++-------
 net/dsa/switch.c          |  36 +++++
 net/ethernet/eth.c        |  12 +-
 20 files changed, 780 insertions(+), 131 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2020-11-11  4:12 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-21 21:10 [PATCH RFC net-next 00/13] RX filtering for DSA switches Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 01/13] net: core: dev_addr_lists: add VID to device address Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 02/13] net: 8021q: vlan_dev: add vid tag to addresses of uc and mc lists Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 03/13] net: 8021q: vlan_dev: add vid tag for vlan device own address Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 04/13] ethernet: eth: add default vid len for all ethernet kind devices Vladimir Oltean
2020-05-22  0:34   ` kbuild test robot
2020-05-22  9:59   ` kbuild test robot
2020-05-21 21:10 ` [PATCH RFC net-next 05/13] net: bridge: multicast: propagate br_mc_disabled_update() return Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 06/13] net: core: dev_addr_lists: export some raw __hw_addr helpers Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 07/13] net: dsa: don't use switchdev_notifier_fdb_info in dsa_switchdev_event_work Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 08/13] net: dsa: add ability to program unicast and multicast filters for CPU port Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 09/13] net: dsa: mroute: don't panic the kernel if called without the prepare phase Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 10/13] net: bridge: add port flags for host flooding Vladimir Oltean
2020-05-22 12:38   ` Nikolay Aleksandrov
2020-05-22 13:13     ` Vladimir Oltean
2020-05-22 18:45       ` Allan W. Nielsen
2020-07-20 11:08         ` Vladimir Oltean
2020-05-24 14:26   ` Ido Schimmel
2020-05-24 16:13     ` Vladimir Oltean
2020-05-25 20:11       ` Ido Schimmel
2020-05-25 20:32         ` Vladimir Oltean
2020-07-23 22:35         ` Vladimir Oltean
2020-07-27 17:15           ` Ido Schimmel
2020-05-21 21:10 ` [PATCH RFC net-next 11/13] net: dsa: deal with new flooding port attributes from bridge Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 12/13] net: dsa: treat switchdev notifications for multicast router connected to port Vladimir Oltean
2020-05-21 21:10 ` [PATCH RFC net-next 13/13] net: dsa: wire up multicast IGMP snooping attribute notification Vladimir Oltean
2020-05-22 18:42 ` [PATCH RFC net-next 00/13] RX filtering for DSA switches Allan W. Nielsen
2020-05-24 14:06 ` Ido Schimmel
2020-05-24 16:24   ` Vladimir Oltean
2020-05-25 19:48     ` Ido Schimmel
2020-05-25 20:23       ` Vladimir Oltean
2020-05-26 14:01         ` Ido Schimmel
2020-05-27 11:36           ` Vladimir Oltean
2020-05-28 14:37             ` Ido Schimmel
2020-07-20 10:00               ` Vladimir Oltean
2020-07-27 16:56                 ` Ido Schimmel
2020-10-27 11:52                   ` Vladimir Oltean
2020-10-28 14:43                     ` Ido Schimmel
2020-10-28 18:46                       ` Vladimir Oltean
2020-11-01 11:27                         ` Ido Schimmel
2020-11-01 12:06                           ` Vladimir Oltean
2020-11-01 14:42                             ` Ido Schimmel
2020-11-01 15:04                               ` Vladimir Oltean
2020-11-01 15:39                                 ` Ido Schimmel
2020-11-01 16:13                                   ` Vladimir Oltean
2020-11-11  4:12                                     ` Florian Fainelli
2020-05-24 16:13 ` Florian Fainelli
2020-05-24 16:34   ` Vladimir Oltean

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.