diff options
| author | Archana Ramachandran <archanar@codeaurora.org> | 2016-11-08 16:36:50 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-18 17:02:23 -0800 |
| commit | 3397b3e506eca89f6d342a353575f575d7e293bd (patch) | |
| tree | d7437cb045f7809f3c336be2a18997d0a62bfaa3 | |
| parent | 6bb508dc09eb3f471fb553619a479f8018265914 (diff) | |
qcacld-3.0: Allow beacon/probe resp update in the middle of p2p connection
Once P2P GO has started, supplicant will update the beacon/probe
response template to include the p2p group information. Host driver
is currenlty igonoring this since the 4-way handshake is not completed.
Due to this the beacon/probe response from the P2P GO is not including
the p2p group information sub-element.
Change-Id: Id645f7fdccbb59e6bf6c77dd73bdbb1c6bf47dcb
CRs-Fixed: 1087513
| -rw-r--r-- | core/hdd/inc/wlan_hdd_main.h | 3 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 2 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_hostapd.c | 13 |
3 files changed, 12 insertions, 6 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 4310755e6a46..c0b37f9879e5 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1811,7 +1811,8 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, struct cfg80211_beacon_data *params, const u8 *ssid, size_t ssid_len, enum nl80211_hidden_ssid hidden_ssid, - bool check_for_concurrency); + bool check_for_concurrency, + bool update_beacon); #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH QDF_STATUS hdd_register_for_sap_restart_with_channel_switch(void); #else diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 73ed5d764623..b4cede925f2e 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -7004,7 +7004,7 @@ int wlan_hdd_request_pre_cac(uint8_t channel) status = wlan_hdd_cfg80211_start_bss(pre_cac_adapter, NULL, PRE_CAC_SSID, qdf_str_len(PRE_CAC_SSID), - eHIDDEN_SSID_NOT_IN_USE, false); + eHIDDEN_SSID_NOT_IN_USE, false, false); if (QDF_IS_STATUS_ERROR(status)) { hdd_err("start bss failed"); goto stop_close_pre_cac_adapter; diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 211aae29cf4e..2f2746951e51 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -7067,7 +7067,8 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, struct cfg80211_beacon_data *params, const u8 *ssid, size_t ssid_len, enum nl80211_hidden_ssid hidden_ssid, - bool check_for_concurrency) + bool check_for_concurrency, + bool update_beacon) { tsap_Config_t *pConfig; beacon_data_t *pBeacon = NULL; @@ -7094,7 +7095,7 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, ENTER(); - if (cds_is_connection_in_progress()) { + if (!update_beacon && cds_is_connection_in_progress()) { hdd_err("Can't start BSS: connection is in progress"); return -EINVAL; } @@ -8083,7 +8084,7 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy, wlan_hdd_cfg80211_start_bss(pAdapter, ¶ms->beacon, params->ssid, params->ssid_len, - params->hidden_ssid, true); + params->hidden_ssid, true, false); if (pHddCtx->config->sap_max_inactivity_override) { sta_inactivity_timer = qdf_mem_malloc( @@ -8141,6 +8142,7 @@ static int __wlan_hdd_cfg80211_change_beacon(struct wiphy *wiphy, hdd_context_t *pHddCtx; beacon_data_t *old, *new; int status; + bool update_beacon; ENTER(); @@ -8188,8 +8190,11 @@ static int __wlan_hdd_cfg80211_change_beacon(struct wiphy *wiphy, } pAdapter->sessionCtx.ap.beacon = new; + update_beacon = (pAdapter->device_mode == + QDF_P2P_GO_MODE) ? true : false; + hdd_info("update beacon for P2P GO: %d", update_beacon); status = wlan_hdd_cfg80211_start_bss(pAdapter, params, NULL, - 0, 0, true); + 0, 0, false, update_beacon); EXIT(); return status; |
