msm: rmnet_sdio: Handle Network TX Queue Race Condition

The netif TX queue is started and stopped based upon the watermark state
maintained by SDIO DMUX.  The queue is checked after TX-enqueue
operations to disable the queue if the high watermark is hit and after
TX-dequeue operations to enable the queue if the low watermark is hit.

Without locking, this opens a race condition where the TX-dequeue check
and the call to stop the queue can happen after the write-done
completion has occurred which would restart the queue.  This results in
the queue being stopped indefinitely which results in a permanent data
stall.

CRs-Fixed: 354334
Change-Id: Id4d96c9216e921bf3179175bd1b1cfd39403a3d2
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
1 file changed