From: David Gnedt Date: Sun, 30 Jan 2011 19:10:46 +0000 (+0100) Subject: wl1251: fix queue stopping/waking for TX path X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7cb86ab95399f814ea49089e3d4e62727ebf1bf1;p=pandora-kernel.git wl1251: fix queue stopping/waking for TX path The queue stopping/waking functionality was broken in a way that could cause the TX to stall if the right circumstances are met. The problem was caused by tx_work, which is scheduled on each TX operation. If the firmware buffer is full, tx_work does nothing. In combinition with stopped queues or non-continues transfers, tx_work is never scheduled again. Moreover the low watermark introduced by 9df86e2e702c6d5547aced7f241addd2d698bb11 never takes effect because of some old code. Solve this by scheduling tx_work every time tx_queue is non-empty and firmware buffer is freed on tx_complete. This also solves a possible but unlikely case: If less frames than the high watermark are queued, but more than firmware buffer can hold. This results in queues staying awake but the only scheduled tx_work doesn't transfer all frames, so the remaining frames are stuck in the queue until more frames get queued and tx_work is scheduled again. Signed-off-by: David Gnedt Acked-by: Kalle Valo Signed-off-by: John W. Linville --- Reading git-diff-tree failed