ath10k: Fix encoding for protected management frames
authorRakesh Pillai <pillair@codeaurora.org>
Tue, 2 Apr 2019 12:42:50 +0000 (18:12 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 7 May 2019 13:49:58 +0000 (16:49 +0300)
Currently the protected management frames are
not appended with the MIC_LEN which results in
the protected management frames being encoded
incorrectly.

Add the extra space at the end of the protected
management frames to fix this encoding error for
the protected management frames.

Tested HW: WCN3990
Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1

Fixes: 1807da49733e ("ath10k: wmi: add management tx by reference support over wmi")
Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/wmi-tlv.c

index 582fb11f648a583187763f61a1009d40ddff9834..02709fc9903467044a0534ce23bd3737a870e2f7 100644 (file)
@@ -2840,8 +2840,10 @@ ath10k_wmi_tlv_op_gen_mgmt_tx_send(struct ath10k *ar, struct sk_buff *msdu,
        if ((ieee80211_is_action(hdr->frame_control) ||
             ieee80211_is_deauth(hdr->frame_control) ||
             ieee80211_is_disassoc(hdr->frame_control)) &&
-            ieee80211_has_protected(hdr->frame_control))
+            ieee80211_has_protected(hdr->frame_control)) {
+               skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
                buf_len += IEEE80211_CCMP_MIC_LEN;
+       }
 
        buf_len = min_t(u32, buf_len, WMI_TLV_MGMT_TX_FRAME_MAX_LEN);
        buf_len = round_up(buf_len, 4);