aboutsummaryrefslogtreecommitdiffstats
path: root/src/wps
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2011-05-16 18:35:42 +0300
committerDmitry Shmidt <dimitrysh@google.com>2011-05-24 15:58:05 -0700
commit87fd279308af3f806848c8f2ab65ef18c6ac4c30 (patch)
tree0bd20d56a780a19f210bca634500e8f5f66f52e2 /src/wps
parent29991f40caccd6c45cd7c56ca597f370a4f2b9eb (diff)
downloadexternal_wpa_supplicant_8-87fd279308af3f806848c8f2ab65ef18c6ac4c30.zip
external_wpa_supplicant_8-87fd279308af3f806848c8f2ab65ef18c6ac4c30.tar.gz
external_wpa_supplicant_8-87fd279308af3f806848c8f2ab65ef18c6ac4c30.tar.bz2
Accumulative patch from commit 6d28fb9627155929012cda944aacd5a52ce7051a
nl80211: Fetch assoc_freq from scan table for connect event nl80211: Filter out duplicated BSS table entries from scan results Update BSS table entry if roaming event indicates frequency change WPS: Remove obsolete note about lack for WPS ER support P2P: Include operating class 124 (channels 149,153,157,161) Include nl80211 driver wrapper in default configuration for hostapd Better messages when channel cannot be used in AP mode WPS: Add a workaround for Windows 7 capability discovery for PBC WPS UPnP: Fix UPnP initialization for non-bridge case with some drivers Fix regression in RSN pre-authentication candidate list generation commit 6d28fb9627155929012cda944aacd5a52ce7051a Change-Id: I3c68dad5fe323b1d86aa585c564a75e4fc1a2ea1
Diffstat (limited to 'src/wps')
-rw-r--r--src/wps/wps.c1
-rw-r--r--src/wps/wps.h8
-rw-r--r--src/wps/wps_enrollee.c9
-rw-r--r--src/wps/wps_i.h1
4 files changed, 18 insertions, 1 deletions
diff --git a/src/wps/wps.c b/src/wps/wps.c
index 7564d60..5c8c25f 100644
--- a/src/wps/wps.c
+++ b/src/wps/wps.c
@@ -113,6 +113,7 @@ struct wps_data * wps_init(const struct wps_config *cfg)
os_memcpy(data->p2p_dev_addr, cfg->p2p_dev_addr, ETH_ALEN);
data->use_psk_key = cfg->use_psk_key;
+ data->pbc_in_m1 = cfg->pbc_in_m1;
return data;
}
diff --git a/src/wps/wps.h b/src/wps/wps.h
index 918273d..3e4c218 100644
--- a/src/wps/wps.h
+++ b/src/wps/wps.h
@@ -187,6 +187,14 @@ struct wps_config {
* to %NULL to indicate the station does not have a P2P Device Address.
*/
const u8 *p2p_dev_addr;
+
+ /**
+ * pbc_in_m1 - Do not remove PushButton config method in M1 (AP)
+ *
+ * This can be used to enable a workaround to allow Windows 7 to use
+ * PBC with the AP.
+ */
+ int pbc_in_m1;
};
struct wps_data * wps_init(const struct wps_config *cfg);
diff --git a/src/wps/wps_enrollee.c b/src/wps/wps_enrollee.c
index 390254e..5b3c045 100644
--- a/src/wps/wps_enrollee.c
+++ b/src/wps/wps_enrollee.c
@@ -133,10 +133,17 @@ static struct wpabuf * wps_build_m1(struct wps_data *wps)
return NULL;
config_methods = wps->wps->config_methods;
- if (wps->wps->ap) {
+ if (wps->wps->ap && !wps->pbc_in_m1 &&
+ (wps->dev_password_len != 0 ||
+ (config_methods & WPS_CONFIG_DISPLAY))) {
/*
* These are the methods that the AP supports as an Enrollee
* for adding external Registrars, so remove PushButton.
+ *
+ * As a workaround for Windows 7 mechanism for probing WPS
+ * capabilities from M1, leave PushButton option if no PIN
+ * method is available or if WPS configuration enables PBC
+ * workaround.
*/
config_methods &= ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
diff --git a/src/wps/wps_i.h b/src/wps/wps_i.h
index 437999b..bdb6da2 100644
--- a/src/wps/wps_i.h
+++ b/src/wps/wps_i.h
@@ -119,6 +119,7 @@ struct wps_data {
int use_psk_key;
u8 p2p_dev_addr[ETH_ALEN]; /* P2P Device Address of the client or
* 00:00:00:00:00:00 if not a P2p client */
+ int pbc_in_m1;
};