Add Extended Capabilities element to all Probe Request frames
Always add the Extended Capabilities element to Probe Request frames (in case it is not all zeros) to publish support for driver advertised capabilities and wpa_supplicant specific capabilities. This also fixes the case where Extended Capabilities element was added for Interworking cases, but did not use the driver advertised ones and did not handle other capabilities supported by wpa_supplicant. Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
parent
a539d3f71f
commit
ad4430971f
1 changed files with 8 additions and 13 deletions
|
@ -421,19 +421,6 @@ static void wpas_add_interworking_elements(struct wpa_supplicant *wpa_s,
|
||||||
if (wpa_s->conf->interworking == 0)
|
if (wpa_s->conf->interworking == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wpabuf_put_u8(buf, WLAN_EID_EXT_CAPAB);
|
|
||||||
wpabuf_put_u8(buf, 6);
|
|
||||||
wpabuf_put_u8(buf, 0x00);
|
|
||||||
wpabuf_put_u8(buf, 0x00);
|
|
||||||
wpabuf_put_u8(buf, 0x00);
|
|
||||||
wpabuf_put_u8(buf, 0x80); /* Bit 31 - Interworking */
|
|
||||||
wpabuf_put_u8(buf, 0x00);
|
|
||||||
#ifdef CONFIG_HS20
|
|
||||||
wpabuf_put_u8(buf, 0x40); /* Bit 46 - WNM-Notification */
|
|
||||||
#else /* CONFIG_HS20 */
|
|
||||||
wpabuf_put_u8(buf, 0x00);
|
|
||||||
#endif /* CONFIG_HS20 */
|
|
||||||
|
|
||||||
wpabuf_put_u8(buf, WLAN_EID_INTERWORKING);
|
wpabuf_put_u8(buf, WLAN_EID_INTERWORKING);
|
||||||
wpabuf_put_u8(buf, is_zero_ether_addr(wpa_s->conf->hessid) ? 1 :
|
wpabuf_put_u8(buf, is_zero_ether_addr(wpa_s->conf->hessid) ? 1 :
|
||||||
1 + ETH_ALEN);
|
1 + ETH_ALEN);
|
||||||
|
@ -448,11 +435,19 @@ static void wpas_add_interworking_elements(struct wpa_supplicant *wpa_s,
|
||||||
static struct wpabuf * wpa_supplicant_extra_ies(struct wpa_supplicant *wpa_s)
|
static struct wpabuf * wpa_supplicant_extra_ies(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
struct wpabuf *extra_ie = NULL;
|
struct wpabuf *extra_ie = NULL;
|
||||||
|
u8 ext_capab[18];
|
||||||
|
int ext_capab_len;
|
||||||
#ifdef CONFIG_WPS
|
#ifdef CONFIG_WPS
|
||||||
int wps = 0;
|
int wps = 0;
|
||||||
enum wps_request_type req_type = WPS_REQ_ENROLLEE_INFO;
|
enum wps_request_type req_type = WPS_REQ_ENROLLEE_INFO;
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
|
ext_capab_len = wpas_build_ext_capab(wpa_s, ext_capab,
|
||||||
|
sizeof(ext_capab));
|
||||||
|
if (ext_capab_len > 0 &&
|
||||||
|
wpabuf_resize(&extra_ie, ext_capab_len) == 0)
|
||||||
|
wpabuf_put_data(extra_ie, ext_capab, ext_capab_len);
|
||||||
|
|
||||||
#ifdef CONFIG_INTERWORKING
|
#ifdef CONFIG_INTERWORKING
|
||||||
if (wpa_s->conf->interworking &&
|
if (wpa_s->conf->interworking &&
|
||||||
wpabuf_resize(&extra_ie, 100) == 0)
|
wpabuf_resize(&extra_ie, 100) == 0)
|
||||||
|
|
Loading…
Reference in a new issue