From 7a6deac5e028a791d46335dba8c0a7be14d31e44 Mon Sep 17 00:00:00 2001 From: Arik Nemtsov Date: Tue, 28 Feb 2012 00:41:32 +0200 Subject: [PATCH] --- yaml --- r: 291277 b: refs/heads/master c: 18aa755b84715f36e2811734f95cb822bcacfd89 h: refs/heads/master i: 291275: 9be0d723c8fc5470e67dcdd09ab44941f3de6c0a v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/wl12xx/tx.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 48ad454993c4..465ed5ed8d3c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 49c9cd26445aa8bc8348c384c943b758c57c47a9 +refs/heads/master: 18aa755b84715f36e2811734f95cb822bcacfd89 diff --git a/trunk/drivers/net/wireless/wl12xx/tx.c b/trunk/drivers/net/wireless/wl12xx/tx.c index 6640c3975cfb..8f78fddcb723 100644 --- a/trunk/drivers/net/wireless/wl12xx/tx.c +++ b/trunk/drivers/net/wireless/wl12xx/tx.c @@ -1040,6 +1040,7 @@ void wl12xx_tx_reset(struct wl1271 *wl, bool reset_tx_queues) void wl1271_tx_flush(struct wl1271 *wl) { unsigned long timeout; + int i; timeout = jiffies + usecs_to_jiffies(WL1271_TX_FLUSH_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."); + + /* 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)