From: Felix Fietkau Date: Thu, 12 Nov 2009 14:15:13 +0000 (+0000) Subject: hostapd: fix endian bugs in STA HT capability handling X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2913dec9f14ba85e3e580e22eabb75a5da9611d6;p=openwrt%2Fstaging%2Fnbd.git hostapd: fix endian bugs in STA HT capability handling SVN-Revision: 18405 --- 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 */ +