Merge pull request #163 from cloudswei/ctlframe_injection
[open-ath9k-htc-firmware.git] / target_firmware / wlan / ieee80211_output.c
index ce034edf35cf9d58255ec5a297e8f6fe98928c4b..dcfe9d49d4e05bd1984a6c67cb1b40b6c7a242c9 100755 (executable)
@@ -67,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;
 
@@ -130,4 +136,4 @@ ieee80211_tgt_crypto_encap(struct ieee80211_frame *wh,
 #undef CRYPTO_KEY_TYPE_WAPI
 #undef IEEE80211_WLAN_HDR_LEN
 }
-#undef  IEEE80211_ADDR_LEN     
+#undef  IEEE80211_ADDR_LEN