mwifiex: fix SDIO interrupt lost issue
601216e1 "mwifiex: process RX packets in SDIO IRQ thread directly" introduced a command timeout issue which can be reproduced easily on an AM33xx platform using a test application written by Daniel Mack: https://gist.github.com/zonque/6579314 mwifiex_main_process() is called from both the SDIO handler and the workqueue. In case an interrupt occurs right after the int_status check, but before updating the mwifiex_processing flag, this interrupt gets lost, resulting in a command timeout and consequently a card reset. Let main_proc_lock protect both int_status and mwifiex_processing flag. This fixes the interrupt lost issue. Cc: <stable@vger.kernel.org> # 3.7+ Reported-by: NSven Neumann <s.neumann@raumfeld.com> Reported-by: NAndreas Fenkart <andreas.fenkart@streamunlimited.com> Tested-by: NDaniel Mack <zonque@gmail.com> Reviewed-by: NDylan Reid <dgreid@chromium.org> Signed-off-by: NAmitkumar Karwar <akarwar@marvell.com> Signed-off-by: NBing Zhao <bzhao@marvell.com> Signed-off-by: NPaul Stewart <pstew@chromium.org> Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
Showing
想要评论请 注册 或 登录