Commit bf7394cc authored by Linus Torvalds's avatar Linus Torvalds

Revert "mac80211: Use IWEVASSOCREQIE instead of IWEVCUSTOM"

This reverts commit 087d833e, which was
reported to break wireless at least in some combinations with 32bit user
space and a 64bit kernel.  Alex Williamnson bisected it to this commit.
Reported-and-bisected-by: default avatarAlex Williamson <alex.williamson@hp.com>
Acked-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Cc: David Miller <davem@davemloft.net>
Cc: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b380b0d4
...@@ -478,21 +478,51 @@ int ieee80211_ht_addt_info_ie_to_ht_bss_info( ...@@ -478,21 +478,51 @@ int ieee80211_ht_addt_info_ie_to_ht_bss_info(
static void ieee80211_sta_send_associnfo(struct net_device *dev, static void ieee80211_sta_send_associnfo(struct net_device *dev,
struct ieee80211_if_sta *ifsta) struct ieee80211_if_sta *ifsta)
{ {
char *buf;
size_t len;
int i;
union iwreq_data wrqu; union iwreq_data wrqu;
if (!ifsta->assocreq_ies && !ifsta->assocresp_ies)
return;
buf = kmalloc(50 + 2 * (ifsta->assocreq_ies_len +
ifsta->assocresp_ies_len), GFP_KERNEL);
if (!buf)
return;
len = sprintf(buf, "ASSOCINFO(");
if (ifsta->assocreq_ies) { if (ifsta->assocreq_ies) {
memset(&wrqu, 0, sizeof(wrqu)); len += sprintf(buf + len, "ReqIEs=");
wrqu.data.length = ifsta->assocreq_ies_len; for (i = 0; i < ifsta->assocreq_ies_len; i++) {
wireless_send_event(dev, IWEVASSOCREQIE, &wrqu, len += sprintf(buf + len, "%02x",
ifsta->assocreq_ies); ifsta->assocreq_ies[i]);
}
} }
if (ifsta->assocresp_ies) { if (ifsta->assocresp_ies) {
memset(&wrqu, 0, sizeof(wrqu)); if (ifsta->assocreq_ies)
wrqu.data.length = ifsta->assocresp_ies_len; len += sprintf(buf + len, " ");
wireless_send_event(dev, IWEVASSOCRESPIE, &wrqu, len += sprintf(buf + len, "RespIEs=");
ifsta->assocresp_ies); for (i = 0; i < ifsta->assocresp_ies_len; i++) {
len += sprintf(buf + len, "%02x",
ifsta->assocresp_ies[i]);
}
}
len += sprintf(buf + len, ")");
if (len > IW_CUSTOM_MAX) {
len = sprintf(buf, "ASSOCRESPIE=");
for (i = 0; i < ifsta->assocresp_ies_len; i++) {
len += sprintf(buf + len, "%02x",
ifsta->assocresp_ies[i]);
}
} }
memset(&wrqu, 0, sizeof(wrqu));
wrqu.data.length = len;
wireless_send_event(dev, IWEVCUSTOM, &wrqu, buf);
kfree(buf);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment