1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/ethernet/mscc
Alban Bedel 584b7cfcdc net: mscc: ocelot: Fix multicast to the CPU port
Multicast entries in the MAC table use the high bits of the MAC
address to encode the ports that should get the packets. But this port
mask does not work for the CPU port, to receive these packets on the
CPU port the MAC_CPU_COPY flag must be set.

Because of this IPv6 was effectively not working because neighbor
solicitations were never received. This was not apparent before commit
9403c158 (net: mscc: ocelot: support IPv4, IPv6 and plain Ethernet mdb
entries) as the IPv6 entries were broken so all incoming IPv6
multicast was then treated as unknown and flooded on all ports.

To fix this problem rework the ocelot_mact_learn() to set the
MAC_CPU_COPY flag when a multicast entry that target the CPU port is
added. For this we have to read back the ports endcoded in the pseudo
MAC address by the caller. It is not a very nice design but that avoid
changing the callers and should make backporting easier.

Signed-off-by: Alban Bedel <alban.bedel@aerq.com>
Fixes: 9403c158b8 ("net: mscc: ocelot: support IPv4, IPv6 and plain Ethernet mdb entries")
Link: https://lore.kernel.org/r/20210119140638.203374-1-alban.bedel@aerq.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-01-20 08:59:28 -08:00
..
Kconfig net: mscc: ocelot: rethink Kconfig dependencies again 2020-07-16 12:46:00 -07:00
Makefile net: mscc: ocelot: rename ocelot_ace.{c, h} to ocelot_vcap.{c,h} 2020-06-20 17:25:23 -07:00
ocelot.c net: mscc: ocelot: Fix multicast to the CPU port 2021-01-20 08:59:28 -08:00
ocelot.h net: mscc: ocelot: support L2 multicast entries 2020-10-30 18:25:56 -07:00
ocelot_flower.c net: mscc: ocelot: offload VLAN mangle action to VCAP IS1 2020-10-11 11:19:04 -07:00
ocelot_io.c net: mscc: ocelot: introduce a new ocelot_target_{read,write} API 2020-09-29 18:26:12 -07:00
ocelot_net.c net: mscc: ocelot: allow offloading of bridge on top of LAG 2021-01-18 11:41:35 -08:00
ocelot_police.c net: mscc: ocelot: move net_device related functions to ocelot_net.c 2020-06-20 17:25:23 -07:00
ocelot_police.h net: mscc: ocelot: unexpose ocelot_vcap_policer_{add,del} 2020-06-20 17:25:23 -07:00
ocelot_ptp.c net: mscc: ocelot: make ocelot_init_timestamp take a const struct ptp_clock_info 2020-09-18 17:52:40 -07:00
ocelot_qs.h net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
ocelot_rew.h net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
ocelot_vcap.c net: mscc: ocelot: relax ocelot_exclusive_mac_etype_filter_rules() 2020-10-02 15:40:30 -07:00
ocelot_vcap.h net: mscc: ocelot: offload egress VLAN rewriting to VCAP ES0 2020-10-02 15:40:30 -07:00
ocelot_vsc7514.c net: mscc: ocelot: Fix a resource leak in the error handling path of the probe function 2020-12-16 11:11:24 -08:00