[rt2x00-users] [RFC 5/5] rt2x00: Check if queue is running
Ivo van Doorn
ivdoorn at gmail.com
Mon Nov 8 19:14:44 UTC 2010
In the interrupt handlers it is needed to
check if the given queue is running or not,
rather then checking for the global radio state.
This makes sure that flushing queues works appropriately.
Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
---
drivers/net/wireless/rt2x00/rt2x00dev.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 06ed2a0..60682bc 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -385,7 +385,8 @@ void rt2x00lib_txdone(struct queue_entry *entry,
* handler we must make sure the packet queue in the mac80211 stack
* is reenabled when the txdone handler has finished.
*/
- if (!rt2x00queue_threshold(entry->queue))
+ if (test_bit(QUEUE_STARTED, &entry->queue->flags) &&
+ !rt2x00queue_threshold(entry->queue))
ieee80211_wake_queue(rt2x00dev->hw, qid);
}
EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
@@ -459,7 +460,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry)
int rate_idx;
if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) ||
- !test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
+ !test_bit(QUEUE_STARTED, &entry->queue->flags))
goto submit_entry;
if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
@@ -549,7 +550,7 @@ submit_entry:
entry->flags = 0;
rt2x00queue_index_inc(entry->queue, Q_INDEX_DONE);
if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) &&
- test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) {
+ test_bit(QUEUE_STARTED, &entry->queue->flags)) {
rt2x00dev->ops->lib->clear_entry(entry);
rt2x00queue_index_inc(entry->queue, Q_INDEX);
}
--
1.5.6.5
More information about the users
mailing list