• Christian Marangi's avatar
    net: dsa: qca8k: fix search_and_insert wrong handling of new rule · 80248d41
    Christian Marangi authored
    On inserting a mdb entry, fdb_search_and_insert is used to add a port to
    the qca8k target entry in the FDB db.
    
    A FDB entry can't be modified so it needs to be removed and insert again
    with the new values.
    
    To detect if an entry already exist, the SEARCH operation is used and we
    check the aging of the entry. If the entry is not 0, the entry exist and
    we proceed to delete it.
    
    Current code have 2 main problem:
    - The condition to check if the FDB entry exist is wrong and should be
      the opposite.
    - When a FDB entry doesn't exist, aging was never actually set to the
      STATIC value resulting in allocating an invalid entry.
    
    Fix both problem by adding aging support to the function, calling the
    function with STATIC as aging by default and finally by correct the
    condition to check if the entry actually exist.
    
    Fixes: ba8f870d ("net: dsa: qca8k: add support for mdb_add/del")
    Signed-off-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    80248d41
qca8k-common.c 28.8 KB