aboutsummaryrefslogtreecommitdiff
path: root/src/p2p/p2p.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2016-03-03 10:20:07 -0800
committerDmitry Shmidt <dimitrysh@google.com>2016-03-03 10:20:07 -0800
commit9c17526f86859e2b6aebac0ed4f2561601816103 (patch)
treec4344a4dd6bcdfcc21068c6df95d590e6bca12f6 /src/p2p/p2p.c
parent57c2d39d85825f38c5fdac9b73bb0088406ffc85 (diff)
downloadwpa_supplicant_8-9c17526f86859e2b6aebac0ed4f2561601816103.tar.gz
Cumulative patch from commit 12c1fdf19a721aaf29e1c77d63445c7f5b8c61c0
12c1fdf P2P: Update peer listen channel from Probe Request frames a805731 P2P: Abort ongoing scan when p2p_find is stopped 7441698 nl80211: Abort an ongoing scan upon scan timeout indication 1446afc wpa_supplicant: Handle EVENT_SCAN_RESULTS when an interface is disabled d14e63a WNM: Do not scan based on malformed BSS Transition Management Request f420577 WNM: Fix candidates count in BSS Transition Management Request 3c58df7 wpa_cli: Support running action script on global control interface b8f02d8 EAP-PWD peer: Fix possible memory leak on error path 8f38eed Android: Remove superfluous OpenSSL include paths cbf8d18 HS 2.0R2: Clear fetch_anqp_in_progress if fopen fails 4a6e9e5 Fix CONFIG_WPA_TRACE=y compilation without CONFIG_WPA_TRACE_BFD=y 2bf9a53 Add EAP-AKA' and EAP-pwd to wpa_supplicant README 4196c08 Update notes about OpenSSL versions 5d7b1a3 Fix some typos in wpa_supplicant README files 4194fee README-P2P: Fix a typo c58eed6 P2P: Add Dev Info attribute to Probe Request frames in 60 GHz 2b6e9f9 wpa_supplicant: Expose wpas_get_bands() and related API 94ad3c3 P2P: Change order of P2P IE and frequencies set up 61697c7 Android: Allow wpa_supplicant to write files to osu-info dir 0147afa FST: Enlarge State Transition Timeout (STT) e1d00d4 Add error handling for offloaded ACS with vendor command failures bef5e9a Fix scan rescheduling from wpas_stop_pno to check postponed case b9ca12a nl80211: Add more address fields into RX frame debug message debde14 RADIUS: Add Acct-Delay-Time into accounting messages 669b532 RADIUS: Update full message for interim accounting updates 251953b Document nas_identifier requirements for RADIUS accounting 902c07a Replace hostapd_mac_comp_empty() with is_zero_ether_addr() 5aef495 VLAN: Avoid use of libnl cache 732b1d2 nl80211: Clean up ifidx properly if interface in a bridge is removed 170c545 FT: Check destination MAC address on RRB receive 57b2c91 RADIUS: Allow RADIUS server to provide PSK instead of passphrase d8912fd Cache hashed passphrase in RADIUS-based PSK delivery f8e09bc Defer passphrase-to-PSK hashing out of 802.11 authentication ACL check cc9c805 VLAN: Use stack instead of heap allocation for new interface name d48d1b8 FT: Use BSSID as r1_key_holder if no value is configured 71456db FT: Check hapd->wpa_auth before RRB internal delivery 0270bde FT: Fix R0KH-R1KH protocol data length values 96a26ab P2P: Support dedicated P2P_DEVICE without separate group interface ba307f8 P2P: Add a separate pointer to the P2P Device instance e040197 GAS client: Make PMF check on RX more consistent 0645492 WNM: Optimize a single BSS transition management candidate scan eb20cea nl80211: Add an option to specify the BSSID to scan for adf0478 AP: Store STA supported operating classes information Change-Id: If0ce28aae5591be783c38e5b60f7f9ff0fb9f8f2 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/p2p/p2p.c')
-rw-r--r--src/p2p/p2p.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index d28b4cd2..6942c851 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -10,6 +10,7 @@
#include "common.h"
#include "eloop.h"
+#include "common/defs.h"
#include "common/ieee802_11_defs.h"
#include "common/ieee802_11_common.h"
#include "common/wpa_ctrl.h"
@@ -2034,8 +2035,23 @@ static void p2p_add_dev_from_probe_req(struct p2p_data *p2p, const u8 *addr,
dev = p2p_get_device(p2p, addr);
if (dev) {
- if (dev->country[0] == 0 && msg.listen_channel)
- os_memcpy(dev->country, msg.listen_channel, 3);
+ if (msg.listen_channel) {
+ int freq;
+
+ if (dev->country[0] == 0)
+ os_memcpy(dev->country, msg.listen_channel, 3);
+
+ freq = p2p_channel_to_freq(msg.listen_channel[3],
+ msg.listen_channel[4]);
+
+ if (freq > 0 && dev->listen_freq != freq) {
+ p2p_dbg(p2p,
+ "Updated peer " MACSTR " Listen channel (Probe Request): %d -> %d MHz",
+ MAC2STR(addr), dev->listen_freq, freq);
+ dev->listen_freq = freq;
+ }
+ }
+
os_get_reltime(&dev->last_seen);
p2p_parse_free(&msg);
return; /* already known */
@@ -3494,7 +3510,8 @@ void p2p_scan_res_handled(struct p2p_data *p2p)
}
-void p2p_scan_ie(struct p2p_data *p2p, struct wpabuf *ies, const u8 *dev_id)
+void p2p_scan_ie(struct p2p_data *p2p, struct wpabuf *ies, const u8 *dev_id,
+ unsigned int bands)
{
u8 dev_capab;
u8 *len;
@@ -3528,6 +3545,9 @@ void p2p_scan_ie(struct p2p_data *p2p, struct wpabuf *ies, const u8 *dev_id)
p2p_buf_add_ext_listen_timing(ies, p2p->ext_listen_period,
p2p->ext_listen_interval);
+ if (bands & BAND_60_GHZ)
+ p2p_buf_add_device_info(ies, p2p, NULL);
+
if (p2p->p2ps_seek && p2p->p2ps_seek_count)
p2p_buf_add_service_hash(ies, p2p);