• Bob Copeland's avatar
    ath5k: fix SWI calibration interrupt storm · 242ab7ad
    Bob Copeland authored
    The calibration period is now invoked by triggering a software
    interrupt from within the ISR by ath5k_hw_calibration_poll()
    instead of via a timer.
    
    However, the calibration interval isn't initialized before
    interrupts are enabled, so we can have a situation where an
    interrupt occurs before the interval is assigned, so the
    interval is actually negative.  As a result, the ISR will
    arm a software interrupt to schedule the tasklet, and then
    rearm it when the SWI is processed, and so on, leading to a
    softlockup at modprobe time.
    
    Move the initialization order around so the calibration interval
    is set before interrupts are active.  Another possible fix
    is to schedule the tasklet directly from the poll routine,
    but I think there are additional plans for the SWI.
    Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    242ab7ad
base.c 86.8 KB