wl12xx: flush all Tx queues on tx_flush timeout
Ensure our queues are empty at the end of a tx_flush(), in case we timeout on passively waiting for them. This makes sure no left-overs are transmitted when we are on the wrong channel. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
committed by
Luciano Coelho
parent
49c9cd2644
commit
18aa755b84
@@ -1040,6 +1040,7 @@ void wl12xx_tx_reset(struct wl1271 *wl, bool reset_tx_queues)
|
|||||||
void wl1271_tx_flush(struct wl1271 *wl)
|
void wl1271_tx_flush(struct wl1271 *wl)
|
||||||
{
|
{
|
||||||
unsigned long timeout;
|
unsigned long timeout;
|
||||||
|
int i;
|
||||||
timeout = jiffies + usecs_to_jiffies(WL1271_TX_FLUSH_TIMEOUT);
|
timeout = jiffies + usecs_to_jiffies(WL1271_TX_FLUSH_TIMEOUT);
|
||||||
|
|
||||||
while (!time_after(jiffies, timeout)) {
|
while (!time_after(jiffies, timeout)) {
|
||||||
@@ -1057,6 +1058,12 @@ void wl1271_tx_flush(struct wl1271 *wl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
wl1271_warning("Unable to flush all TX buffers, timed out.");
|
wl1271_warning("Unable to flush all TX buffers, timed out.");
|
||||||
|
|
||||||
|
/* forcibly flush all Tx buffers on our queues */
|
||||||
|
mutex_lock(&wl->mutex);
|
||||||
|
for (i = 0; i < WL12XX_MAX_LINKS; i++)
|
||||||
|
wl1271_tx_reset_link_queues(wl, i);
|
||||||
|
mutex_unlock(&wl->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 wl1271_tx_min_rate_get(struct wl1271 *wl, u32 rate_set)
|
u32 wl1271_tx_min_rate_get(struct wl1271 *wl, u32 rate_set)
|
||||||
|
Reference in New Issue
Block a user