• V
    net: dsa: sja1105: overwrite dynamic FDB entries with static ones in .port_fdb_add · e11e865b
    Vladimir Oltean 提交于
    The SJA1105 switch family leaves it up to software to decide where
    within the FDB to install a static entry, and to concatenate destination
    ports for already existing entries (the FDB is also used for multicast
    entries), it is not as simple as just saying "please add this entry".
    
    This means we first need to search for an existing FDB entry before
    adding a new one. The driver currently manages to fool itself into
    thinking that if an FDB entry already exists, there is nothing to be
    done. But that FDB entry might be dynamically learned, case in which it
    should be replaced with a static entry, but instead it is left alone.
    
    This patch checks the LOCKEDS ("locked/static") bit from found FDB
    entries, and lets the code "goto skip_finding_an_index;" if the FDB
    entry was not static. So we also need to move the place where we set
    LOCKEDS = true, to cover the new case where a dynamic FDB entry existed
    but was dynamic.
    
    Fixes: 291d1e72 ("net: dsa: sja1105: Add support for FDB and MDB management")
    Fixes: 1da73821 ("net: dsa: sja1105: Add FDB operations for P/Q/R/S series")
    Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    e11e865b
sja1105_main.c 107.7 KB