diff options
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index e3d8ff533ee6..da557b0d0114 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1285,6 +1285,7 @@ static int __ieee80211_tx(struct ieee80211_local *local, | |||
1285 | static int invoke_tx_handlers(struct ieee80211_tx_data *tx) | 1285 | static int invoke_tx_handlers(struct ieee80211_tx_data *tx) |
1286 | { | 1286 | { |
1287 | struct sk_buff *skb = tx->skb; | 1287 | struct sk_buff *skb = tx->skb; |
1288 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | ||
1288 | ieee80211_tx_result res = TX_DROP; | 1289 | ieee80211_tx_result res = TX_DROP; |
1289 | 1290 | ||
1290 | #define CALL_TXH(txh) \ | 1291 | #define CALL_TXH(txh) \ |
@@ -1299,9 +1300,13 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx) | |||
1299 | CALL_TXH(ieee80211_tx_h_ps_buf); | 1300 | CALL_TXH(ieee80211_tx_h_ps_buf); |
1300 | CALL_TXH(ieee80211_tx_h_select_key); | 1301 | CALL_TXH(ieee80211_tx_h_select_key); |
1301 | CALL_TXH(ieee80211_tx_h_sta); | 1302 | CALL_TXH(ieee80211_tx_h_sta); |
1302 | CALL_TXH(ieee80211_tx_h_michael_mic_add); | ||
1303 | if (!(tx->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)) | 1303 | if (!(tx->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)) |
1304 | CALL_TXH(ieee80211_tx_h_rate_ctrl); | 1304 | CALL_TXH(ieee80211_tx_h_rate_ctrl); |
1305 | |||
1306 | if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) | ||
1307 | goto txh_done; | ||
1308 | |||
1309 | CALL_TXH(ieee80211_tx_h_michael_mic_add); | ||
1305 | CALL_TXH(ieee80211_tx_h_sequence); | 1310 | CALL_TXH(ieee80211_tx_h_sequence); |
1306 | CALL_TXH(ieee80211_tx_h_fragment); | 1311 | CALL_TXH(ieee80211_tx_h_fragment); |
1307 | /* handlers after fragment must be aware of tx info fragmentation! */ | 1312 | /* handlers after fragment must be aware of tx info fragmentation! */ |