rt2x00: Fix IEEE80211_TX_CTL_MORE_FRAMES handling
authorHelmut Schaa <helmut.schaa@googlemail.com>
Mon, 14 Jun 2010 20:10:09 +0000 (22:10 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 15 Jun 2010 20:00:49 +0000 (16:00 -0400)
IEEE80211_TX_CTL_MORE_FRAMES indicates that more frames are queued for tx
but has nothing to do with fragmentation. Hence, don't set ENTRY_TXD_MORE_FRAG
but only ENTRY_TXD_BURST to not kick the tx queues immediately.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00queue.c

index 35858b178e8f81725cf8c7550d59e0d06c03f30d..f9163714711638b09aad259ed581cb1e45909ce3 100644 (file)
@@ -353,12 +353,17 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
        /*
         * Check if more fragments are pending
         */
-       if (ieee80211_has_morefrags(hdr->frame_control) ||
-           (tx_info->flags & IEEE80211_TX_CTL_MORE_FRAMES)) {
+       if (ieee80211_has_morefrags(hdr->frame_control)) {
                __set_bit(ENTRY_TXD_BURST, &txdesc->flags);
                __set_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags);
        }
 
+       /*
+        * Check if more frames (!= fragments) are pending
+        */
+       if (tx_info->flags & IEEE80211_TX_CTL_MORE_FRAMES)
+               __set_bit(ENTRY_TXD_BURST, &txdesc->flags);
+
        /*
         * Beacons and probe responses require the tsf timestamp
         * to be inserted into the frame, except for a frame that has been injected