mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
rt2x00: check against flushing empty queue
We have check if queue is not empty when start flushing queues on by mac80211 callback, but we also can start flushing queues by internal driver calls. So move check into rt2x00queue_flush_queue() to assure we do not flush empty queue anytime. Additionally add warning if we start to kick empty queue as in such situation we set wrong index in the HW queue, what can confuse the HW and have various negative consequences. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
9c87758cf0
commit
811a399151
@ -600,6 +600,7 @@ void rt2800mmio_kick_queue(struct data_queue *queue)
|
||||
case QID_AC_VI:
|
||||
case QID_AC_BE:
|
||||
case QID_AC_BK:
|
||||
WARN_ON_ONCE(rt2x00queue_empty(queue));
|
||||
entry = rt2x00queue_get_entry(queue, Q_INDEX);
|
||||
rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX(queue->qid),
|
||||
entry->entry_idx);
|
||||
|
@ -739,8 +739,7 @@ void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
return;
|
||||
|
||||
tx_queue_for_each(rt2x00dev, queue)
|
||||
if (!rt2x00queue_empty(queue))
|
||||
rt2x00queue_flush_queue(queue, drop);
|
||||
rt2x00queue_flush_queue(queue, drop);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2x00mac_flush);
|
||||
|
||||
|
@ -1000,6 +1000,8 @@ void rt2x00queue_flush_queue(struct data_queue *queue, bool drop)
|
||||
(queue->qid == QID_AC_BE) ||
|
||||
(queue->qid == QID_AC_BK);
|
||||
|
||||
if (rt2x00queue_empty(queue))
|
||||
return;
|
||||
|
||||
/*
|
||||
* If we are not supposed to drop any pending
|
||||
|
Loading…
Reference in New Issue
Block a user