mac80211: fix retransmit
authorJohannes Berg <johannes.berg@intel.com>
Fri, 2 Dec 2011 21:08:52 +0000 (22:08 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 6 Dec 2011 21:07:07 +0000 (16:07 -0500)
This fixes another regression from my "pass all
fragments to driver at once" patches -- if the
packet is being retransmitted then we don't go
through all handlers, but we still need to move
it to the skbs list, otherwise we run into the
first warning in __ieee80211_tx() and leak the
skb.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/tx.c

index c4cb4a536e270c1662f770c77562d05fe82eb0a2..e74652d382453a2df34a99d9a7776f90e9f06dbf 100644 (file)
@@ -1332,8 +1332,11 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx)
        if (!(tx->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL))
                CALL_TXH(ieee80211_tx_h_rate_ctrl);
 
-       if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION))
+       if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) {
+               __skb_queue_tail(&tx->skbs, tx->skb);
+               tx->skb = NULL;
                goto txh_done;
+       }
 
        CALL_TXH(ieee80211_tx_h_michael_mic_add);
        CALL_TXH(ieee80211_tx_h_sequence);
This page took 0.028635 seconds and 5 git commands to generate.