diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-05-02 03:12:50 -0600 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2016-05-02 03:12:50 -0600 |
| commit | 93d4f498bb3784fcaa522760ea4349252f0c5c5e (patch) | |
| tree | 3cdc6a36eb34b3ea5310af6e64a48df1566c1b52 | |
| parent | 3d2a7ed7f3f42488158e67da26a13a020af4ff2f (diff) | |
| parent | 665a9b8282d48fe4dd4c7fa6d644078028fa7deb (diff) | |
| download | android_external_wpa_supplicant_8-93d4f498bb3784fcaa522760ea4349252f0c5c5e.tar.gz android_external_wpa_supplicant_8-93d4f498bb3784fcaa522760ea4349252f0c5c5e.tar.bz2 android_external_wpa_supplicant_8-93d4f498bb3784fcaa522760ea4349252f0c5c5e.zip | |
Promotion of wlan-service.lnx.1.0-00043.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
985990 I3091fd41b1810adb9aa06242de5ee6498f573bdf wpa_supplicant: "don't care" value for pbss in ssid stru
985990 I8a8773d60adb4c69dc723281737a378b9dc7dd6e P2P: Trigger event when invitation is accepted
Change-Id: I1d4c2b7859ea6f4b09eac1f9427f42d94a3eb075
CRs-Fixed: 985990
| -rw-r--r-- | src/common/wpa_ctrl.h | 1 | ||||
| -rw-r--r-- | wpa_supplicant/ap.c | 9 | ||||
| -rw-r--r-- | wpa_supplicant/config.c | 2 | ||||
| -rw-r--r-- | wpa_supplicant/config_ssid.h | 8 | ||||
| -rw-r--r-- | wpa_supplicant/events.c | 2 | ||||
| -rw-r--r-- | wpa_supplicant/p2p_supplicant.c | 19 | ||||
| -rw-r--r-- | wpa_supplicant/wpa_supplicant.c | 2 | ||||
| -rw-r--r-- | wpa_supplicant/wpa_supplicant.conf | 8 | ||||
| -rw-r--r-- | wpa_supplicant/wps_supplicant.c | 14 |
9 files changed, 56 insertions, 9 deletions
diff --git a/src/common/wpa_ctrl.h b/src/common/wpa_ctrl.h index d93e37b3..a36ba21e 100644 --- a/src/common/wpa_ctrl.h +++ b/src/common/wpa_ctrl.h @@ -185,6 +185,7 @@ extern "C" { #define P2P_EVENT_SERV_ASP_RESP "P2P-SERV-ASP-RESP " #define P2P_EVENT_INVITATION_RECEIVED "P2P-INVITATION-RECEIVED " #define P2P_EVENT_INVITATION_RESULT "P2P-INVITATION-RESULT " +#define P2P_EVENT_INVITATION_ACCEPTED "P2P-INVITATION-ACCEPTED " #define P2P_EVENT_FIND_STOPPED "P2P-FIND-STOPPED " #define P2P_EVENT_PERSISTENT_PSK_FAIL "P2P-PERSISTENT-PSK-FAIL id=" #define P2P_EVENT_PRESENCE_RESPONSE "P2P-PRESENCE-RESPONSE " diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c index 540c9c8d..419bd893 100644 --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c @@ -184,6 +184,13 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s, return -1; } + if (ssid->pbss > 1) { + wpa_printf(MSG_ERROR, "Invalid pbss value(%d) for AP mode", + ssid->pbss); + return -1; + } + bss->pbss = ssid->pbss; + wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); if (ieee80211_is_dfs(ssid->frequency) && wpa_s->conf->country[0]) { @@ -413,8 +420,6 @@ no_wps: wpabuf_dup(wpa_s->conf->ap_vendor_elements); } - bss->pbss = ssid->pbss; - return 0; } diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c index 1e514694..b736394a 100644 --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c @@ -1969,7 +1969,7 @@ static const struct parse_data ssid_fields[] = { { INT(update_identifier) }, #endif /* CONFIG_HS20 */ { INT_RANGE(mac_addr, 0, 2) }, - { INT_RANGE(pbss, 0, 1) }, + { INT_RANGE(pbss, 0, 2) }, }; #undef OFFSET diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h index 207e8c93..ca4220d3 100644 --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h @@ -359,10 +359,14 @@ struct wpa_ssid { /** * pbss - Whether to use PBSS. Relevant to DMG networks only. + * 0 = do not use PBSS + * 1 = use PBSS + * 2 = don't care (not allowed in AP mode) * Used together with mode configuration. When mode is AP, it * means to start a PCP instead of a regular AP. When mode is INFRA it - * means connect to a PCP instead of AP. P2P_GO and P2P_GROUP_FORMATION - * modes must use PBSS in DMG network. + * means connect to a PCP instead of AP. In this mode you can also + * specify 2 (don't care) meaning connect to either AP or PCP. + * P2P_GO and P2P_GROUP_FORMATION modes must use PBSS in DMG network. */ int pbss; diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index 7af5ac8b..cfc8350d 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -987,7 +987,7 @@ static struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s, continue; } - if (ssid->pbss != bss_is_pbss(bss)) { + if (ssid->pbss != 2 && ssid->pbss != bss_is_pbss(bss)) { wpa_dbg(wpa_s, MSG_DEBUG, " skip - PBSS mismatch (ssid %d bss %d)", ssid->pbss, bss_is_pbss(bss)); continue; diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 3f5d7fe8..27aa2f9e 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -2839,12 +2839,31 @@ static void wpas_invitation_received(void *ctx, const u8 *sa, const u8 *bssid, MAC2STR(sa), op_freq, wpa_ssid_txt(ssid, ssid_len)); if (s) { int go = s->mode == WPAS_MODE_P2P_GO; + if (go) { + wpa_msg_global(wpa_s, MSG_INFO, + P2P_EVENT_INVITATION_ACCEPTED + "sa=" MACSTR + " persistent=%d freq=%d", + MAC2STR(sa), s->id, op_freq); + } else { + wpa_msg_global(wpa_s, MSG_INFO, + P2P_EVENT_INVITATION_ACCEPTED + "sa=" MACSTR + " persistent=%d", + MAC2STR(sa), s->id); + } wpas_p2p_group_add_persistent( wpa_s, s, go, 0, op_freq, 0, 0, 0, 0, NULL, go ? P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE : 0, 1); } else if (bssid) { wpa_s->user_initiated_pd = 0; + wpa_msg_global(wpa_s, MSG_INFO, + P2P_EVENT_INVITATION_ACCEPTED + "sa=" MACSTR " go_dev_addr=" MACSTR + " bssid=" MACSTR " unknown-network", + MAC2STR(sa), MAC2STR(go_dev_addr), + MAC2STR(bssid)); wpas_p2p_join(wpa_s, bssid, go_dev_addr, wpa_s->p2p_wps_method, 0, op_freq, ssid, ssid_len); diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 7ed09305..7852268a 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -2300,7 +2300,7 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit) } else { params.ssid = ssid->ssid; params.ssid_len = ssid->ssid_len; - params.pbss = ssid->pbss; + params.pbss = (ssid->pbss != 2) ? ssid->pbss : 0; } if (ssid->mode == WPAS_MODE_IBSS && ssid->bssid_set && diff --git a/wpa_supplicant/wpa_supplicant.conf b/wpa_supplicant/wpa_supplicant.conf index 47bd9d6e..af6684be 100644 --- a/wpa_supplicant/wpa_supplicant.conf +++ b/wpa_supplicant/wpa_supplicant.conf @@ -655,10 +655,14 @@ fast_reauth=1 # the network will be used instead of this configured value. # # pbss: Whether to use PBSS. Relevant to IEEE 802.11ad networks only. +# 0 = do not use PBSS +# 1 = use PBSS +# 2 = don't care (not allowed in AP mode) # Used together with mode configuration. When mode is AP, it means to start a # PCP instead of a regular AP. When mode is infrastructure it means connect -# to a PCP instead of AP. P2P_GO and P2P_GROUP_FORMATION modes must use PBSS -# in IEEE 802.11ad network. +# to a PCP instead of AP. In this mode you can also specify 2 (don't care) +# which means connect to either PCP or AP. +# P2P_GO and P2P_GROUP_FORMATION modes must use PBSS in IEEE 802.11ad network. # For more details, see IEEE Std 802.11ad-2012. # # scan_freq: List of frequencies to scan diff --git a/wpa_supplicant/wps_supplicant.c b/wpa_supplicant/wps_supplicant.c index a07ee42f..09a3c054 100644 --- a/wpa_supplicant/wps_supplicant.c +++ b/wpa_supplicant/wps_supplicant.c @@ -1130,6 +1130,13 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid, return -1; ssid->temporary = 1; ssid->p2p_group = p2p_group; + /* + * When starting a regular WPS process (not P2P group formation) + * the registrar/final station can be either AP or PCP + * so use a "don't care" value for the pbss flag. + */ + if (!p2p_group) + ssid->pbss = 2; #ifdef CONFIG_P2P if (p2p_group && wpa_s->go_params && wpa_s->go_params->ssid_len) { ssid->ssid = os_zalloc(wpa_s->go_params->ssid_len + 1); @@ -1185,6 +1192,13 @@ static int wpas_wps_start_dev_pw(struct wpa_supplicant *wpa_s, } ssid->temporary = 1; ssid->p2p_group = p2p_group; + /* + * When starting a regular WPS process (not P2P group formation) + * the registrar/final station can be either AP or PCP + * so use a "don't care" value for the pbss flag. + */ + if (!p2p_group) + ssid->pbss = 2; if (ssid_val) { ssid->ssid = os_malloc(ssid_len); if (ssid->ssid) { |
