• Sujith Manoharan's avatar
    ath9k: Set ATH_OP_HW_RESET before HW reset · ae2ff239
    Sujith Manoharan authored
    When a HW reset is done, the interrupt tasklet is
    disabled before ISRs are disabled in the HW. This
    allows a small window where the HW can still generate
    interrupts. Since the tasklet is disabled and not killed,
    it is not scheduled but deferred for execution at a later
    time.
    
    This happens because ATH_OP_HW_RESET is not set when ath_reset()
    is called. When the hw_reset_work workqueue is used, this
    problem doesn't arise because ATH_OP_HW_RESET is set
    and the ISR bails out.
    
    Set ATH_OP_HW_RESET properly in ath_reset() to avoid
    this race - all the ath_reset_internal() callers have
    been converted to use ath_reset() in the previous patch.
    Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    ae2ff239
main.c 61.1 KB