aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-12-02 16:08:52 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-12-06 16:07:07 -0500
commitaa5b549215f85cf48a7040bc9d33c4dae0c7d11a (patch)
tree99558936788c104390443012594bd4de73be69c3 /net/mac80211
parent79e3b16b7123018610f2754ce1bd219c5dd844f5 (diff)
mac80211: fix retransmit
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>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/tx.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index c4cb4a536e27..e74652d38245 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1332,8 +1332,11 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx)
1332 if (!(tx->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)) 1332 if (!(tx->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL))
1333 CALL_TXH(ieee80211_tx_h_rate_ctrl); 1333 CALL_TXH(ieee80211_tx_h_rate_ctrl);
1334 1334
1335 if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) 1335 if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) {
1336 __skb_queue_tail(&tx->skbs, tx->skb);
1337 tx->skb = NULL;
1336 goto txh_done; 1338 goto txh_done;
1339 }
1337 1340
1338 CALL_TXH(ieee80211_tx_h_michael_mic_add); 1341 CALL_TXH(ieee80211_tx_h_michael_mic_add);
1339 CALL_TXH(ieee80211_tx_h_sequence); 1342 CALL_TXH(ieee80211_tx_h_sequence);