QoS header processing mangled unencrypted WMM frames on software
retry. The QoS data needs to be removed even when encryption key is
not configured.

Signed-off-by: Jouni Malinen <[EMAIL PROTECTED]>

Index: wireless-dev/net/d80211/ieee80211.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211.c
+++ wireless-dev/net/d80211/ieee80211.c
@@ -3977,11 +3977,11 @@ static void ieee80211_remove_tx_extra(st
        pkt_data->requeue = control->requeue;
        pkt_data->queue = control->queue;
 
-       if (key == NULL)
-               return;
-
        hdrlen = ieee80211_get_hdrlen_from_skb(skb);
 
+       if (key == NULL)
+               goto no_key;
+
        switch (key->alg) {
        case ALG_WEP:
                iv_len = WEP_IV_LEN;
@@ -3996,7 +3996,7 @@ static void ieee80211_remove_tx_extra(st
                mic_len = CCMP_MIC_LEN;
                break;
        default:
-               return;
+               goto no_key;
        }
 
        if (skb->len >= mic_len && key->force_sw_encrypt)
@@ -4006,6 +4006,7 @@ static void ieee80211_remove_tx_extra(st
                skb_pull(skb, iv_len);
        }
 
+no_key:
        {
                struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
                u16 fc = le16_to_cpu(hdr->frame_control);

--
-- 
Jouni Malinen                                            PGP id EFC895FA
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to