diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-07-29 12:49:01 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-07-29 12:49:01 +0000 |
commit | 251d3a0ba1e5d72dc602c4ef9147d9a190c6d84f (patch) | |
tree | 5da99c2298d8252605d99d507bf9964b18c55bdb /package | |
parent | 955864764ca7d6cc439c481858b562d231f9796b (diff) | |
download | master-187ad058-251d3a0ba1e5d72dc602c4ef9147d9a190c6d84f.tar.gz master-187ad058-251d3a0ba1e5d72dc602c4ef9147d9a190c6d84f.tar.bz2 master-187ad058-251d3a0ba1e5d72dc602c4ef9147d9a190c6d84f.zip |
rt2x00: merge fix for queue stopping
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37603 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r-- | package/kernel/mac80211/patches/300-pending_work.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/300-pending_work.patch b/package/kernel/mac80211/patches/300-pending_work.patch index c5a61bb7d5..c5f1e43c78 100644 --- a/package/kernel/mac80211/patches/300-pending_work.patch +++ b/package/kernel/mac80211/patches/300-pending_work.patch @@ -798,3 +798,45 @@ mi->prev_sample = false; if (delta < 0 || (!mrr_capable && prev_sample)) return; +--- a/drivers/net/wireless/rt2x00/rt2x00queue.c ++++ b/drivers/net/wireless/rt2x00/rt2x00queue.c +@@ -936,13 +936,8 @@ void rt2x00queue_index_inc(struct queue_ + spin_unlock_irqrestore(&queue->index_lock, irqflags); + } + +-void rt2x00queue_pause_queue(struct data_queue *queue) ++void rt2x00queue_pause_queue_nocheck(struct data_queue *queue) + { +- if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || +- !test_bit(QUEUE_STARTED, &queue->flags) || +- test_and_set_bit(QUEUE_PAUSED, &queue->flags)) +- return; +- + switch (queue->qid) { + case QID_AC_VO: + case QID_AC_VI: +@@ -958,6 +953,15 @@ void rt2x00queue_pause_queue(struct data + break; + } + } ++void rt2x00queue_pause_queue(struct data_queue *queue) ++{ ++ if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || ++ !test_bit(QUEUE_STARTED, &queue->flags) || ++ test_and_set_bit(QUEUE_PAUSED, &queue->flags)) ++ return; ++ ++ rt2x00queue_pause_queue_nocheck(queue); ++} + EXPORT_SYMBOL_GPL(rt2x00queue_pause_queue); + + void rt2x00queue_unpause_queue(struct data_queue *queue) +@@ -1019,7 +1023,7 @@ void rt2x00queue_stop_queue(struct data_ + return; + } + +- rt2x00queue_pause_queue(queue); ++ rt2x00queue_pause_queue_nocheck(queue); + + queue->rt2x00dev->ops->lib->stop_queue(queue); + |