|
|
@@ -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);
|
|
|
+
|