• Esben Haabendal's avatar
    net: ll_temac: Prepare indirect register access for multicast support · 1bd33bf0
    Esben Haabendal authored
    With .ndo_set_rx_mode/temac_set_multicast_list() being called in atomic
    context (holding addr_list_lock), and temac_set_multicast_list() needing
    to access temac indirect registers, the mutex used to synchronize indirect
    register is a no-no.
    
    Replace it with a spinlock, and avoid sleeping in
    temac_indirect_busywait().
    
    To avoid excessive holding of the lock, which is now a spinlock, the
    temac_device_reset() function is changed to only hold the lock for short
    periods.  With timeouts, it could be holding the spinlock for more than
    2 seconds.
    Signed-off-by: default avatarEsben Haabendal <esben@geanix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1bd33bf0
ll_temac.h 13.3 KB