ath9k_htc_firmware: check only the mesh control present subfield
[open-ath9k-htc-firmware.git] / target_firmware / wlan / ieee80211_output.c
index 562edba1a59bed82ec4f6cd1359feb61750193f3..1230e2c703ba29795e53f06e6fe799ecbd630e4f 100755 (executable)
 #include <adf_net.h>
 
 #include <if_llc.h>
-#include <if_ethersubr.h>
 #include "ieee80211_var.h"
 
-#include "_ieee80211.h"
 #include "ieee80211.h"
 #include <wlan_hdr.h>
 
@@ -69,10 +67,16 @@ ieee80211_tgt_crypto_encap(struct ieee80211_frame *wh,
        a_uint16_t tmp;
        a_uint16_t offset = IEEE80211_WLAN_HDR_LEN;
        a_uint8_t b1, b2;
+       struct ieee80211_qosframe_addr4 *wh_mesh;
 
        if (IEEE80211_QOS_HAS_SEQ(wh))
                offset += 4;  // pad for 4 byte alignment
 
+       /* set the offset to 32 if the mesh control field is present */
+       wh_mesh = (struct ieee80211_qosframe_addr4 *)wh;
+       if (wh_mesh->i_qos[1] & 0x01)
+               offset = 32;
+
        iv = (a_uint8_t *) wh;
        iv = iv + offset;