• Bing Zhao's avatar
    mwifiex: clear is_suspended flag when interrupt is received early · 48795424
    Bing Zhao authored
    When the XO-4 with 8787 wireless is woken up due to wake-on-WLAN
    mwifiex is often flooded with "not allowed while suspended" messages
    and the interface is unusable.
    
    [  202.171609] int: sdio_ireg = 0x1
    [  202.180700] info: mwifiex_process_hs_config: auto cancelling host
                   sleep since there is interrupt from the firmware
    [  202.201880] event: wakeup device...
    [  202.211452] event: hs_deactivated
    [  202.514638] info: --- Rx: Data packet ---
    [  202.514753] data: 4294957544 BSS(0-0): Data <= kernel
    [  202.514825] PREP_CMD: device in suspended state
    [  202.514839] data: dequeuing the packet ec7248c0 ec4869c0
    [  202.514886] mwifiex_write_data_sync: not allowed while suspended
    [  202.514886] host_to_card, write iomem (1) failed: -1
    [  202.514917] mwifiex_write_data_sync: not allowed while suspended
    [  202.514936] host_to_card, write iomem (2) failed: -1
    [  202.514949] mwifiex_write_data_sync: not allowed while suspended
    [  202.514965] host_to_card, write iomem (3) failed: -1
    [  202.514976] mwifiex_write_data_async failed: 0xFFFFFFFF
    
    This can be readily reproduced when putting the XO-4 in a loop where
    it goes to sleep due to inactivity, but then wakes up due to an
    incoming ping. The error is hit within an hour or two.
    
    This issue happens when an interrupt comes in early while host sleep
    is still activated. Driver handles this case by auto cancelling host
    sleep. However is_suspended flag is still set which prevents any cmd
    or data from being sent to firmware. Fix it by clearing is_suspended
    flag in this path.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: default avatarDaniel Drake <dsd@laptop.org>
    Tested-by: default avatarDaniel Drake <dsd@laptop.org>
    Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    48795424
cmdevt.c 47.6 KB