• Vladimir Oltean's avatar
    net: dsa: felix: stop migrating FDBs back and forth on tag proto change · a51c1c3f
    Vladimir Oltean authored
    I just realized we don't need to migrate the host-filtered FDB entries
    when the tagging protocol changes from "ocelot" to "ocelot-8021q".
    
    Host-filtered addresses are learned towards the PGID_CPU "multicast"
    port group, reserved by software, which contains BIT(ocelot->num_phys_ports).
    That is the "special" port entry in the analyzer block for the CPU port
    module.
    
    In "ocelot" mode, the CPU port module's packets are redirected to the
    NPI port.
    
    In "ocelot-8021q" mode, felix_8021q_cpu_port_init() does something funny
    anyway, and changes PGID_CPU to stop pointing at the CPU port module and
    start pointing at the physical port where the DSA master is attached.
    
    The fact that we can alter the destination of packets learned towards
    PGID_CPU without altering the MAC table entries themselves means that it
    is pointless to walk through the FDB entries, forget that they were
    learned towards PGID_CPU, and re-learn them towards the "unicast" PGID
    associated with the physical port connected to the DSA master. We can
    let the PGID_CPU value change simply alter the destination of the
    host-filtered unicast packets in one fell swoop.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    a51c1c3f
felix.c 51.4 KB