From ebce58b11ec6c695589db911f778a9ea7506ed17 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 30 Jun 2022 15:29:38 +0200 Subject: [PATCH] 5.10-stable patches added patches: net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch --- ...w-unregistered-ip-multicast-flooding.patch | 64 +++++++++++++++++++ queue-5.10/series | 1 + 2 files changed, 65 insertions(+) create mode 100644 queue-5.10/net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch diff --git a/queue-5.10/net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch b/queue-5.10/net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch new file mode 100644 index 00000000000..66082a2d31e --- /dev/null +++ b/queue-5.10/net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch @@ -0,0 +1,64 @@ +From foo@baz Thu Jun 30 03:22:13 PM CEST 2022 +From: Vladimir Oltean +Date: Tue, 28 Jun 2022 20:20:14 +0300 +Subject: net: mscc: ocelot: allow unregistered IP multicast flooding +To: stable , Greg Kroah-Hartman , Sasha Levin +Cc: netdev@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Xiaoliang Yang , Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Maxim Kochetkov , Colin Foster , stable@kernel.org +Message-ID: <20220628172016.3373243-3-vladimir.oltean@nxp.com> + +From: Vladimir Oltean + +Flooding of unregistered IP multicast has been broken (both to other +switch ports and to the CPU) since the ocelot driver introduction, and +up until commit 4cf35a2b627a ("net: mscc: ocelot: fix broken IP +multicast flooding"), a bug fix for commit 421741ea5672 ("net: mscc: +ocelot: offload bridge port flags to device") from v5.12. + +The driver used to set PGID_MCIPV4 and PGID_MCIPV6 to the empty port +mask (0), which made unregistered IPv4/IPv6 multicast go nowhere, and +without ever modifying that port mask at runtime. + +The expectation is that such packets are treated as broadcast, and +flooded according to the forwarding domain (to the CPU if the port is +standalone, or to the CPU and other bridged ports, if under a bridge). + +Since the aforementioned commit, the limitation has been lifted by +responding to SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS events emitted by the +bridge. As for host flooding, DSA synthesizes another call to +ocelot_port_bridge_flags() on the NPI port which ensures that the CPU +gets the unregistered multicast traffic it might need, for example for +smcroute to work between standalone ports. + +But between v4.18 and v5.12, IP multicast flooding has remained unfixed. + +Delete the inexplicable premature optimization of clearing PGID_MCIPV4 +and PGID_MCIPV6 as part of the init sequence, and allow unregistered IP +multicast to be flooded freely according to the forwarding domain +established by PGID_SRC, by explicitly programming PGID_MCIPV4 and +PGID_MCIPV6 towards all physical ports plus the CPU port module. + +Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support") +Cc: stable@kernel.org +Signed-off-by: Vladimir Oltean +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mscc/ocelot.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/mscc/ocelot.c ++++ b/drivers/net/ethernet/mscc/ocelot.c +@@ -1593,8 +1593,12 @@ int ocelot_init(struct ocelot *ocelot) + ocelot_write_rix(ocelot, + ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), + ANA_PGID_PGID, PGID_MC); +- ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4); +- ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6); ++ ocelot_write_rix(ocelot, ++ ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), ++ ANA_PGID_PGID, PGID_MCIPV4); ++ ocelot_write_rix(ocelot, ++ ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), ++ ANA_PGID_PGID, PGID_MCIPV6); + + /* Allow manual injection via DEVCPU_QS registers, and byte swap these + * registers endianness. diff --git a/queue-5.10/series b/queue-5.10/series index 321bf03ae08..935793ee1f6 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -10,3 +10,4 @@ xfs-remove-all-cow-fork-extents-when-remounting-readonly.patch xfs-check-sb_meta_uuid-for-dabuf-buffer-recovery.patch powerpc-ftrace-remove-ftrace-init-tramp-once-kernel-init-is-complete.patch xen-gntdev-avoid-blocking-in-unmap_grant_pages.patch +net-mscc-ocelot-allow-unregistered-ip-multicast-flooding.patch -- 2.47.3