aboutsummaryrefslogtreecommitdiff
path: root/wpa_supplicant/wpa_supplicant.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2017-01-30 12:38:13 -0800
committerDmitry Shmidt <dimitrysh@google.com>2017-01-30 12:38:13 -0800
commitbbcc4391bed89e8cd0dd235760cd2983f65721cf (patch)
treeeb364f1616b75a0e00df3dee3287e46ef10281d2 /wpa_supplicant/wpa_supplicant.c
parenta3c43f225ba4767d2d711b355ed85c828f6102a0 (diff)
downloadwpa_supplicant_8-bbcc4391bed89e8cd0dd235760cd2983f65721cf.tar.gz
Cumulative patch from commit a9491695b30a7f750dc45cb563d813b03f1d4b8d
a9491695b QCA vendor command to set/get NUD statistics f593b6c11 nl80211: Do not reset vendor_scan_cookie after scan timeout f2bc34480 wpa_supplicant: Fix global control interface for STA/STA-FIRST/STA-NEXT cc3dae85b hostapd: Add possibility to send debug messages to syslog 0da355235 FST: Remove WPA_ASSERT from wpas_fst_send_action_cb() 968dce9b1 FST: Silence compiler warning on WPA_ASSERT 17e20b1e2 FST: Remove a bogus WPA_ASSERT() 6a5425fd6 Increase delayed EAPOL RX frame timeout cef8fac04 wpa_auth: Make struct wpa_auth_callbacks const 30eddf352 Fix or supress various sparse warnings b301f54e5 IBSS/mesh: Skip VHT channel setup with vht_disabled=1 adc6a5d81 mesh: Check remote peer HT Operation element 9eb5757a8 Define helper function set_disable_ht40() 7813b7c34 nl80211: Fix a memory leak on deinit with HT enabled mesh 6b585f420 mesh: Fix crash on removing virtual mesh interface 5208160b4 FILS: Parse received FILS HLP requests 5732b770f FILS: Allow FILS HLP requests to be added a1aa2aebc Remove unused WLAN_CIPHER_SUITE_* definitions a042e39ac nl80211: Use RSN_CIPHER_SUITE_* instead of WLAN_CIPHER_SUITE_* 2373a3117 Define all RSN_CIPHER_SUITE_* values 89ba101e1 Remove unused WLAN_AKM_SUITE_* definitions bf9f8a052 Use RSN_AUTH_KEY_MGMT_* instead of WLAN_AKM_SUITE_* for wpa_akm_to_suite() 3aa24db95 nl80211: Use RSN_AUTH_KEY_MGMT_* instead of WLAN_AKM_SUITE_* a1343fa6b Remove unnecessary ifdef from RSN_AUTH_KEY_MGMT_* definitions afe731004 Fix CONFIG_SAE build without CONFIG_SME 34e8bfd7a Skip EVENT_ACS_CHANNEL_SELECTED also without CONFIG_AP 510fc2dfc Fix AKM suite selectors for FILS and Suite B d7d0f909f QCA vendor command to carry the reason for power save failure 53b38209f GAS: Cancel gas_query_timeout when AP responds with comeback delay d5bd94133 MBO: Silence a compiler warning when building without CONFIG_MBO 4c4070005 QCA vendor command to enable host driver offload ACS to user space 4d77d80ed mesh: Add MESH_PMKSA_GET/ADD commands 117875db3 D-Bus: Add GroupMgmt entry into the interface Capabilities dict 3cdb4ac07 D-Bus: Add pmf to global capabilities adf8f45f8 D-Bus: Implement Pmf property b98706c14 RSN IBSS: Fix TK clearing on Authentication frame RX fa67debf4 Fix duplicate Reassociation Request frame dropping 6ff92677a wext: Cancel send_rfkill timeout in deinit fcd3d6ce3 FILS: Fix PMK and PMKID derivation from ERP ef495c78d OpenSSL: Implement sha384_vector() a70cd0db8 nl80211: Don't register for Beacon frames for IEEE 802.11ad AP a2aa21a3b Assign additional vendor specific elements for early HE testing f09095d57 wpa_supplicant: Clarify group_rekey documentation c85dfc6f8 nl80211: Set NL80211_ATTR_IFACE_SOCKET_OWNER for connect and associate d07f450da Sync with mac80211-next.git include/uapi/linux/nl80211.h 8f315d050 Fix country code in wpa_supplicant AP mode Country element 29065686a D-Bus: Fix BSS Mode getter for invalid DMG BSS b2442f256 nl80211: Debug prints for TDLS_OPER command and result 2901bc272 bgscan: Remove unnecessary NULL check 9d6eaad6b bgscan: Remove unnecessary NULL check 0f9b4a0f1 bgscan: Deliver beacon loss event to bgscan modules 688556722 nl80211: More complete processing of connection quality monitor events 54736d835 Store FST parameters to configuration file 35c78f7b9 Store osu_dir to configuration file 1f539c78f Store autoscan to configuration file 58ed9e31d Store filter_rssi to configuration file 1fb1bf99d Write sec_device_type to configuration file b4bdeadfa Make "SET" behavior more consistent for dot11RSNA parameters e3394c0e2 Make "SET non_pref_chan .." behavior more consistent f8c201862 Fix cert_in_cb parsing in wpa_supplicant.conf 9284418d0 Fix writing of wpa_supplicant sae_groups configuration parameter 167f78a5e Send BEACON-REQ-TX-STATUS event only for beacon reports 7ba94fc4b RRM: Use wpa_hexdump_buf() instead of wpa_hexdump() e4ec6bbfd nl80211: Register for Link Measurement Report frames in AP mode 33468e532 RRM: Document Link Measurement Report frame construction steps 40e9a3f32 RRM: Fix beacon report scan channels for VHT 80, 80+80, 160 MHz cases 5cda35089 RRM: Move wpabuf_resize() call into wpas_rrm_report_elem() f2058f4af RRM: Remove unnecessary cb check Bug: 34681709 Test: Wifi Suite Change-Id: Ib7ab577a02a9c499ef6e78a222bb93d811f29d36 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'wpa_supplicant/wpa_supplicant.c')
-rw-r--r--wpa_supplicant/wpa_supplicant.c74
1 files changed, 59 insertions, 15 deletions
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index fe14cc8d..abb033d1 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -421,6 +421,19 @@ static void free_bss_tmp_disallowed(struct wpa_supplicant *wpa_s)
}
+void wpas_flush_fils_hlp_req(struct wpa_supplicant *wpa_s)
+{
+ struct fils_hlp_req *req;
+
+ while ((req = dl_list_first(&wpa_s->fils_hlp_req, struct fils_hlp_req,
+ list)) != NULL) {
+ dl_list_del(&req->list);
+ wpabuf_free(req->pkt);
+ os_free(req);
+ }
+}
+
+
static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
{
int i;
@@ -587,6 +600,24 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
wpabuf_free(wpa_s->lci);
wpa_s->lci = NULL;
wpas_clear_beacon_rep_data(wpa_s);
+
+#ifdef CONFIG_PMKSA_CACHE_EXTERNAL
+#ifdef CONFIG_MESH
+ {
+ struct external_pmksa_cache *entry;
+
+ while ((entry = dl_list_last(&wpa_s->mesh_external_pmksa_cache,
+ struct external_pmksa_cache,
+ list)) != NULL) {
+ dl_list_del(&entry->list);
+ os_free(entry->pmksa_cache);
+ os_free(entry);
+ }
+ }
+#endif /* CONFIG_MESH */
+#endif /* CONFIG_PMKSA_CACHE_EXTERNAL */
+
+ wpas_flush_fils_hlp_req(wpa_s);
}
@@ -2041,6 +2072,13 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
vht_freq = *freq;
+#ifdef CONFIG_VHT_OVERRIDES
+ if (ssid->disable_vht) {
+ freq->vht_enabled = 0;
+ return;
+ }
+#endif /* CONFIG_VHT_OVERRIDES */
+
vht_freq.vht_enabled = vht_supported(mode);
if (!vht_freq.vht_enabled)
return;
@@ -3704,6 +3742,7 @@ wpa_supplicant_alloc(struct wpa_supplicant *parent)
wpa_s->sched_scanning = 0;
dl_list_init(&wpa_s->bss_tmp_disallowed);
+ dl_list_init(&wpa_s->fils_hlp_req);
return wpa_s;
}
@@ -3731,8 +3770,11 @@ static int wpa_set_htcap_mcs(struct wpa_supplicant *wpa_s,
wpa_msg(wpa_s, MSG_DEBUG, "set_htcap, ht_mcs -:%s:-", ht_mcs);
for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) {
+ long v;
+
errno = 0;
- long v = strtol(tmp, &end, 16);
+ v = strtol(tmp, &end, 16);
+
if (errno == 0) {
wpa_msg(wpa_s, MSG_DEBUG,
"htcap value[%i]: %ld end: %p tmp: %p",
@@ -3842,18 +3884,10 @@ static int wpa_set_disable_ht40(struct wpa_supplicant *wpa_s,
struct ieee80211_ht_capabilities *htcaps_mask,
int disabled)
{
- /* Masking these out disables HT40 */
- le16 msk = host_to_le16(HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET |
- HT_CAP_INFO_SHORT_GI40MHZ);
-
wpa_msg(wpa_s, MSG_DEBUG, "set_disable_ht40: %d", disabled);
- if (disabled)
- htcaps->ht_capabilities_info &= ~msk;
- else
- htcaps->ht_capabilities_info |= msk;
-
- htcaps_mask->ht_capabilities_info |= msk;
+ set_disable_ht40(htcaps, disabled);
+ set_disable_ht40(htcaps_mask, 0);
return 0;
}
@@ -4129,10 +4163,14 @@ static int wpas_fst_send_action_cb(void *ctx, const u8 *da, struct wpabuf *data)
{
struct wpa_supplicant *wpa_s = ctx;
- WPA_ASSERT(os_memcmp(wpa_s->bssid, da, ETH_ALEN) == 0);
+ if (os_memcmp(wpa_s->bssid, da, ETH_ALEN) != 0) {
+ wpa_printf(MSG_INFO, "FST:%s:bssid=" MACSTR " != da=" MACSTR,
+ __func__, MAC2STR(wpa_s->bssid), MAC2STR(da));
+ return -1;
+ }
return wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, wpa_s->bssid,
- wpa_s->own_addr, wpa_s->bssid,
- wpabuf_head(data), wpabuf_len(data),
+ wpa_s->own_addr, wpa_s->bssid,
+ wpabuf_head(data), wpabuf_len(data),
0);
}
@@ -4978,6 +5016,12 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
if (wpa_bss_init(wpa_s) < 0)
return -1;
+#ifdef CONFIG_PMKSA_CACHE_EXTERNAL
+#ifdef CONFIG_MESH
+ dl_list_init(&wpa_s->mesh_external_pmksa_cache);
+#endif /* CONFIG_MESH */
+#endif /* CONFIG_PMKSA_CACHE_EXTERNAL */
+
/*
* Set Wake-on-WLAN triggers, if configured.
* Note: We don't restore/remove the triggers on shutdown (it doesn't
@@ -5316,7 +5360,7 @@ int wpa_supplicant_remove_iface(struct wpa_global *global,
#ifdef CONFIG_MESH
if (mesh_if_created) {
- wpa_drv_if_remove(global->ifaces, WPA_IF_MESH, ifname);
+ wpa_drv_if_remove(wpa_s->parent, WPA_IF_MESH, ifname);
os_free(ifname);
}
#endif /* CONFIG_MESH */