From: Chun-Yeow Yeoh Date: Fri, 4 Apr 2014 09:01:15 +0000 (+0800) Subject: ath9k_htc_firmware: fix the offset of CCMP header for mesh data frame X-Git-Tag: 1.4.0~9^2 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=5c5580bd6b3f970308844fe0d08857f43b7ae28f;p=open-ath9k-htc-firmware.git ath9k_htc_firmware: fix the offset of CCMP header for mesh data frame Mesh data frame uses at least 3 addresses scheme. So set the offset correctly while fetching the CCMP header. Previously, we are not able to do HW encryption for unicast data frame. Applying this patch will allow HW encryption and avoid loading ath9k_htc.ko using "nohwcrypt=1". Signed-off-by: Chun-Yeow Yeoh --- diff --git a/target_firmware/wlan/ieee80211_output.c b/target_firmware/wlan/ieee80211_output.c index ce034ed..3d68704 100755 --- a/target_firmware/wlan/ieee80211_output.c +++ b/target_firmware/wlan/ieee80211_output.c @@ -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;