]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
net: dsa: don't fast age standalone ports
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sun, 8 Aug 2021 11:16:37 +0000 (14:16 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 8 Aug 2021 11:52:53 +0000 (12:52 +0100)
commit39f32101543be35c60dd984b44c620d565083d33
tree0b37fcc26ee2fe5fa63cc209fd7f847332b9d3de
parentf9be84db09d2e8930319503683305781378a7dbf
net: dsa: don't fast age standalone ports

DSA drives the procedure to flush dynamic FDB entries from a port based
on the change of STP state: whenever we go from a state where address
learning is enabled (LEARNING, FORWARDING) to a state where it isn't
(LISTENING, BLOCKING, DISABLED), we need to flush the existing dynamic
entries.

However, there are cases when this is not needed. Internally, when a
DSA switch interface is not under a bridge, DSA still keeps it in the
"FORWARDING" STP state. And when that interface joins a bridge, the
bridge will meticulously iterate that port through all STP states,
starting with BLOCKING and ending with FORWARDING. Because there is a
state transition from the standalone version of FORWARDING into the
temporary BLOCKING bridge port state, DSA calls the fast age procedure.

Since commit 5e38c15856e9 ("net: dsa: configure better brport flags when
ports leave the bridge"), DSA asks standalone ports to disable address
learning. Therefore, there can be no dynamic FDB entries on a standalone
port. Therefore, it does not make sense to flush dynamic FDB entries on
one.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/dsa_priv.h
net/dsa/port.c
net/dsa/slave.c