rt2800: partially restore old mmio txstatus behaviour
Do not disable txstatus interrupt and add quota of processed tx statuses in
one tasklet. Quota is needed to allow to fed device with new frames during
processing of tx statuses.
Patch fixes about 15% performance degradation on some scenarios caused by
0b0d556e0e
("rt2800mmio: use txdone/txstatus routines from lib").
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

committed by
Kalle Valo

parent
d5414c2355
commit
889bb866ba
@@ -1100,7 +1100,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
|
||||
|
||||
void rt2800_txdone(struct rt2x00_dev *rt2x00dev)
|
||||
void rt2800_txdone(struct rt2x00_dev *rt2x00dev, unsigned int quota)
|
||||
{
|
||||
struct data_queue *queue;
|
||||
struct queue_entry *entry;
|
||||
@@ -1108,7 +1108,7 @@ void rt2800_txdone(struct rt2x00_dev *rt2x00dev)
|
||||
u8 qid;
|
||||
bool match;
|
||||
|
||||
while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) {
|
||||
while (quota-- > 0 && kfifo_get(&rt2x00dev->txstatus_fifo, ®)) {
|
||||
/*
|
||||
* TX_STA_FIFO_PID_QUEUE is a 2-bit field, thus qid is
|
||||
* guaranteed to be one of the TX QIDs .
|
||||
|
Reference in New Issue
Block a user