diff options
| author | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-12-12 17:01:27 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-12-12 17:03:15 +0530 |
| commit | df41c7bcd89636b9fb09f1b7b6427c8f0978db4b (patch) | |
| tree | f2b650194abe012d00ab35006aa879603a79789e | |
| parent | ac9f925d6b033e37c430b9896569bd3299c2b796 (diff) | |
| parent | 22a51071d48e551e98ef6d2695b861042e06fede (diff) | |
Release 1.0.0.255 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master:
Cafstaging Release 1.0.0.255
qcacld HDD: Wait Deauth response for sta deletion
qcacld: Featurize Intra BSS Forwarding Offload
qcacld:IPA uC: Handle duplicate WLAN_AP_CONNECT event after CAC
Change-Id: Ie0aad190dbed0866e7ae47bb1da61241f132362c
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 27 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 6 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_ipa.c | 8 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 2 |
5 files changed, 43 insertions, 4 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 63a35cda5ae9..e940f194d8e9 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -12967,7 +12967,8 @@ static int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy, { hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev); hdd_context_t *pHddCtx; - VOS_STATUS vos_status; + VOS_STATUS vos_status = VOS_STATUS_E_FAILURE; + hdd_hostapd_state_t *pHostapdState; int status; v_U8_t staId; @@ -12987,6 +12988,14 @@ static int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy, if ((WLAN_HDD_SOFTAP == pAdapter->device_mode) || (WLAN_HDD_P2P_GO == pAdapter->device_mode)) { + + pHostapdState = WLAN_HDD_GET_HOSTAP_STATE_PTR(pAdapter); + if (!pHostapdState) { + hddLog(VOS_TRACE_LEVEL_FATAL, + "%s: pHostapdState is Null", __func__); + return 0; + } + if (vos_is_macaddr_broadcast((v_MACADDR_t *)pDelStaParams->peerMacAddr)) { v_U16_t i; @@ -13008,11 +13017,18 @@ static int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy, MAC_ADDR_ARRAY(pDelStaParams->peerMacAddr)); /* Send disassoc and deauth both to avoid some IOT issues */ + vos_event_reset(&pHostapdState->vosEvent); hdd_softap_sta_disassoc(pAdapter, pDelStaParams->peerMacAddr); vos_status = hdd_softap_sta_deauth(pAdapter, pDelStaParams); - if (VOS_IS_STATUS_SUCCESS(vos_status)) + if (VOS_IS_STATUS_SUCCESS(vos_status)) { pAdapter->aStaInfo[i].isDeauthInProgress = TRUE; + vos_status = vos_wait_single_event( + &pHostapdState->vosEvent, 1000); + if (!VOS_IS_STATUS_SUCCESS(vos_status)) + hddLog(VOS_TRACE_LEVEL_ERROR, + "!!%s: ERROR: Deauth wait expired!!", __func__); + } } } } else { @@ -13047,6 +13063,7 @@ static int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy, MAC_ADDR_ARRAY(pDelStaParams->peerMacAddr)); /* Send disassoc and deauth both to avoid some IOT issues */ + vos_event_reset(&pHostapdState->vosEvent); hdd_softap_sta_disassoc(pAdapter, pDelStaParams->peerMacAddr); vos_status = hdd_softap_sta_deauth(pAdapter, pDelStaParams); if (!VOS_IS_STATUS_SUCCESS(vos_status)) { @@ -13055,6 +13072,12 @@ static int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy, FL("STA removal failed for ::"MAC_ADDRESS_STR), MAC_ADDR_ARRAY(pDelStaParams->peerMacAddr)); return -ENOENT; + } else { + vos_status = vos_wait_single_event(&pHostapdState->vosEvent, + 1000); + if (!VOS_IS_STATUS_SUCCESS(vos_status)) + hddLog(VOS_TRACE_LEVEL_ERROR, + "!!%s: ERROR: Deauth wait expired!!", __func__); } } } diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index 8cacebe05e52..9e4a1adfc8e7 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -1303,6 +1303,12 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa memcpy(wrqu.addr.sa_data, &pSapEvent->sapevt.sapStationDisassocCompleteEvent.staMac, sizeof(v_MACADDR_t)); hddLog(LOG1, " disassociated "MAC_ADDRESS_STR, MAC_ADDR_ARRAY(wrqu.addr.sa_data)); + + vos_status = vos_event_set(&pHostapdState->vosEvent); + if (!VOS_IS_STATUS_SUCCESS(vos_status)) + hddLog(VOS_TRACE_LEVEL_ERROR, + "ERROR: Station deauth event reporting failed!!"); + if (pSapEvent->sapevt.sapStationDisassocCompleteEvent.reason == eSAP_USR_INITATED_DISASSOC) hddLog(LOG1," User initiated disassociation"); else diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c index e7f0a6a4cd24..34c30deba25b 100644 --- a/CORE/HDD/src/wlan_hdd_ipa.c +++ b/CORE/HDD/src/wlan_hdd_ipa.c @@ -2815,6 +2815,14 @@ static void hdd_ipa_uc_offload_enable_disable(hdd_adapter_t *adapter, { struct sir_ipa_offload_enable_disable ipa_offload_enable_disable; + /* Lower layer may send multiple START_BSS_EVENT in DFS mode or during + * channel change indication. Since these indications are sent by lower + * layer as SAP updates and IPA doesn't have to do anything for these + * updates so ignoring! + */ + if (WLAN_HDD_SOFTAP == adapter->device_mode && adapter->ipa_context) + return; + vos_mem_zero(&ipa_offload_enable_disable, sizeof(ipa_offload_enable_disable)); ipa_offload_enable_disable.offload_type = offload_type; diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index f120a4ee8fa3..1354908e68a2 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 254 +#define QWLAN_VERSION_BUILD 255 -#define QWLAN_VERSIONSTR "1.0.0.254" +#define QWLAN_VERSIONSTR "1.0.0.255" #define AR6320_REV1_VERSION 0x5000000 diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 60cf29b0835b..3cdeb0d478d9 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -22162,6 +22162,7 @@ VOS_STATUS wma_ipa_offload_enable_disable(tp_wma_handle wma, return VOS_STATUS_E_FAILURE; } +#ifdef INTRA_BSS_FWD_OFFLOAD /* Disable/enable WMI_VDEV_PARAM_INTRA_BSS_FWD */ if (wmi_unified_vdev_set_param_send(wma->wmi_handle, ipa_offload->vdev_id, WMI_VDEV_PARAM_INTRA_BSS_FWD, @@ -22169,6 +22170,7 @@ VOS_STATUS wma_ipa_offload_enable_disable(tp_wma_handle wma, WMA_LOGE("Failed to disable WMI_VDEV_PARAM_INTRA_BSS_FWD"); return VOS_STATUS_E_FAILURE; } +#endif return VOS_STATUS_SUCCESS; } |
