]> git.baikalelectronics.ru Git - kernel.git/commit
wlcore: fix broken TX due to wrong queuing of recovery
authorEyal Shapira <eyal@wizery.com>
Tue, 26 Jun 2012 07:41:15 +0000 (10:41 +0300)
committerLuciano Coelho <coelho@ti.com>
Tue, 26 Jun 2012 17:30:03 +0000 (20:30 +0300)
commitf394c91f766d1aa414b71b71e68783bf071c9f57
treeee18c7f890c3fc16223270a3e44e06897a2d3be3
parent75a68ecaccb6d4d11266cd548785633a4a89a876
wlcore: fix broken TX due to wrong queuing of recovery

commit 14bba17b "wl12xx: Propagate errors from wl1271_raw_write32"
breaks down TX in certain scenarios. wl1271_irq_locked() propagates
errors from wl1271_tx_work_locked however it may return -EBUSY
when the FW queues are full which is a legitimate case and not a
a real error. In this case a recovery is triggered by wl1271_irq
and this keeps repeating itself so TX is completely broken.
Fix it by avoiding propagating return values as errors even if they
aren't. Only bus (SDIO or SPI) ops failures would be progagated
as only these should trigger recovery.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/tx.c