• Shani Michaelli's avatar
    net/mlx4_en: Fix errors in MAC address changing when port is down · ee755324
    Shani Michaelli authored
    This patch fix an issue that happen when changing the MAC address when
    the port is down, described as follows:
    1. Set the port down.
    2. Change the MAC address - mlx4_en_set_mac() will change dev->dev_addr.
    3. Set the port up - will result in mlx4_en_do_uc_filter that will
       remove the prev_mac entry from the mac_hash db.
    4. Changing the MAC address again will eventually trigger the call to
       mlx4_en_replace_mac() in order to replace prev_mac with dev_addr but
       the prev_mac entry is already not exist in the mac_hash db therefore
       the operation fails.
    
    The fix is to set the prev_mac with the new MAC address so in step 3
    above, after setting the port up mlx4_en_get_qp() is updating the
    mac_hash with the entry of dev_addr which is equal to prev_mac.
    Therefore in step 4, when calling mlx4_en_replace_mac, the entry related
    to prev_mac exist in mac_hash and the replace operation succeed.
    Reviewed-by: default avatarEyal Perry <eyalpe@mellanox.com>
    Signed-off-by: default avatarShani Michaeli <shanim@mellanox.com>
    Signed-off-by: default avatarAmir Vadai <amirv@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ee755324
en_netdev.c 69.5 KB