• Vlad Yasevich's avatar
    net: Correctly sync addresses from multiple sources to single device · 6ef7b8a2
    Vlad Yasevich authored
    When we have multiple devices attempting to sync the same address
    to a single destination, each device should be permitted to sync
    it once.  To accomplish this, pass the 'sync_cnt' of the source
    address when adding the addresss to the lower device.  'sync_cnt'
    tracks how many time a given address has been succefully synced.
    This way, we know that if the 'sync_cnt' passed in is 0, we should
    sync this address.
    
    Also, turn 'synced' member back into the counter as was originally
    done in
       commit 4543fbef.
       net: count hw_addr syncs so that unsync works properly.
    It tracks how many time a given address has been added via a
    'sync' operation.  For every successfull 'sync' the counter is
    incremented, and for ever 'unsync', the counter is decremented.
    This makes sure that the address will be properly removed from
    the the lower device when all the upper devices have removed it.
    Reported-by: default avatarAndrey Dmitrov <andrey.dmitrov@oktetlabs.ru>
    CC: Andrey Dmitrov <andrey.dmitrov@oktetlabs.ru>
    CC: Alexandra N. Kossovsky <Alexandra.Kossovsky@oktetlabs.ru>
    CC: Konstantin Ushakov <Konstantin.Ushakov@oktetlabs.ru>
    Signed-off-by: default avatarVlad Yasevich <vyasevic@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6ef7b8a2
dev_addr_lists.c 18.3 KB