summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-07-24 17:03:17 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-07-24 17:03:17 -0700
commit17e2bec8ce77fdce735eb5f95257f1ba2f198340 (patch)
treef2d6e7db500363aea57ee26942265f20fee6d643
parent6cd947a5a8163b983a9a631bf722c6eccdc534ea (diff)
parent5f3a77e2e9cd536316573e071c5772928e551e15 (diff)
Merge "Release 1.0.0.151 QCACLD WLAN Driver"
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h2
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c13
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c12
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c49
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/inc/sirApi.h12
-rw-r--r--CORE/MAC/inc/wniApi.h3
-rw-r--r--CORE/MAC/src/include/sirParams.h3
-rw-r--r--CORE/MAC/src/pe/lim/limFT.c8
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c7
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c12
-rw-r--r--CORE/SERVICES/WMA/wma.c317
-rw-r--r--CORE/SERVICES/WMA/wma.h4
-rw-r--r--CORE/SME/inc/smeInternal.h3
-rw-r--r--CORE/SME/inc/sme_Api.h21
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c16
-rw-r--r--CORE/SME/src/csr/csrApiScan.c8
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c95
-rw-r--r--CORE/SYS/legacy/src/system/src/sysEntryFunc.c27
-rw-r--r--CORE/SYS/legacy/src/utils/src/macTrace.c3
-rw-r--r--CORE/WDA/inc/wlan_qct_wda.h4
22 files changed, 466 insertions, 160 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index d4a3768b6211..0a3e2aeae6bb 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -3319,8 +3319,6 @@ typedef struct mbssid_sap_dyn_ini_config {
char acsAllowedChnls[CFG_MAX_STR_LEN];
v_U8_t acsScanBandPreference;
v_U16_t acsBandSwitchThreshold;
- /* SAP HW Mode*/
- eHddDot11Mode sapDot11Mode;
} mbssid_sap_dyn_ini_config_t;
#endif
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 043865663dbd..efff5a17b052 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1507,9 +1507,6 @@ struct hdd_context_s
tSirScanType ioctl_scan_mode;
-#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
- vos_timer_t hdd_wlan_shutdown_timer;
-#endif
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
adf_os_work_t sta_ap_intf_check_work;
#endif
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index ec95067de29c..506e5c1d512d 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3521,9 +3521,6 @@ REG_TABLE_ENTRY g_registry_table[] =
REG_VARIABLE( CFG_SAP_DOT11_MODE_NAME, WLAN_PARAM_Integer,
hdd_config_t, sapDot11Mode,
-#ifndef WLAN_FEATURE_MBSSID
- VAR_FLAGS_DYNAMIC_CFG |
-#endif
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_SAP_DOT11_MODE_DEFAULT,
CFG_SAP_DOT11_MODE_MIN,
@@ -3791,14 +3788,6 @@ REG_TABLE_ENTRY mbssid_sap_dyn_ini_reg_table[] =
CFG_ACS_BAND_SWITCH_THRESHOLD_MIN,
CFG_ACS_BAND_SWITCH_THRESHOLD_MAX ),
- REG_VARIABLE( CFG_SAP_DOT11_MODE_NAME, WLAN_PARAM_Integer,
- mbssid_sap_dyn_ini_config_t, sapDot11Mode,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK
- | VAR_FLAGS_DYNAMIC_CFG,
- CFG_SAP_DOT11_MODE_DEFAULT,
- CFG_SAP_DOT11_MODE_MIN,
- CFG_SAP_DOT11_MODE_MAX ),
-
};
#endif
@@ -4790,8 +4779,6 @@ v_VOID_t hdd_mbssid_apply_def_cfg_ini(hdd_adapter_t *pAdapter)
vos_mem_copy(sap_ini_cfg->acsAllowedChnls, iniConfig->acsAllowedChnls,
CFG_MAX_STR_LEN);
- sap_ini_cfg->sapDot11Mode = iniConfig->sapDot11Mode;
-
}
#endif
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 84a223657e74..1bcdf55a3b05 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -211,7 +211,9 @@ static const u32 hdd_cipher_suites[] =
WLAN_CIPHER_SUITE_WEP104,
WLAN_CIPHER_SUITE_TKIP,
#ifdef FEATURE_WLAN_ESE
+#define WLAN_CIPHER_SUITE_BTK 0x004096fe /* use for BTK */
#define WLAN_CIPHER_SUITE_KRK 0x004096ff /* use for KRK */
+ WLAN_CIPHER_SUITE_BTK,
WLAN_CIPHER_SUITE_KRK,
WLAN_CIPHER_SUITE_CCMP,
#else
@@ -4753,11 +4755,7 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
v_BOOL_t MFPCapable = VOS_FALSE;
v_BOOL_t MFPRequired = VOS_FALSE;
eHddDot11Mode sapDot11Mode =
-#ifdef WLAN_FEATURE_MBSSID
- pHostapdAdapter->sap_dyn_ini_cfg.sapDot11Mode;
-#else
(WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->sapDot11Mode;
-#endif
u_int16_t prev_rsn_length = 0;
ENTER();
@@ -6857,6 +6855,9 @@ static int __wlan_hdd_cfg80211_add_key( struct wiphy *wiphy,
case WLAN_CIPHER_SUITE_KRK:
setKey.encType = eCSR_ENCRYPT_TYPE_KRK;
break;
+ case WLAN_CIPHER_SUITE_BTK:
+ setKey.encType = eCSR_ENCRYPT_TYPE_BTK;
+ break;
#endif
#ifdef WLAN_FEATURE_11W
@@ -9146,6 +9147,9 @@ static int wlan_hdd_cfg80211_set_cipher( hdd_adapter_t *pAdapter,
case WLAN_CIPHER_SUITE_KRK:
encryptionType = eCSR_ENCRYPT_TYPE_KRK;
break;
+ case WLAN_CIPHER_SUITE_BTK:
+ encryptionType = eCSR_ENCRYPT_TYPE_BTK;
+ break;
#endif
default:
hddLog(VOS_TRACE_LEVEL_ERROR, "%s: Unsupported cipher type %d",
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 5c77adf3a634..e1c29e6af151 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -291,7 +291,7 @@ extern int hdd_ftm_stop(hdd_context_t *pHddCtx);
#endif
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
-v_VOID_t wlan_hdd_auto_shutdown_cb(v_PVOID_t data);
+v_VOID_t wlan_hdd_auto_shutdown_cb(v_VOID_t);
#endif
/* Store WLAN driver version info in a global variable such that crash debugger
@@ -10489,13 +10489,6 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx)
#ifdef IPA_OFFLOAD
hdd_ipa_cleanup(pHddCtx);
#endif
-#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
- if (pHddCtx->cfg_ini->WlanAutoShutdown != 0) {
- vosStatus = vos_timer_destroy(&pHddCtx->hdd_wlan_shutdown_timer);
- if (!VOS_IS_STATUS_SUCCESS(vosStatus))
- hddLog(LOGE, FL("Failed to Destroy wlan auto shutdown timer"));
- }
-#endif
//Free up dynamically allocated members inside HDD Adapter
kfree(pHddCtx->cfg_ini);
pHddCtx->cfg_ini= NULL;
@@ -12066,13 +12059,10 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
}
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
- if (pHddCtx->cfg_ini->WlanAutoShutdown != 0) {
- status = vos_timer_init( &pHddCtx->hdd_wlan_shutdown_timer,
- VOS_TIMER_TYPE_SW, wlan_hdd_auto_shutdown_cb,
- NULL);
- if (!VOS_IS_STATUS_SUCCESS(status))
- hddLog(LOGE, FL("Failed to init wlan auto shutdown timer"));
- }
+ if (pHddCtx->cfg_ini->WlanAutoShutdown != 0)
+ if (sme_set_auto_shutdown_cb(pHddCtx->hHal, wlan_hdd_auto_shutdown_cb)
+ != eHAL_STATUS_SUCCESS)
+ hddLog(LOGE, FL("Auto shutdown feature could not be enabled"));
#endif
#ifdef FEATURE_GREEN_AP
@@ -13597,7 +13587,7 @@ void wlan_hdd_send_version_pkg(v_U32_t fw_version,
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
-v_VOID_t wlan_hdd_auto_shutdown_cb(v_PVOID_t data)
+v_VOID_t wlan_hdd_auto_shutdown_cb(v_VOID_t)
{
hddLog(LOGE, FL("%s: Wlan Idle. Sending Shutdown event.."),__func__);
wlan_hdd_send_svc_nlink_msg(WLAN_SVC_WLAN_AUTO_SHUTDOWN_IND, NULL, 0);
@@ -13605,19 +13595,21 @@ v_VOID_t wlan_hdd_auto_shutdown_cb(v_PVOID_t data)
void wlan_hdd_auto_shutdown_enable(hdd_context_t *hdd_ctx, v_BOOL_t enable)
{
- VOS_STATUS vos_status = VOS_STATUS_SUCCESS;
hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL;
VOS_STATUS status;
hdd_adapter_t *pAdapter;
v_BOOL_t ap_connected = VOS_FALSE, sta_connected = VOS_FALSE;
+ tHalHandle hHal;
+
+ hHal = hdd_ctx->hHal;
+ if (hHal == NULL)
+ return;
if (hdd_ctx->cfg_ini->WlanAutoShutdown == 0)
return;
if (enable == VOS_FALSE) {
- if (hdd_ctx->hdd_wlan_shutdown_timer.state == VOS_TIMER_STATE_RUNNING) {
- vos_status = vos_timer_stop(&hdd_ctx->hdd_wlan_shutdown_timer);
- if (!VOS_IS_STATUS_SUCCESS(vos_status))
+ if (sme_set_auto_shutdown_timer(hHal, 0) != eHAL_STATUS_SUCCESS) {
hddLog(LOGE, FL("Failed to stop wlan auto shutdown timer"));
}
return;
@@ -13651,16 +13643,13 @@ void wlan_hdd_auto_shutdown_enable(hdd_context_t *hdd_ctx, v_BOOL_t enable)
hddLog(LOG1, FL("CC Session active. Shutdown timer not enabled"));
return;
} else {
- if (hdd_ctx->hdd_wlan_shutdown_timer.state == VOS_TIMER_STATE_STOPPED) {
- vos_status = vos_timer_start( &hdd_ctx->hdd_wlan_shutdown_timer,
- hdd_ctx->cfg_ini->WlanAutoShutdown * 1000);
-
- if (!VOS_IS_STATUS_SUCCESS(vos_status))
- hddLog(LOGE, FL("Failed to start wlan auto shutdown timer"));
- else
- hddLog(LOG1, FL("CC Session Inactive. Shutdown timer enabled"));
-
- }
+ if (sme_set_auto_shutdown_timer(hHal,
+ hdd_ctx->cfg_ini->WlanAutoShutdown)
+ != eHAL_STATUS_SUCCESS)
+ hddLog(LOGE, FL("Failed to start wlan auto shutdown timer"));
+ else
+ hddLog(LOG1, FL("Auto Shutdown timer for %d seconds enabled"),
+ hdd_ctx->cfg_ini->WlanAutoShutdown);
}
}
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 98269535edec..1fcd6d290f4a 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 150
+#define QWLAN_VERSION_BUILD 151
-#define QWLAN_VERSIONSTR "1.0.0.150"
+#define QWLAN_VERSIONSTR "1.0.0.151"
#ifdef QCA_WIFI_2_0
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 3a43d8aeadfc..3df258b9ac50 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -5488,6 +5488,18 @@ typedef struct
} tSirExtScanResultsAvailableIndParams,
*tpSirExtScanResultsAvailableIndParams;
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+typedef struct
+{
+ tANI_U32 timer_val;
+} tSirAutoShutdownCmdParams;
+
+typedef struct
+{
+ tANI_U32 shutdown_reason;
+} tSirAutoShutdownEvtParams;
+#endif
+
typedef struct
{
tANI_U8 scanEventType;
diff --git a/CORE/MAC/inc/wniApi.h b/CORE/MAC/inc/wniApi.h
index 30cbafc74f7c..fccb49445e63 100644
--- a/CORE/MAC/inc/wniApi.h
+++ b/CORE/MAC/inc/wniApi.h
@@ -397,6 +397,9 @@ enum eWniMsgTypes
eWNI_SME_CSA_OFFLOAD_EVENT,
eWNI_SME_UPDATE_ADDITIONAL_IES, // indicates Additional IE from hdd to PE
eWNI_SME_MODIFY_ADDITIONAL_IES, /* To indicate IE modify from hdd to PE */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ eWNI_SME_AUTO_SHUTDOWN_IND,
+#endif
#ifdef QCA_HT_2040_COEX
eWNI_SME_SET_HT_2040_MODE,
#endif
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index c472ed969bcb..c25da409a03d 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -714,6 +714,9 @@ typedef struct sSirMbMsgP2p
#define SIR_HAL_NAN_REQUEST (SIR_HAL_ITC_MSG_TYPES_BEGIN + 280)
#endif /* WLAN_FEATURE_NAN */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+#define SIR_HAL_SET_AUTO_SHUTDOWN_TIMER_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 281)
+#endif
#define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF)
// CFG message types
diff --git a/CORE/MAC/src/pe/lim/limFT.c b/CORE/MAC/src/pe/lim/limFT.c
index 61dbb1eb775d..d81f44466d04 100644
--- a/CORE/MAC/src/pe/lim/limFT.c
+++ b/CORE/MAC/src/pe/lim/limFT.c
@@ -1904,9 +1904,9 @@ void limProcessFTRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
pftSessionEntry->limPrevSmeState = pftSessionEntry->limSmeState;
pftSessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE;
pMac->ft.ftPEContext.pftSessionEntry = pftSessionEntry;
- PELOGE(limLog(pMac,LOGE,"LFR3:%s:created session (%p) with id = %d",
- __func__, pftSessionEntry, pftSessionEntry->peSessionId);)
-
+ VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG,
+ "LFR3:%s:created session (%p) with id = %d",
+ __func__, pftSessionEntry, pftSessionEntry->peSessionId);
/* Update the ReAssoc BSSID of the current session */
sirCopyMacAddr(psessionEntry->limReAssocbssId, pbssDescription->bssId);
limPrintMacAddr(pMac, psessionEntry->limReAssocbssId, LOG2);
@@ -1918,7 +1918,7 @@ void limProcessFTRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
{
pftSessionEntry->is11Rconnection = psessionEntry->is11Rconnection;
#ifdef FEATURE_WLAN_ESE
- pftSessionEntry->isCCXconnection = psessionEntry->isESEconnection;
+ pftSessionEntry->isESEconnection = psessionEntry->isESEconnection;
#endif
#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
pftSessionEntry->isFastTransitionEnabled =
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 76e2b1175a5d..4fb055b9badc 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -7199,13 +7199,6 @@ void limProcessAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ)
vos_mem_free(pAddStaParams);
return;
}
-#ifdef WLAN_FEATURE_ROAM_OFFLOAD
- if (psessionEntry->bRoamSynchInProgress)
- {
- /* change logging before release */
- limLog(pMac, LOGE, FL("LFR3:limProcessAddStaRsp"));
- }
-#endif
psessionEntry->csaOffloadEnable = pAddStaParams->csaOffloadEnable;
if (psessionEntry->limSystemRole == eLIM_STA_IN_IBSS_ROLE)
(void) limIbssAddStaRsp(pMac, limMsgQ->bodyptr,psessionEntry);
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
index 45767a0330b4..433247c7f809 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
@@ -49,6 +49,7 @@
#include "pktlog_ac_api.h"
#include "pktlog_ac.h"
#endif
+#include "epping_main.h"
#ifndef ATH_BUS_PM
#ifdef CONFIG_PM
@@ -162,6 +163,12 @@ ath_hif_sdio_probe(void *context, void *hif_handle)
VOS_TRACE(VOS_MODULE_ID_HIF, VOS_TRACE_LEVEL_INFO," hdd_wlan_startup success!");
}
+ /* epping is minimum ethernet driver and the
+ * epping fw does not support pktlog, etc.
+ * After hdd_wladriver is epping directly return. */
+ if (WLAN_IS_EPPING_ENABLED(vos_get_conparam()))
+ goto end;
+
#ifndef REMOVE_PKT_LOG
if (vos_get_conparam() != VOS_FTM_MODE) {
/*
@@ -173,7 +180,7 @@ ath_hif_sdio_probe(void *context, void *hif_handle)
printk(KERN_ERR "%s: pktlogmod_init failed\n", __func__);
}
#endif
-
+end:
return 0;
err_attach2:
@@ -211,7 +218,8 @@ ath_hif_sdio_remove(void *context, void *hif_handle)
athdiag_procfs_remove();
#ifndef REMOVE_PKT_LOG
- if (vos_get_conparam() != VOS_FTM_MODE){
+ if (vos_get_conparam() != VOS_FTM_MODE &&
+ !WLAN_IS_EPPING_ENABLED(vos_get_conparam())){
if (sc && sc->ol_sc)
pktlogmod_exit(sc->ol_sc);
}
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 69a00830696c..6f2b55a47a5f 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -260,7 +260,6 @@ VOS_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
static void wma_set_stakey(tp_wma_handle wma_handle, tpSetStaKeyParams key_info);
static void wma_beacon_miss_handler(tp_wma_handle wma, u_int32_t vdev_id);
-
static void wma_set_suspend_dtim(tp_wma_handle wma);
static void wma_set_resume_dtim(tp_wma_handle wma);
@@ -302,7 +301,7 @@ static inline uint8_t wma_parse_mpdudensity(u_int8_t mpdudensity)
}
/* Function : wma_find_vdev_by_id
- * Descriptin : Returns vdev handle for given vdev id.
+ * Description : Returns vdev handle for given vdev id.
* Args : @wma - wma handle, @vdev_id - vdev ID
* Returns : Returns vdev handle if given vdev id is valid.
* Otherwise returns NULL.
@@ -332,7 +331,7 @@ static inline u_int8_t wma_get_vdev_count(tp_wma_handle wma)
}
/* Function : wma_is_vdev_in_ap_mode
- * Descriptin : Helper function to know whether given vdev id
+ * Description : Helper function to know whether given vdev id
* is in AP mode or not.
* Args : @wma - wma handle, @ vdev_id - vdev ID.
* Returns : True - if given vdev id is in AP mode.
@@ -358,7 +357,7 @@ static bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, u_int8_t vdev_id)
#ifdef QCA_IBSS_SUPPORT
/* Function : wma_is_vdev_in_ibss_mode
- s_vdev_in_ibss_mode* Descriptin : Helper function to know whether given vdev id
+ s_vdev_in_ibss_mode* Description : Helper function to know whether given vdev id
* is in IBSS mode or not.
* Args : @wma - wma handle, @ vdev_id - vdev ID.
* Retruns : True - if given vdev id is in IBSS mode.
@@ -426,7 +425,7 @@ static void *wma_find_vdev_by_bssid(tp_wma_handle wma, u_int8_t *bssid,
/* ############# function definitions ############ */
/* function : wma_swap_bytes
- * Descriptin :
+ * Description :
* Args :
* Retruns :
*/
@@ -492,6 +491,119 @@ tSmpsModeValue host_map_smps_mode (A_UINT32 fw_smps_mode)
return smps_mode;
}
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+/* function : wma_post_auto_shutdown_msg
+ * Description : function to post auto shutdown event to sme
+ */
+static int wma_post_auto_shutdown_msg(void)
+{
+ tSirAutoShutdownEvtParams *auto_sh_evt;
+ VOS_STATUS vos_status;
+ vos_msg_t sme_msg = {0} ;
+
+ auto_sh_evt = (tSirAutoShutdownEvtParams *)
+ vos_mem_malloc(sizeof(tSirAutoShutdownEvtParams));
+ if (!auto_sh_evt) {
+ WMA_LOGE("%s: No Mem", __func__);
+ return -ENOMEM;
+ }
+
+ auto_sh_evt->shutdown_reason =
+ WMI_HOST_AUTO_SHUTDOWN_REASON_TIMER_EXPIRY;
+ sme_msg.type = eWNI_SME_AUTO_SHUTDOWN_IND;
+ sme_msg.bodyptr = auto_sh_evt;
+ sme_msg.bodyval = 0;
+
+ vos_status = vos_mq_post_message(VOS_MODULE_ID_SME, &sme_msg);
+ if ( !VOS_IS_STATUS_SUCCESS(vos_status) ) {
+ WMA_LOGE("Fail to post eWNI_SME_AUTO_SHUTDOWN_IND msg to SME");
+ vos_mem_free(auto_sh_evt);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+/* function : wma_auto_shutdown_event_handler
+ * Description : function to process auto shutdown timer trigger
+ */
+static int wma_auto_shutdown_event_handler(void *handle, u_int8_t *event,
+ u_int32_t len)
+{
+ wmi_host_auto_shutdown_event_fixed_param *wmi_auto_sh_evt;
+ WMI_HOST_AUTO_SHUTDOWN_EVENTID_param_tlvs *param_buf =
+ (WMI_HOST_AUTO_SHUTDOWN_EVENTID_param_tlvs *)
+ event;
+
+ if (!param_buf) {
+ WMA_LOGE("%s:%d: Invalid Auto shutdown timer evt", __func__,
+ __LINE__);
+ return -EINVAL;
+ }
+
+
+ wmi_auto_sh_evt = param_buf->fixed_param;
+ if (!wmi_auto_sh_evt && wmi_auto_sh_evt->shutdown_reason
+ != WMI_HOST_AUTO_SHUTDOWN_REASON_TIMER_EXPIRY) {
+ WMA_LOGE("%s:%d: Invalid Auto shutdown timer evt", __func__,
+ __LINE__);
+ return -EINVAL;
+ }
+
+ WMA_LOGD("%s:%d: Auto Shutdown Evt: %d", __func__, __LINE__,
+ wmi_auto_sh_evt->shutdown_reason);
+ return(wma_post_auto_shutdown_msg());
+}
+
+/* function : wma_set_auto_shutdown_timer_req
+ * Description : function sets auto shutdown timer in firmware
+ * Args : wma handle, auto shutdown timer value
+ * Returns : status of wmi cmd
+ */
+static VOS_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
+ tSirAutoShutdownCmdParams *auto_sh_cmd)
+{
+ int status = 0;
+ wmi_buf_t buf = NULL;
+ u_int8_t *buf_ptr;
+ wmi_host_auto_shutdown_cfg_cmd_fixed_param *wmi_auto_sh_cmd;
+ int len = sizeof(wmi_host_auto_shutdown_cfg_cmd_fixed_param);
+
+ if (auto_sh_cmd == NULL) {
+ WMA_LOGE("%s : Invalid Autoshutdown cfg cmd", __func__);
+ return VOS_STATUS_E_FAILURE;
+ }
+
+ WMA_LOGD("%s: Set WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID:TIMER_VAL=%d",
+ __func__, auto_sh_cmd->timer_val);
+
+ buf = wmi_buf_alloc(wma_handle->wmi_handle, len);
+ if (!buf) {
+ WMA_LOGE("%s : wmi_buf_alloc failed", __func__);
+ return VOS_STATUS_E_NOMEM;
+ }
+
+ buf_ptr = (u_int8_t *) wmi_buf_data(buf);
+ wmi_auto_sh_cmd = (wmi_host_auto_shutdown_cfg_cmd_fixed_param *)buf_ptr;
+ wmi_auto_sh_cmd->timer_value = auto_sh_cmd->timer_val;
+
+ WMITLV_SET_HDR(&wmi_auto_sh_cmd->tlv_header,
+ WMITLV_TAG_STRUC_wmi_host_auto_shutdown_cfg_cmd_fixed_param,
+ WMITLV_GET_STRUCT_TLVLEN(wmi_host_auto_shutdown_cfg_cmd_fixed_param));
+
+ status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf,
+ len, WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID);
+ if (status != EOK) {
+ WMA_LOGE("%s: WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID Err %d",
+ __func__, status);
+ wmi_buf_free(buf);
+ return VOS_STATUS_E_FAILURE;
+ }
+
+ return VOS_STATUS_SUCCESS;
+}
+#endif
+
static void wma_vdev_start_rsp(tp_wma_handle wma,
tpAddBssParams add_bss,
wmi_vdev_start_response_event_fixed_param *resp_event)
@@ -683,7 +795,7 @@ static int wma_vdev_start_rsp_ind(tp_wma_handle wma, u_int8_t *buf)
}
/* function : wma_unified_debug_print_event_handler
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -1973,6 +2085,7 @@ static int wma_extscan_capabilities_event_handler (void *handle,
wmi_extscan_capabilities_event_fixed_param *event;
wmi_extscan_cache_capabilities *src_cache;
wmi_extscan_hotlist_monitor_capabilities *src_hotlist;
+ wmi_extscan_wlan_change_monitor_capabilities *src_change;
tSirExtScanCapabilitiesEvent *dest_capab;
tpAniSirGlobal pMac = (tpAniSirGlobal )vos_get_context(
@@ -1994,8 +2107,9 @@ static int wma_extscan_capabilities_event_handler (void *handle,
event = param_buf->fixed_param;
src_cache = param_buf->extscan_cache_capabilities;
src_hotlist = param_buf->hotlist_capabilities;
+ src_change = param_buf->wlan_change_capabilities;
- if (!src_cache || !src_hotlist) {
+ if (!src_cache || !src_hotlist || !src_change) {
WMA_LOGE("%s: Invalid capabilities list", __func__);
return -EINVAL;
}
@@ -2008,7 +2122,17 @@ static int wma_extscan_capabilities_event_handler (void *handle,
dest_capab->requestId = event->request_id;
dest_capab->scanBuckets = src_cache->max_buckets;
dest_capab->scanCacheSize = src_cache->scan_cache_entry_size;
+ dest_capab->maxApPerScan = src_cache->max_bssid_per_scan;
+ dest_capab->maxScanReportingThreshold =
+ src_cache->max_table_usage_threshold;
+
dest_capab->maxHotlistAPs = src_hotlist->max_hotlist_entries;
+ dest_capab->maxRssiSampleSize =
+ src_change->max_rssi_averaging_samples;
+ dest_capab->maxBsidHistoryEntries =
+ src_change->max_rssi_history_entries;
+ dest_capab->maxSignificantWifiChangeAPs =
+ src_change->max_wlan_change_entries;
dest_capab->status = 0;
WMA_LOGD("%s: Capabilities: scanBuckets: %d,"
@@ -2084,11 +2208,9 @@ static int wma_extscan_hotlist_match_event_handler(void *handle,
dest_ap->ieLength = src_hotlist-> ie_length;
WMI_MAC_ADDR_TO_CHAR_ARRAY(&src_hotlist->bssid,
dest_ap->bssid);
- if (src_hotlist->ssid.ssid_len) {
- vos_mem_copy(dest_ap->ssid, src_hotlist->ssid.ssid,
+ vos_mem_copy(dest_ap->ssid, src_hotlist->ssid.ssid,
src_hotlist->ssid.ssid_len);
- dest_ap->ssid[src_hotlist->ssid.ssid_len] = '\0';
- }
+ dest_ap->ssid[src_hotlist->ssid.ssid_len] = '\0';
dest_ap++;
src_hotlist++;
}
@@ -2109,6 +2231,7 @@ static int wma_extscan_cached_results_event_handler(void *handle,
tSirWifiScanResultEvent *dest_cachelist;
tSirWifiScanResult *dest_ap;
wmi_extscan_wlan_descriptor *src_hotlist;
+ wmi_extscan_rssi_info *src_rssi;
int numap;
int j;
int moredata;
@@ -2131,6 +2254,12 @@ static int wma_extscan_cached_results_event_handler(void *handle,
}
event = param_buf->fixed_param;
src_hotlist = param_buf->bssid_list;
+ src_rssi = param_buf->rssi_list;
+ if (!src_hotlist || !src_rssi) {
+ WMA_LOGE("%s: Cached_results AP's list invalid",
+ __func__);
+ return -EINVAL;
+ }
if (event->first_entry_index +
event->num_entries_in_page < event->total_entries) {
moredata = 1;
@@ -2162,15 +2291,15 @@ static int wma_extscan_cached_results_event_handler(void *handle,
dest_ap->beaconPeriod = src_hotlist->beacon_interval;
dest_ap->capability = src_hotlist->capabilities;
dest_ap->ieLength = src_hotlist-> ie_length;
+ dest_ap->rssi = src_rssi->rssi;
WMI_MAC_ADDR_TO_CHAR_ARRAY(&src_hotlist->bssid, dest_ap->bssid);
- if (src_hotlist->ssid.ssid_len) {
- vos_mem_copy(dest_ap->ssid, src_hotlist->ssid.ssid,
+ vos_mem_copy(dest_ap->ssid, src_hotlist->ssid.ssid,
src_hotlist->ssid.ssid_len);
- dest_ap->ssid[src_hotlist->ssid.ssid_len] = '\0';
- }
+ dest_ap->ssid[src_hotlist->ssid.ssid_len] = '\0';
dest_ap++;
src_hotlist++;
+ src_rssi++;
}
pMac->sme.pExtScanIndCb(pMac->hHdd,
eSIR_EXTSCAN_CACHED_RESULTS_IND,
@@ -4694,7 +4823,7 @@ err_wma_handle:
}
/* function : wma_pre_start
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -4753,7 +4882,7 @@ end:
}
/* function : wma_send_msg
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -4777,7 +4906,7 @@ static void wma_send_msg(tp_wma_handle wma_handle, u_int16_t msg_type,
}
/* function : wma_get_txrx_vdev_type
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -4806,7 +4935,7 @@ enum wlan_op_mode wma_get_txrx_vdev_type(u_int32_t type)
}
/* function : wma_unified_vdev_create_send
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -4846,7 +4975,7 @@ int wma_unified_vdev_create_send(wmi_unified_t wmi_handle, u_int8_t if_id,
}
/* function : wma_unified_vdev_delete_send
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -4919,7 +5048,7 @@ void wma_vdev_detach_callback(void *ctx)
}
/* function : wma_vdev_detach
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -5520,7 +5649,7 @@ static VOS_STATUS wma_set_mcc_channel_time_quota
}
/* function : wma_vdev_attach
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -5802,7 +5931,7 @@ fail:
}
/* function : wma_set_scan_info
- * Descriptin : function to save current ongoing scan info
+ * Description : function to save current ongoing scan info
* Args : wma handle, scan id, scan requestor id, vdev id
* Returns : None
*/
@@ -5819,7 +5948,7 @@ static inline void wma_set_scan_info(tp_wma_handle wma_handle,
}
/* function : wma_reset_scan_info
- * Descriptin : function to reset the current ongoing scan info
+ * Description : function to reset the current ongoing scan info
* Args : wma handle, vdev_id
* Returns : None
*/
@@ -5906,7 +6035,7 @@ v_BOOL_t wma_is_STA_active(tp_wma_handle wma_handle)
/* function : wma_get_buf_start_scan_cmd
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -6213,7 +6342,7 @@ error:
}
/* function : wma_get_buf_stop_scan_cmd
- * Descriptin : function to fill the args for wmi_stop_scan_cmd
+ * Description : function to fill the args for wmi_stop_scan_cmd
* Args : wma handle, wmi command buffer, buffer length, vdev_id
* Returns : failure or success
*/
@@ -6307,7 +6436,7 @@ VOS_STATUS wma_send_snr_request(tp_wma_handle wma_handle, void *pGetRssiReq,
}
/* function : wma_start_scan
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -6425,7 +6554,7 @@ error1:
}
/* function : wma_stop_scan
- * Descriptin : function to send the stop scan command
+ * Description : function to send the stop scan command
* Args : wma_handle
* Returns : failure or success
*/
@@ -6471,7 +6600,7 @@ error1:
}
/* function : wma_update_channel_list
- * Descriptin : Function is used to update the support channel list
+ * Description : Function is used to update the support channel list
* Args : wma_handle, list of supported channels and power
* Returns : SUCCESS or FAILURE
*/
@@ -6741,7 +6870,7 @@ VOS_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
#endif
/* function : wma_roam_scan_offload_mode
- * Descriptin : send WMI_ROAM_SCAN_MODE TLV to firmware. It has a piggyback
+ * Description : send WMI_ROAM_SCAN_MODE TLV to firmware. It has a piggyback
* : of WMI_ROAM_SCAN_MODE.
* Args : scan_cmd_fp contains the scan parameters.
* : mode controls rssi based and periodic scans by roam engine.
@@ -6955,7 +7084,7 @@ error:
}
/* function : wma_roam_scan_offload_rssi_threshold
- * Descriptin : Send WMI_ROAM_SCAN_RSSI_THRESHOLD TLV to firmware
+ * Description : Send WMI_ROAM_SCAN_RSSI_THRESHOLD TLV to firmware
* Args :
* Returns :
*/
@@ -7007,7 +7136,7 @@ error:
}
/* function : wma_roam_scan_offload_scan_period
- * Descriptin : Send WMI_ROAM_SCAN_PERIOD TLV to firmware
+ * Description : Send WMI_ROAM_SCAN_PERIOD TLV to firmware
* Args :
* Returns :
*/
@@ -7058,7 +7187,7 @@ error:
return vos_status;
}
/* function : wma_roam_scan_offload_rssi_change
- * Descriptin : Send WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD TLV to firmware
+ * Description : Send WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD TLV to firmware
* Args :
* Returns :
*/
@@ -7110,7 +7239,7 @@ error:
}
/* function : wma_roam_scan_offload_chan_list
- * Descriptin : Send WMI_ROAM_CHAN_LIST TLV to firmware
+ * Description : Send WMI_ROAM_CHAN_LIST TLV to firmware
* Args :
* Returns :
*/
@@ -7184,7 +7313,7 @@ error:
}
/* function : eCsrAuthType_to_rsn_authmode
- * Descriptin : Map CSR's authentication type into RSN auth mode used by firmware
+ * Description : Map CSR's authentication type into RSN auth mode used by firmware
* Args :
* Returns :
*/
@@ -7241,7 +7370,7 @@ A_UINT32 eCsrAuthType_to_rsn_authmode (eCsrAuthType authtype, eCsrEncryptionType
}
/* function : eCsrEncryptionType_to_rsn_cipherset
- * Descriptin : Map CSR's encryption type into RSN cipher types used by firmware
+ * Description : Map CSR's encryption type into RSN cipher types used by firmware
* Args :
* Returns :
*/
@@ -7271,7 +7400,7 @@ A_UINT32 eCsrEncryptionType_to_rsn_cipherset (eCsrEncryptionType encr) {
}
/* function : wma_roam_scan_fill_ap_profile
- * Descriptin : Fill ap_profile structure from configured parameters
+ * Description : Fill ap_profile structure from configured parameters
* Args :
* Returns :
*/
@@ -7304,7 +7433,7 @@ v_VOID_t wma_roam_scan_fill_ap_profile(tp_wma_handle wma_handle, tpAniSirGlobal
}
/* function : wma_roam_scan_scan_params
- * Descriptin : Fill scan_params structure from configured parameters
+ * Description : Fill scan_params structure from configured parameters
* Args : roam_req pointer = NULL if this routine is called before connect
* : It will be non-NULL if called after assoc.
* Returns :
@@ -7467,7 +7596,7 @@ v_VOID_t wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
}
/* function : wma_roam_scan_offload_ap_profile
- * Descriptin : Send WMI_ROAM_AP_PROFILE TLV to firmware
+ * Description : Send WMI_ROAM_AP_PROFILE TLV to firmware
* Args : AP profile parameters are passed in as the structure used in TLV
* Returns :
*/
@@ -7550,7 +7679,7 @@ VOS_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
}
/* function : wma_roam_scan_offload_init_connect
- * Descriptin : Rome firmware requires that roam scan engine is configured prior to
+ * Description : Rome firmware requires that roam scan engine is configured prior to
* : sending VDEV_UP command to firmware. This routine configures it
* : to default values with only periodic scan mode. Rssi triggerred scan
* : is not enabled, preventing unnecessary off-channel scans while EAPOL
@@ -7594,7 +7723,7 @@ VOS_STATUS wma_roam_scan_offload_init_connect(tp_wma_handle wma_handle)
}
/* function : wma_roam_scan_offload_end_connect
- * Descriptin : Stop the roam scan by setting scan mode to 0.
+ * Description : Stop the roam scan by setting scan mode to 0.
* Args :
* Returns :
*/
@@ -7666,7 +7795,7 @@ error:
}
/* function : wma_process_roam_scan_req
- * Descriptin : Main routine to handle ROAM commands coming from CSR module.
+ * Description : Main routine to handle ROAM commands coming from CSR module.
* Args :
* Returns :
*/
@@ -7902,7 +8031,7 @@ VOS_STATUS wma_process_roam_scan_req(tp_wma_handle wma_handle,
#ifdef FEATURE_WLAN_LPHB
/* function : wma_lphb_conf_hbenable
- * Descriptin : handles the enable command of LPHB configuration requests
+ * Description : handles the enable command of LPHB configuration requests
* Args :
* Returns :
*/
@@ -7964,7 +8093,7 @@ error:
}
/* function : wma_lphb_conf_tcp_params
- * Descriptin : handles the tcp params command of LPHB configuration requests
+ * Description : handles the tcp params command of LPHB configuration requests
* Args :
* Returns :
*/
@@ -8041,7 +8170,7 @@ error:
}
/* function : wma_lphb_conf_tcp_pkt_filter
- * Descriptin : handles the tcp packet filter command of LPHB configuration requests
+ * Description : handles the tcp packet filter command of LPHB configuration requests
* Args :
* Returns :
*/
@@ -8112,7 +8241,7 @@ error:
}
/* function : wma_lphb_conf_udp_params
- * Descriptin : handles the udp params command of LPHB configuration requests
+ * Description : handles the udp params command of LPHB configuration requests
* Args :
* Returns :
*/
@@ -8187,7 +8316,7 @@ error:
}
/* function : wma_lphb_conf_udp_pkt_filter
- * Descriptin : handles the udp packet filter command of LPHB configuration requests
+ * Description : handles the udp packet filter command of LPHB configuration requests
* Args :
* Returns :
*/
@@ -8258,7 +8387,7 @@ error:
}
/* function : wma_process_lphb_conf_req
- * Descriptin : handles LPHB configuration requests
+ * Description : handles LPHB configuration requests
* Args :
* Returns :
*/
@@ -15384,6 +15513,10 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason)
case WOW_REASON_RA_MATCH:
return "WOW_REASON_RA_MATCH";
#endif
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ case WOW_REASON_HOST_AUTO_SHUTDOWN:
+ return "WOW_REASON_HOST_AUTO_SHUTDOWN";
+#endif
}
return "unknown";
}
@@ -15532,6 +15665,14 @@ static int wma_wow_wakeup_host_event(void *handle, u_int8_t *event,
wake_lock_duration = WMA_RA_MATCH_RECV_WAKE_LOCK_DURATION;
break;
#endif
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ case WOW_REASON_HOST_AUTO_SHUTDOWN:
+ wake_lock_duration = WMA_AUTO_SHUTDOWN_WAKE_LOCK_DURATION;
+ WMA_LOGA("Received WOW Auto Shutdown trigger in suspend");
+ if (wma_post_auto_shutdown_msg())
+ return -EINVAL;
+ break;
+#endif
#ifdef FEATURE_WLAN_SCAN_PNO
case WOW_REASON_NLOD:
wake_lock_duration = WMA_PNO_WAKE_LOCK_TIMEOUT;
@@ -16560,7 +16701,14 @@ static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma,
} else
WMA_LOGD("gRAFilterEnable is not set, RA filterning is disabled");
#endif
-
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ ret = wma_add_wow_wakeup_event(wma, WOW_HOST_AUTO_SHUTDOWN_EVENT, TRUE);
+ if (ret != VOS_STATUS_SUCCESS) {
+ WMA_LOGE("Failed to Configure auto shutdown WOW event to FW");
+ goto end;
+ } else
+ WMA_LOGE("Configure auto shutdown WOW event to FW: success");
+#endif
/* WOW is enabled in pcie suspend callback */
wma->wow.wow_enable = TRUE;
wma->wow.wow_enable_cmd_sent = FALSE;
@@ -18652,7 +18800,7 @@ static void wma_process_update_userpos(tp_wma_handle wma_handle,
#ifdef FEATURE_WLAN_BATCH_SCAN
/* function : wma_batch_scan_enable
- * Descriptin : This function handles WDA_SET_BATCH_SCAN_REQ from UMAC
+ * Description : This function handles WDA_SET_BATCH_SCAN_REQ from UMAC
and sends WMI_BATCH_SCAN_ENABLE_CMDID to target
* Args :
handle : Pointer to WMA handle
@@ -18705,7 +18853,7 @@ VOS_STATUS wma_batch_scan_enable
}
/* function : wma_batch_scan_disable
- * Descriptin : This function handles WDA_STOP_BATCH_SCAN_REQ from UMAC
+ * Description : This function handles WDA_STOP_BATCH_SCAN_REQ from UMAC
and sends WMI_BATCH_SCAN_DISABLE_CMDID to target
* Args :
handle : Pointer to WMA handle
@@ -18751,7 +18899,7 @@ VOS_STATUS wma_batch_scan_disable
}
/* function : wma_batch_scan_trigger_result
- * Descriptin : This function handles WDA_TRIGGER_BATCH_SCAN_RESULT_IND from
+ * Description : This function handles WDA_TRIGGER_BATCH_SCAN_RESULT_IND from
UMAC and sends WMI_BATCH_SCAN_TRIGGER_RESULT_CMDID to target
* Args :
handle : Pointer to WMA handle
@@ -18798,7 +18946,7 @@ VOS_STATUS wma_batch_scan_trigger_result
#endif
/* function : wma_process_init_thermal_info
- * Descriptin : This function initializes the thermal management table in WMA,
+ * Description : This function initializes the thermal management table in WMA,
sends down the initial temperature thresholds to the firmware and
configures the throttle period in the tx rx module
* Args :
@@ -18887,7 +19035,7 @@ VOS_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
/* function : wma_process_set_thermal_level
- * Descriptin : This function set the new thermal throttle level in the
+ * Description : This function set the new thermal throttle level in the
txrx module and sends down the corresponding temperature
thresholds to the firmware
* Args :
@@ -19241,7 +19389,7 @@ static void wma_process_set_p2pgo_noa_Req(tp_wma_handle wma,
}
/* function : wma_process_set_mimops_req
- * Descriptin : Set the received MiMo PS state to firmware.
+ * Description : Set the received MiMo PS state to firmware.
* Args :
wma_handle : Pointer to WMA handle
* tSetMIMOPS : Pointer to MiMo PS struct
@@ -19270,7 +19418,7 @@ static void wma_process_set_mimops_req(tp_wma_handle wma_handle,
}
/* function : wma_set_vdev_intrabss_fwd
- * Descriptin : Set intra_fwd value to wni_in.
+ * Description : Set intra_fwd value to wni_in.
* Args :
* wma_handle : Pointer to WMA handle
* pdis_intra_fwd : Pointer to DisableIntraBssFwd struct
@@ -19643,6 +19791,7 @@ static VOS_STATUS wma_process_ll_stats_getReq
cmd->min_dwell_time_passive = dwelltime;
cmd->max_dwell_time_passive = dwelltime;
cmd->max_bssids_per_scan_cycle = pstart->maxAPperScan;
+ cmd->max_table_usage = pstart->reportThreshold;
cmd->repeat_probe_time = WMA_EXTSCAN_REPEAT_PROBE;
cmd->max_scan_time = WMA_EXTSCAN_MAX_SCAN_TIME;
@@ -19655,7 +19804,6 @@ static VOS_STATUS wma_process_ll_stats_getReq
WMI_SCAN_ADD_CCK_RATES |
WMI_SCAN_ADD_OFDM_RATES;
cmd->scan_priority = WMI_SCAN_PRIORITY_HIGH;
- cmd->max_table_usage = WMA_EXTSCAN_MAX_TABLE_USAGE;
cmd->notify_extscan_events = WMI_EXTSCAN_CYCLE_COMPLETED_EVENT |
WMI_EXTSCAN_BUCKET_OVERRUN_EVENT;
cmd->num_ssids = 0;
@@ -19709,6 +19857,7 @@ static VOS_STATUS wma_process_ll_stats_getReq
dest_blist->min_dwell_time_passive = dwelltime;
dest_blist->max_dwell_time_passive = dwelltime;
dest_blist->forwarding_flags = 0;
+ src_channel = src_bucket->channels;
/* save the channel info to later populate
* the channel TLV
@@ -20368,7 +20517,7 @@ static VOS_STATUS wma_nan_req(void *wda_handle, tpNanRequest nan_req)
/*
* function : wma_mc_process_msg
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -20738,7 +20887,13 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg)
vos_mem_free(msg->bodyptr);
break;
#endif
-
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ case WDA_SET_AUTO_SHUTDOWN_TIMER_REQ:
+ wma_set_auto_shutdown_timer_req(wma_handle,
+ msg->bodyptr);
+ vos_mem_free(msg->bodyptr);
+ break;
+#endif
case WDA_DHCP_START_IND:
case WDA_DHCP_STOP_IND:
wma_process_dhcp_ind(wma_handle,
@@ -20805,7 +20960,6 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg)
wma_vdev_start_rsp_ind(wma_handle, msg->bodyptr);
vos_mem_free(msg->bodyptr);
break;
-
case WDA_ROAM_PREAUTH_IND:
wma_roam_preauth_ind(wma_handle, msg->bodyptr);
vos_mem_free(msg->bodyptr);
@@ -21052,7 +21206,7 @@ static void wma_mgmt_tx_ack_work_handler(struct work_struct *ack_work)
}
/* function : wma_mgmt_tx_comp_conf_ind
- * Descriptin : Post mgmt tx complete indication to PE.
+ * Description : Post mgmt tx complete indication to PE.
* Args :
wma_handle : Pointer to WMA handle
* sub_type : Tx mgmt frame sub type
@@ -21226,7 +21380,7 @@ static VOS_STATUS wma_tx_detach(tp_wma_handle wma_handle)
}
/* function : wma_roam_better_ap_handler
- * Descriptin : Handler for WMI_ROAM_REASON_BETTER_AP event from roam firmware in Rome.
+ * Description : Handler for WMI_ROAM_REASON_BETTER_AP event from roam firmware in Rome.
* : This event means roam algorithm in Rome has found a better matching
* : candidate AP. The indication is sent through tl_shim as by repeating
* : the last beacon. Hence this routine calls a tlshim routine.
@@ -21246,7 +21400,7 @@ static void wma_roam_better_ap_handler(tp_wma_handle wma, u_int32_t vdev_id)
}
/* function : wma_roam_event_callback
- * Descriptin : Handler for all events from roam engine in firmware
+ * Description : Handler for all events from roam engine in firmware
* Args :
* Returns :
*/
@@ -21466,7 +21620,7 @@ static int wma_mcc_vdev_tx_pause_evt_handler(void *handle, u_int8_t *event,
#endif /* QCA_SUPPORT_TXRX_VDEV_PAUSE_LL */
/* function : wma_set_thermal_mgmt
- * Descriptin : This function sends the thermal management command to the firmware
+ * Description : This function sends the thermal management command to the firmware
* Args :
wma_handle : Pointer to WMA handle
* thermal_info : Thermal command information
@@ -21514,7 +21668,7 @@ static VOS_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
}
/* function : wma_thermal_mgmt_get_level
- * Descriptin : This function returns the thermal(throttle) level given the temperature
+ * Description : This function returns the thermal(throttle) level given the temperature
* Args :
handle : Pointer to WMA handle
* temp : temperature
@@ -21548,7 +21702,7 @@ u_int8_t wma_thermal_mgmt_get_level(void *handle, u_int32_t temp)
}
/* function : wma_thermal_mgmt_evt_handler
- * Descriptin : This function handles the thermal mgmt event from the firmware
+ * Description : This function handles the thermal mgmt event from the firmware
* Args :
wma_handle : Pointer to WMA handle
* event : Thermal event information
@@ -21630,7 +21784,7 @@ static int wma_thermal_mgmt_evt_handler(void *handle, u_int8_t *event,
#ifdef FEATURE_WLAN_BATCH_SCAN
/* function : wma_batch_scan_result_event_handler
- * Descriptin : Batch scan result event handler from target. This function
+ * Description : Batch scan result event handler from target. This function
* converts target batch scan response into HDD readable format
* and calls HDD supplied callback
* Args :
@@ -21815,7 +21969,7 @@ done:
}
/* function : wma_batch_scan_enable_event_handler
- * Descriptin : Batch scan enable event handler from target. This function
+ * Description : Batch scan enable event handler from target. This function
* gets minimum no of supported batch scan info from target
* and calls HDD supplied callback
* Args :
@@ -21941,7 +22095,7 @@ static int wma_channel_avoid_evt_handler(void *handle, u_int8_t *event,
}
/* function : wma_process_ch_avoid_update_req
- * Descriptin : handles channel avoid update request
+ * Description : handles channel avoid update request
* Args :
* Returns :
*/
@@ -21994,7 +22148,7 @@ VOS_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
#endif /* FEATURE_WLAN_CH_AVOID */
/* function : wma_scan_completion_timeout
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -22038,7 +22192,7 @@ void wma_scan_completion_timeout(void *data)
}
/* function : wma_start
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -22196,7 +22350,16 @@ VOS_STATUS wma_start(v_VOID_t *vos_ctx)
goto end;
}
#endif /* FEATURE_WLAN_CH_AVOID */
-
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ WMA_LOGD("Registering auto shutdown handler");
+ status = wmi_unified_register_event_handler(wma_handle->wmi_handle,
+ WMI_HOST_AUTO_SHUTDOWN_EVENTID, wma_auto_shutdown_event_handler);
+ if (status) {
+ WMA_LOGE("Failed to register WMI Auto shutdown event handler");
+ vos_status = VOS_STATUS_E_FAILURE;
+ goto end;
+ }
+#endif
status = wmi_unified_register_event_handler(
wma_handle->wmi_handle,
WMI_THERMAL_MGMT_EVENTID,
@@ -22241,7 +22404,7 @@ end:
}
/* function : wma_stop
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -22374,7 +22537,7 @@ static void wma_dfs_detach(struct ieee80211com *dfs_ic)
}
/* function : wma_close
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -23046,7 +23209,7 @@ v_VOID_t wma_rx_service_ready_event(WMA_HANDLE handle, void *cmd_param_info)
}
/* function : wma_rx_ready_event
- * Descriptin :
+ * Description :
* Args :
* Retruns :
*/
@@ -23656,7 +23819,7 @@ error:
}
/* function :wma_setneedshutdown
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
@@ -23679,7 +23842,7 @@ v_VOID_t wma_setneedshutdown(v_VOID_t *vos_ctx)
}
/* function : wma_rx_ready_event
- * Descriptin :
+ * Description :
* Args :
* Returns :
*/
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index 4f431a0d81f8..dcd95809c48c 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -185,7 +185,6 @@
#define WMA_EXTSCAN_MAX_SCAN_TIME 50000
#define WMA_EXTSCAN_REPEAT_PROBE 10
#define WMA_EXTSCAN_BURST_DURATION 150
-#define WMA_EXTSCAN_MAX_TABLE_USAGE 71
#endif
typedef struct {
@@ -1372,6 +1371,9 @@ VOS_STATUS wma_send_snr_request(tp_wma_handle wma_handle, void *pGetRssiReq,
#define WMA_ASSOC_REQ_RECV_WAKE_LOCK_DURATION (30 * 1000) /* in msec */
#define WMA_DEAUTH_RECV_WAKE_LOCK_DURATION (30 * 1000) /* in msec */
#define WMA_DISASSOC_RECV_WAKE_LOCK_DURATION (30 * 1000) /* in msec */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+#define WMA_AUTO_SHUTDOWN_WAKE_LOCK_DURATION (30 * 1000) /* in msec */
+#endif
#ifdef FEATURE_WLAN_RA_FILTERING
#define WMA_RA_MATCH_RECV_WAKE_LOCK_DURATION (5 * 1000) /* in msec */
#endif
diff --git a/CORE/SME/inc/smeInternal.h b/CORE/SME/inc/smeInternal.h
index 82bb6e6f7bb8..cfb780d9d817 100644
--- a/CORE/SME/inc/smeInternal.h
+++ b/CORE/SME/inc/smeInternal.h
@@ -153,6 +153,9 @@ typedef struct tagSmeStruct
void(*pLinkLayerStatsIndCallback)(void *callbackContext,
int indType, void *pRsp);
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ void (*pAutoShutdownNotificationCb) (void);
+#endif
/* Maximum interfaces allowed by the host */
tANI_U8 max_intf_count;
void (* StatsExtCallback) (void *, tStatsExtEvent *);
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index e8b3a8e6b8c8..d5ea60191a9c 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -3560,6 +3560,27 @@ eHalStatus sme_ChAvoidUpdateReq
);
#endif /* FEATURE_WLAN_CH_AVOID */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+/* ---------------------------------------------------------------------------
+ \fn sme_auto_shutdown_cb
+ \brief Used to plug in callback function for receiving auto shutdown evt
+ \param hHal
+ \param pCallbackfn : callback function pointer should be plugged in
+ \- return eHalStatus
+-------------------------------------------------------------------------*/
+eHalStatus sme_set_auto_shutdown_cb(tHalHandle hHal,
+ void (*pCallbackfn)(void));
+
+/* ---------------------------------------------------------------------------
+ \fn sme_set_auto_shutdown_timer
+ \API to set auto shutdown timer value in FW.
+ \param hHal - The handle returned by macOpen
+ \param timer_val - The auto shutdown timer value to be set
+ \- return Configuration message posting status, SUCCESS or Fail
+ -------------------------------------------------------------------------*/
+eHalStatus sme_set_auto_shutdown_timer(tHalHandle hHal, tANI_U32 timer_value);
+#endif
+
eHalStatus sme_RoamChannelChangeReq( tHalHandle hHal, tCsrBssid bssid,
tANI_U8 targetChannel, eCsrPhyMode phyMode );
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index feb0d850d0ce..e3aeb34c3c47 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -4860,8 +4860,6 @@ eHalStatus csrRoamProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand )
break;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
case eCsrPerformRoamOffloadSynch:
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
- "LFR3:%s: Attempting Roam Offload Sync", __func__);
status = csrRoamIssueFTRoamOffloadSynch(pMac, sessionId,
pCommand->u.roamCmd.pLastRoamBss);
break;
@@ -8940,9 +8938,9 @@ static eHalStatus csrRoamIssueSetKeyCommand( tpAniSirGlobal pMac, tANI_U32 sessi
( (!HAL_STATUS_SUCCESS( status ) )
#ifdef FEATURE_WLAN_ESE
|| ( eCSR_ENCRYPT_TYPE_KRK == pSetKey->encType )
-#ifdef WLAN_FEATURE_WLAN_ROAM
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|| ( eCSR_ENCRYPT_TYPE_BTK == pSetKey->encType )
-#endif /* WLAN_FEATURE_WLAN_ROAM */
+#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
#endif /* FEATURE_WLAN_ESE */
) )
{
@@ -16427,7 +16425,6 @@ void csrRoamOffload(tpAniSirGlobal pMac, tSirRoamOffloadScanReq *pRequestBuf,
if (csrIsAuthTypeESE(pRequestBuf->ConnectedNetwork.authentication)) {
vos_mem_copy(pRequestBuf->KRK,pSession->eseCckmInfo.krk, SIR_KRK_KEY_LEN);
vos_mem_copy(pRequestBuf->BTK,pSession->eseCckmInfo.btk, SIR_BTK_KEY_LEN);
- pRequestBuf->IsESEConnection = eANI_BOOLEAN_TRUE;
}
#endif
pRequestBuf->AcUapsd.acbe_uapsd =
@@ -18424,8 +18421,9 @@ eHalStatus csrRoamDequeueRoamOffloadSynch(tpAniSirGlobal pMac)
if ( (eSmeCommandRoam == pCommand->command) &&
(eCsrPerformRoamOffloadSynch == pCommand->u.roamCmd.roamReason))
{
- smsLog( pMac, LOGE, FL("DQ-Command = %d, Reason = %d"),
- pCommand->command, pCommand->u.roamCmd.roamReason);
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ "LFR3:DQ-Command = %d, Reason = %d",
+ pCommand->command, pCommand->u.roamCmd.roamReason);
if (csrLLRemoveEntry( &pMac->sme.smeCmdActiveList, pEntry, LL_ACCESS_LOCK )) {
csrReleaseCommand( pMac, pCommand );
}
@@ -18525,9 +18523,9 @@ void csrProcessRoamOffloadSynchInd(tpAniSirGlobal pMac, void *pMsgBuf)
smeRoamOffloadSynchInd->reassocRespOffset,
pMac->roam.reassocRespLen);
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
"LFR3:%s: the reassoc resp frame data:", __func__);
- VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
pMac->roam.pReassocResp,
pMac->roam.reassocRespLen);
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 4c5c72ccaffa..ac3330170aa9 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -8652,8 +8652,8 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac,
return eHAL_STATUS_FAILURE;
}
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,"LFR3: Beacon/Prb Rsp:");
- VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,"LFR3: Beacon/Prb Rsp:");
+ VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
pBeaconProbeResp, pRoamOffloadSynchInd->beaconProbeRespLength);
if (pRoamOffloadSynchInd->isBeacon)
@@ -8760,9 +8760,9 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac,
sizeof(tSirMacAddr));
pBssDescr->nReceivedTime = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd);
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
"LFR3:%s:BssDescr Info:", __func__);
- VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
+ VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
pBssDescr->bssId, sizeof(tSirMacAddr));
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
"chan= %d, rssi = %d",pBssDescr->channelId,pBssDescr->rssi);
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 184a9cd1f6cb..cf70c0b70586 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -2661,6 +2661,18 @@ eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg)
break;
#endif /* FEATURE_WLAN_CH_AVOID */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ case eWNI_SME_AUTO_SHUTDOWN_IND:
+ if (pMac->sme.pAutoShutdownNotificationCb)
+ {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
+ "%s: Auto shutdown notification", __func__);
+ pMac->sme.pAutoShutdownNotificationCb();
+ }
+ vos_mem_free(pMsg->bodyptr);
+ break;
+#endif
+
case eWNI_SME_DFS_RADAR_FOUND:
case eWNI_SME_DFS_CSAIE_TX_COMPLETE_IND:
{
@@ -12328,6 +12340,89 @@ eHalStatus sme_getChannelInfo(tHalHandle hHal, tANI_U8 chanId,
}
#endif /* QCA_WIFI_2_0 */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+/* ---------------------------------------------------------------------------
+ \fn sme_auto_shutdown_cb
+ \brief Used to plug in callback function for receiving auto shutdown evt
+ \param hHal
+ \param pCallbackfn : callback function pointer should be plugged in
+ \- return eHalStatus
+-------------------------------------------------------------------------*/
+eHalStatus sme_set_auto_shutdown_cb
+(
+ tHalHandle hHal,
+ void (*pCallbackfn)(void)
+)
+{
+ eHalStatus status = eHAL_STATUS_SUCCESS;
+ tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: Plug in Auto shutdown event callback", __func__);
+
+ status = sme_AcquireGlobalLock(&pMac->sme);
+ if (eHAL_STATUS_SUCCESS == status)
+ {
+ if (NULL != pCallbackfn)
+ {
+ pMac->sme.pAutoShutdownNotificationCb = pCallbackfn;
+ }
+ sme_ReleaseGlobalLock(&pMac->sme);
+ }
+
+ return(status);
+}
+/* ---------------------------------------------------------------------------
+ \fn sme_set_auto_shutdown_timer
+ \API to set auto shutdown timer value in FW.
+ \param hHal - The handle returned by macOpen
+ \param timer_val - The auto shutdown timer value to be set
+ \- return Configuration message posting status, SUCCESS or Fail
+ -------------------------------------------------------------------------*/
+eHalStatus sme_set_auto_shutdown_timer(tHalHandle hHal, tANI_U32 timer_val)
+{
+ eHalStatus status = eHAL_STATUS_SUCCESS;
+ VOS_STATUS vosStatus = VOS_STATUS_SUCCESS;
+ tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+ tSirAutoShutdownCmdParams *auto_sh_cmd;
+ vos_msg_t vosMessage;
+
+ status = sme_AcquireGlobalLock(&pMac->sme);
+ if (eHAL_STATUS_SUCCESS == status)
+ {
+ auto_sh_cmd = (tSirAutoShutdownCmdParams *)
+ vos_mem_malloc(sizeof(tSirAutoShutdownCmdParams));
+ if (auto_sh_cmd == NULL)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s Request Buffer Alloc Fail", __func__);
+ sme_ReleaseGlobalLock(&pMac->sme);
+ return eHAL_STATUS_FAILURE;
+ }
+
+ auto_sh_cmd->timer_val = timer_val;
+
+ /* serialize the req through MC thread */
+ vosMessage.bodyptr = auto_sh_cmd;
+ vosMessage.type = WDA_SET_AUTO_SHUTDOWN_TIMER_REQ;
+ vosStatus = vos_mq_post_message(VOS_MQ_ID_WDA, &vosMessage);
+ if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+ {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: Post Auto shutdown MSG fail", __func__);
+ vos_mem_free(auto_sh_cmd);
+ sme_ReleaseGlobalLock(&pMac->sme);
+ return eHAL_STATUS_FAILURE;
+ }
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
+ "%s: Posted Auto shutdown MSG", __func__);
+ sme_ReleaseGlobalLock(&pMac->sme);
+ }
+
+ return(status);
+}
+#endif
+
#ifdef FEATURE_WLAN_CH_AVOID
/* ---------------------------------------------------------------------------
\fn sme_AddChAvoidCallback
diff --git a/CORE/SYS/legacy/src/system/src/sysEntryFunc.c b/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
index 1284dfcb5563..f478a00d1eec 100644
--- a/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
+++ b/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
@@ -60,7 +60,7 @@ postPTTMsgApi(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
#include "vos_types.h"
#include "vos_packet.h"
-#define MAX_DEAUTH_ALLOWED 20
+#define MAX_DEAUTH_ALLOWED 5
// ---------------------------------------------------------------------------
/**
* sysInitGlobals
@@ -114,6 +114,7 @@ tSirRetStatus
sysBbtProcessMessageCore(tpAniSirGlobal pMac, tpSirMsgQ pMsg, tANI_U32 type,
tANI_U32 subType)
{
+ static tANI_U32 lastDeauthPacketTime = 0;
tSirRetStatus ret;
void* pBd;
tMgmtFrmDropReason dropReason;
@@ -136,7 +137,29 @@ sysBbtProcessMessageCore(tpAniSirGlobal pMac, tpSirMsgQ pMsg, tANI_U32 type,
if(type == SIR_MAC_MGMT_FRAME)
{
if ((subType == SIR_MAC_MGMT_DEAUTH) && (pMac->sys.gSysFrameCount[type][subType] >= MAX_DEAUTH_ALLOWED))
- goto fail;
+ {
+ tANI_U32 timeNow = adf_os_ticks();
+ tANI_U32 timeGap = adf_os_ticks_to_msecs(timeNow -
+ lastDeauthPacketTime);
+ if (timeGap < 1000)
+ goto fail;
+ }
+
+ if (subType == SIR_MAC_MGMT_DEAUTH)
+ {
+ tpSirMacMgmtHdr pMacHdr = WDA_GET_RX_MAC_HEADER(pBd);
+ PELOGE(sysLog( pMac, LOGE,
+ FL("DEAUTH frame allowed: "
+ "da: " MAC_ADDRESS_STR ", "
+ "sa: " MAC_ADDRESS_STR ", "
+ "bssid: " MAC_ADDRESS_STR ", "
+ "DEAUTH count so far: %d\n"),
+ MAC_ADDR_ARRAY(pMacHdr->da),
+ MAC_ADDR_ARRAY(pMacHdr->sa),
+ MAC_ADDR_ARRAY(pMacHdr->bssId),
+ pMac->sys.gSysFrameCount[type][subType] ););
+ lastDeauthPacketTime = adf_os_ticks();
+ }
if( (dropReason = limIsPktCandidateForDrop(pMac, pBd, subType)) != eMGMT_DROP_NO_DROP)
{
diff --git a/CORE/SYS/legacy/src/utils/src/macTrace.c b/CORE/SYS/legacy/src/utils/src/macTrace.c
index dba8841315cd..f1b0087b9e9e 100644
--- a/CORE/SYS/legacy/src/utils/src/macTrace.c
+++ b/CORE/SYS/legacy/src/utils/src/macTrace.c
@@ -808,6 +808,9 @@ tANI_U8* macTraceGetWdaMsgString( tANI_U16 wdaMsg )
#ifdef FEATURE_WLAN_CH_AVOID
CASE_RETURN_STRING(WDA_CH_AVOID_UPDATE_REQ);
#endif
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ CASE_RETURN_STRING(WDA_SET_AUTO_SHUTDOWN_TIMER_REQ);
+#endif
CASE_RETURN_STRING(WDA_INIT_THERMAL_INFO_CMD);
CASE_RETURN_STRING(WDA_SET_THERMAL_LEVEL);
CASE_RETURN_STRING(WDA_SET_SAP_INTRABSS_DIS);
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index def0b1e8c2a3..3cfa6cce912e 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -1312,6 +1312,10 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb);
#define WDA_CH_AVOID_UPDATE_REQ SIR_HAL_CH_AVOID_UPDATE_REQ
#endif /* FEATURE_WLAN_CH_AVOID */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+#define WDA_SET_AUTO_SHUTDOWN_TIMER_REQ SIR_HAL_SET_AUTO_SHUTDOWN_TIMER_REQ
+#endif
+
#define WDA_ADD_PERIODIC_TX_PTRN_IND SIR_HAL_ADD_PERIODIC_TX_PTRN_IND
#define WDA_DEL_PERIODIC_TX_PTRN_IND SIR_HAL_DEL_PERIODIC_TX_PTRN_IND