summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-12-12 17:01:27 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-12-12 17:03:15 +0530
commitdf41c7bcd89636b9fb09f1b7b6427c8f0978db4b (patch)
treef2b650194abe012d00ab35006aa879603a79789e
parentac9f925d6b033e37c430b9896569bd3299c2b796 (diff)
parent22a51071d48e551e98ef6d2695b861042e06fede (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.c27
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c6
-rw-r--r--CORE/HDD/src/wlan_hdd_ipa.c8
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/SERVICES/WMA/wma.c2
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;
}