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