For PMF case, the action,deauth,disassoc management need to encrypt
by hardware, it need to reserve 8 bytes for encryption, otherwise
the packet will be sent out with error format, then PMF case will
fail.
After add the 8 bytes, it will pass the PMF case.
Tested with QCA6174 SDIO with firmware
WLAN.RMH.4.4.1-00005-QCARMSWP-1.
Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
        struct ath10k *ar = htt->ar;
        int res, data_len;
        struct htt_cmd_hdr *cmd_hdr;
+       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
        struct htt_data_tx_desc *tx_desc;
        struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu);
        struct sk_buff *tmp_skb;
        u16 flags1 = 0;
        u16 msdu_id = 0;
 
+       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)) {
+               skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
+       }
+
        data_len = msdu->len;
 
        switch (txmode) {