From 44bfc439ae9391f91d0074efbd7f3ac3650e417f Mon Sep 17 00:00:00 2001 From: cail Date: Thu, 28 Mar 2019 09:52:21 -0700 Subject: [PATCH] Hostapd/WPS support --- os_dep/linux/ioctl_cfg80211.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 195d97a..4a060e7 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4515,6 +4515,18 @@ static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev, ret = rtw_add_beacon(adapter, settings->beacon.head, settings->beacon.head_len, settings->beacon.tail, settings->beacon.tail_len); + // In cases like WPS, the proberesp and assocresp IEs vary from the beacon, and need to be explicitly set + if(ret == 0) { + if(settings->beacon.proberesp_ies && settings->beacon.proberesp_ies_len > 0) { + rtw_cfg80211_set_mgnt_wpsp2pie(ndev, (char *)settings->beacon.proberesp_ies, + settings->beacon.proberesp_ies_len, 0x2/*PROBE_RESP*/); + } + if(settings->beacon.assocresp_ies && settings->beacon.assocresp_ies_len < 0) { + rtw_cfg80211_set_mgnt_wpsp2pie(ndev, (char *)settings->beacon.assocresp_ies, + settings->beacon.assocresp_ies_len, 0x4/*ASSOC_RESP*/); + } + } + adapter->mlmeextpriv.mlmext_info.hidden_ssid_mode = settings->hidden_ssid; if (settings->ssid && settings->ssid_len) { @@ -4550,6 +4562,18 @@ static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *nd ret = rtw_add_beacon(adapter, info->head, info->head_len, info->tail, info->tail_len); + // In cases like WPS, the proberesp and assocresp IEs vary from the beacon, and need to be explicitly set + if(ret == 0) { + if(info->proberesp_ies && info->proberesp_ies_len > 0) { + rtw_cfg80211_set_mgnt_wpsp2pie(ndev, (char *)info->proberesp_ies, + info->proberesp_ies_len, 0x2/*PROBE_RESP*/); + } + if(info->assocresp_ies && info->assocresp_ies_len > 0) { + rtw_cfg80211_set_mgnt_wpsp2pie(ndev, (char *)info->assocresp_ies, + info->assocresp_ies_len, 0x4/*ASSOC_RESP*/); + } + } + return ret; }