diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-11-12 14:15:13 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-11-12 14:15:13 +0000 |
commit | 2913dec9f14ba85e3e580e22eabb75a5da9611d6 (patch) | |
tree | 8722dddc8d771e0f31eec220c83c929daa857428 | |
parent | 30368446669b234e21d6125b365187213d15ba33 (diff) | |
download | upstream-2913dec9f14ba85e3e580e22eabb75a5da9611d6.tar.gz upstream-2913dec9f14ba85e3e580e22eabb75a5da9611d6.tar.bz2 upstream-2913dec9f14ba85e3e580e22eabb75a5da9611d6.zip |
hostapd: fix endian bugs in STA HT capability handling
SVN-Revision: 18405
-rw-r--r-- | package/hostapd/patches/150-ht_cap_endian.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/package/hostapd/patches/150-ht_cap_endian.patch b/package/hostapd/patches/150-ht_cap_endian.patch new file mode 100644 index 0000000000..d8f3856eed --- /dev/null +++ b/package/hostapd/patches/150-ht_cap_endian.patch @@ -0,0 +1,33 @@ +--- a/hostapd/ieee802_11.c ++++ b/hostapd/ieee802_11.c +@@ -1586,24 +1586,16 @@ hostapd_get_ht_capab(struct hostapd_data + struct ht_cap_ie *ht_cap_ie, + struct ht_cap_ie *neg_ht_cap_ie) + { ++ u16 cap; + + os_memcpy(neg_ht_cap_ie, ht_cap_ie, sizeof(struct ht_cap_ie)); +- neg_ht_cap_ie->data.capabilities_info = +- ht_cap_ie->data.capabilities_info & hapd->iconf->ht_capab; +- +- neg_ht_cap_ie->data.capabilities_info &= ~HT_CAP_INFO_SMPS_DISABLED; +- if ((ht_cap_ie->data.capabilities_info & HT_CAP_INFO_SMPS_DISABLED) == +- (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED)) +- neg_ht_cap_ie->data.capabilities_info |= +- hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED; +- else +- neg_ht_cap_ie->data.capabilities_info |= +- HT_CAP_INFO_SMPS_DISABLED; ++ cap = le_to_host16(neg_ht_cap_ie->data.capabilities_info); ++ cap &= hapd->iconf->ht_capab; ++ cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED); + + /* FIXME: Rx STBC needs to be handled specially */ +- neg_ht_cap_ie->data.capabilities_info &= ~HT_CAP_INFO_RX_STBC_MASK; +- neg_ht_cap_ie->data.capabilities_info |= +- hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK; ++ cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK); ++ neg_ht_cap_ie->data.capabilities_info = host_to_le16(cap); + } + #endif /* CONFIG_IEEE80211N */ + |