aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2011-07-17 20:25:58 +0300
committerKeith Deacon <kdeacon@ti.com>2011-11-15 20:45:50 -0600
commitcced3c997f3dbafe01726ac06c7d6da8a80b2860 (patch)
tree4c05c3ed6ea8fb1e07d5ddd3658e97b227a9ee72
parentff179108b3717a45b47c08458442bc64b7ae01e8 (diff)
downloadandroid_external_wpa_supplicant_8-cced3c997f3dbafe01726ac06c7d6da8a80b2860.tar.gz
android_external_wpa_supplicant_8-cced3c997f3dbafe01726ac06c7d6da8a80b2860.tar.bz2
android_external_wpa_supplicant_8-cced3c997f3dbafe01726ac06c7d6da8a80b2860.zip
nl80211: Change vif type to P2P_CLI upon P2P authentication
Currently, wpa_driver_nl80211_authenticate() changes the interface type to station. However, in case of P2P, we need to change the interface type to P2P_CLI. Add p2p field to the authentication params, and consider it for choosing the correct interface type. Change-Id: I966dad522bbc09c170416b1e35056d97d3b7e7b1 Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Vishal Mahaveer <a0271468@ti.com>
-rw-r--r--src/drivers/driver.h6
-rw-r--r--src/drivers/driver_nl80211.c7
-rw-r--r--wpa_supplicant/sme.c1
3 files changed, 12 insertions, 2 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index f475a3bd..19a98b73 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -299,6 +299,12 @@ struct wpa_driver_auth_params {
size_t wep_key_len[4];
int wep_tx_keyidx;
int local_state_change;
+
+ /**
+ * p2p - Whether this connection is a P2P group
+ */
+ int p2p;
+
};
enum wps_mode {
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 8ed9522c..5c667ec6 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3197,13 +3197,16 @@ static int wpa_driver_nl80211_authenticate(
int ret = -1, i;
struct nl_msg *msg;
enum nl80211_auth_type type;
+ enum nl80211_iftype nlmode;
int count = 0;
drv->associated = 0;
os_memset(drv->auth_bssid, 0, ETH_ALEN);
/* FIX: IBSS mode */
- if (drv->nlmode != NL80211_IFTYPE_STATION &&
- wpa_driver_nl80211_set_mode(priv, NL80211_IFTYPE_STATION) < 0)
+ nlmode = params->p2p ?
+ NL80211_IFTYPE_P2P_CLIENT : NL80211_IFTYPE_STATION;
+ if (drv->nlmode != nlmode &&
+ wpa_driver_nl80211_set_mode(priv, nlmode) < 0)
return -1;
retry:
diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index 325ffc55..86d6b6a3 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -72,6 +72,7 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
params.bssid = bss->bssid;
params.ssid = bss->ssid;
params.ssid_len = bss->ssid_len;
+ params.p2p = ssid->p2p_group;
if (wpa_s->sme.ssid_len != params.ssid_len ||
os_memcmp(wpa_s->sme.ssid, params.ssid, params.ssid_len) != 0)