generic: mt7530: fix roaming from DSA user ports
authorDENG Qingfang <dengqf6@mail2.sysu.edu.cn>
Sat, 25 Apr 2020 12:08:00 +0000 (20:08 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 4 Jun 2020 20:21:42 +0000 (22:21 +0200)
commit7c47f6601d6da216b811a00fd6dcc5e1a96c2e09
tree9081928a27006fb2e9e71b6691b9b7d5d96b3161
parentdc4ffaa5ab6830ba9c5b9d9569db2c2aef26755a
generic: mt7530: fix roaming from DSA user ports

When a client moves from a DSA user port to a software port in a bridge,
it cannot reach any other clients that connected to the DSA user ports.
That is because SA learning on the CPU port is disabled, so the switch
ignores the client's frames from the CPU port and still thinks it is at
the user port.

Fix it by enabling SA learning on the CPU port.

To prevent the switch from learning from flooding frames from the CPU
port, set skb->offload_fwd_mark to 1 for unicast and broadcast frames,
and let the switch flood them instead of trapping to the CPU port.
Multicast frames still need to be trapped to the CPU port for snooping,
so set the SA_DIS bit of the MTK tag to 1 when transmitting those frames
to disable SA learning.

Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
target/linux/generic/backport-5.4/754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch [new file with mode: 0644]