diff options
author | Ivo van Doorn <IvDoorn@gmail.com> | 2008-06-06 16:53:14 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-06-14 12:17:56 -0400 |
commit | b869767b6f5049f1d1ede2bb3e48832e0722ca5a (patch) | |
tree | a75e43aad931ffdaea889af7b2275f12a16f077a /drivers/net/wireless/rt2x00/rt2x00pci.c | |
parent | 6db3786aee36b32e5ed072ed67fad6d5341b0991 (diff) |
rt2x00: Don't kick TX queue after each frame
TX queues shouldn't be kicked after each frame that is put into the
queue. This could cause problems during RTS and CTS-to-self as well
as with fragmentation. In all those cases you want all frames to be
send out in a single burst. Off course we shouldn't let the queue fill
up entirely, thus we introduce a 10% threshold which, when reached,
will force the frames to be send out regardless of the frame.
In addition we should prevent queues to become full in such a way
that the tx() handler can fail. Instead of stopping the queue when
it is full, we should stop it when it is below the threshold.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index a6bac75de9f2..9745277c81ce 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c | |||
@@ -170,11 +170,11 @@ void rt2x00pci_txdone(struct rt2x00_dev *rt2x00dev, struct queue_entry *entry, | |||
170 | rt2x00queue_index_inc(entry->queue, Q_INDEX_DONE); | 170 | rt2x00queue_index_inc(entry->queue, Q_INDEX_DONE); |
171 | 171 | ||
172 | /* | 172 | /* |
173 | * If the data queue was full before the txdone handler | 173 | * If the data queue was below the threshold before the txdone |
174 | * we must make sure the packet queue in the mac80211 stack | 174 | * handler we must make sure the packet queue in the mac80211 stack |
175 | * is reenabled when the txdone handler has finished. | 175 | * is reenabled when the txdone handler has finished. |
176 | */ | 176 | */ |
177 | if (!rt2x00queue_full(entry->queue)) | 177 | if (!rt2x00queue_threshold(entry->queue)) |
178 | ieee80211_wake_queue(rt2x00dev->hw, qid); | 178 | ieee80211_wake_queue(rt2x00dev->hw, qid); |
179 | 179 | ||
180 | } | 180 | } |