diff options
| author | Eliad Peller <eliad@wizery.com> | 2011-07-17 20:25:58 +0300 |
|---|---|---|
| committer | Keith Deacon <kdeacon@ti.com> | 2011-11-15 20:45:50 -0600 |
| commit | cced3c997f3dbafe01726ac06c7d6da8a80b2860 (patch) | |
| tree | 4c05c3ed6ea8fb1e07d5ddd3658e97b227a9ee72 | |
| parent | ff179108b3717a45b47c08458442bc64b7ae01e8 (diff) | |
| download | android_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.h | 6 | ||||
| -rw-r--r-- | src/drivers/driver_nl80211.c | 7 | ||||
| -rw-r--r-- | wpa_supplicant/sme.c | 1 |
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) |
