diff options
| author | Sameer Thalappil <sameert@qca.qualcomm.com> | 2014-12-03 19:22:42 -0800 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2014-12-19 16:19:10 +0530 |
| commit | 17d484de4efe96717ecaf9f715ce85a29f79af9f (patch) | |
| tree | ccab510044dcec83c85f72f789adaac9ef8c72a2 | |
| parent | 73d796f69acd29c3e3cac10cc5a85de9e3b03f16 (diff) | |
qcacld: [CORESTACK] Add support for auto suspend
Changes to suppport Auto suspend feature. Auto suspend
indication is processed thru SME.
CRs-Fixed: 761959
Change-Id: I367df0006cd0b2223e556623abb720c977dc16b1
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 3 | ||||
| -rw-r--r-- | CORE/MAC/src/include/sirParams.h | 4 | ||||
| -rw-r--r-- | CORE/SME/inc/smeInternal.h | 3 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 24 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Trace.h | 3 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 58 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Trace.c | 3 | ||||
| -rw-r--r-- | CORE/SYS/legacy/src/utils/src/macTrace.c | 4 | ||||
| -rw-r--r-- | CORE/WDA/inc/wlan_qct_wda.h | 4 |
9 files changed, 106 insertions, 0 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 2504e1827f01..5f941c997819 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -3505,6 +3505,9 @@ typedef struct sSirWlanSuspendParam tANI_U8 configuredMcstBcstFilterSetting; tANI_U8 sessionId; tANI_U8 connectedState; +#ifdef FEATURE_BUS_AUTO_SUSPEND + void (*resumed_callback)(void *); +#endif }tSirWlanSuspendParam,*tpSirWlanSuspendParam; typedef struct sSirWlanResumeParam diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h index 37bd57885816..5be46a805c17 100644 --- a/CORE/MAC/src/include/sirParams.h +++ b/CORE/MAC/src/include/sirParams.h @@ -693,6 +693,10 @@ typedef struct sSirMbMsgP2p #endif /* WLAN_FEATURE_APFIND */ #define SIR_HAL_OCB_SET_SCHED_REQUEST (SIR_HAL_ITC_MSG_TYPES_BEGIN + 307) +#ifdef FEATURE_BUS_AUTO_SUSPEND +#define SIR_HAL_WLAN_AUTO_SUSPEND_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 308) +#define SIR_HAL_WLAN_AUTO_RESUME_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 309) +#endif #define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF) diff --git a/CORE/SME/inc/smeInternal.h b/CORE/SME/inc/smeInternal.h index dcdbcdaf2169..3b4af201158c 100644 --- a/CORE/SME/inc/smeInternal.h +++ b/CORE/SME/inc/smeInternal.h @@ -181,6 +181,9 @@ typedef struct tagSmeStruct /* get temperature event context and callback */ void *pTemperatureCbContext; void (*pGetTemperatureCb)(int temperature, void *context); +#ifdef FEATURE_BUS_AUTO_SUSPEND + bool enable_bus_auto_suspend; +#endif } tSmeStruct, *tpSmeStruct; diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 4e7240314e1b..d6bad521203e 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -118,6 +118,9 @@ typedef struct _smeConfigParams tANI_U8 max_intf_count; tANI_BOOLEAN enable5gEBT; tANI_BOOLEAN enableSelfRecovery; +#ifdef FEATURE_BUS_AUTO_SUSPEND + bool enable_bus_auto_suspend; +#endif } tSmeConfigParams, *tpSmeConfigParams; typedef enum @@ -4233,4 +4236,25 @@ eHalStatus sme_set_sap_auth_offload(tHalHandle hHal, VOS_STATUS sme_apfind_set_cmd(struct sme_ap_find_request_req *input); #endif /* WLAN_FEATURE_APFIND */ +#ifdef FEATURE_BUS_AUTO_SUSPEND +/** + * sme_configure_bus_auto_suspend_ind() - Auto suspend request to lower MAC + * + * @hHal: The handle returned by macOpen. + * @suspend_param: Callback to be called when ready to auto suspend event is + * received. + * @callback: The callback API that should be invoked when auto suspended. + * @context: Context associated with csrReadyToSuspendCallback. + * + * SME will pass this request to lower mac to Indicate that the wlan needs + * to be auto suspended. + * + * Return: HAL status success or failure + */ +eHalStatus sme_configure_bus_auto_suspend_ind(tHalHandle hHal, + tSirWlanSuspendParam *suspend_param, + csrReadyToSuspendCallback callback, + void *context); +#endif + #endif //#if !defined( __SME_API_H ) diff --git a/CORE/SME/inc/sme_Trace.h b/CORE/SME/inc/sme_Trace.h index dfdb9962fc6e..799cf3b5b278 100644 --- a/CORE/SME/inc/sme_Trace.h +++ b/CORE/SME/inc/sme_Trace.h @@ -136,6 +136,9 @@ enum { TRACE_CODE_SME_RX_HDD_UPDATE_P2P_IE, TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_N_PROBES, TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_HOME_AWAY_TIME, +#ifdef FEATURE_BUS_AUTO_SUSPEND + TRACE_CODE_SME_RX_HDD_CONFIG_AUTO_SUSPENDIND, +#endif }; void smeTraceInit(tpAniSirGlobal pMac); diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index a808b0b48c45..c72985e586b9 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -1645,6 +1645,10 @@ eHalStatus sme_UpdateConfig(tHalHandle hHal, tpSmeConfigParams pSmeConfigParams) pMac->enable5gEBT = pSmeConfigParams->enable5gEBT; pMac->sme.enableSelfRecovery = pSmeConfigParams->enableSelfRecovery; +#ifdef FEATURE_BUS_AUTO_SUSPEND + pMac->sme.enable_bus_auto_suspend = + pSmeConfigParams->enable_bus_auto_suspend; +#endif return status; } @@ -4303,6 +4307,9 @@ eHalStatus sme_GetConfigParam(tHalHandle hHal, tSmeConfigParams *pParam) pParam->fP2pListenOffload = pMac->fP2pListenOffload; pParam->max_intf_count = pMac->sme.max_intf_count; pParam->enableSelfRecovery = pMac->sme.enableSelfRecovery; +#ifdef FEATURE_BUS_AUTO_SUSPEND + pParam->enable_bus_auto_suspend = pMac->sme.enable_bus_auto_suspend; +#endif sme_ReleaseGlobalLock( &pMac->sme ); } @@ -13555,6 +13562,57 @@ eHalStatus sme_ModifyAddIE(tHalHandle hHal, return (status); } +#ifdef FEATURE_BUS_AUTO_SUSPEND +/** + * sme_configure_bus_auto_suspend_ind() - Auto suspend request to lower MAC + * + * @hHal: The handle returned by macOpen. + * @suspend_param: Callback to be called when ready to auto suspend event is + * received. + * @callback: The callback API that should be invoked when auto suspended. + * @context: Context associated with csrReadyToSuspendCallback. + * + * SME will pass this request to lower mac to Indicate that the wlan needs + * to be auto suspended. + * + * Return: HAL status success or failure + */ +eHalStatus sme_configure_bus_auto_suspend_ind(tHalHandle hHal, + tSirWlanSuspendParam *suspend_param, + csrReadyToSuspendCallback callback, + void *context) +{ + eHalStatus status = eHAL_STATUS_SUCCESS; + VOS_STATUS vosStatus = VOS_STATUS_SUCCESS; + tpAniSirGlobal pMac = PMAC_STRUCT(hHal); + vos_msg_t vosMessage; + tSirWlanSuspendParam *sme_suspend_param; + + MTRACE(vos_trace(VOS_MODULE_ID_SME, + TRACE_CODE_SME_RX_HDD_CONFIG_AUTO_SUSPENDIND, NO_SESSION, 0)); + + sme_suspend_param = vos_mem_malloc(sizeof(tSirWlanSuspendParam)); + if (!sme_suspend_param) { + smsLog(pMac, LOGE, + FL("Not able to allocate memory for suspend indication")); + return eHAL_STATUS_FAILURE; + } + *sme_suspend_param = *suspend_param; + + pMac->readyToSuspendCallback = callback; + pMac->readyToSuspendContext = context; + + vosMessage.bodyptr = sme_suspend_param; + vosMessage.type = WDA_WLAN_AUTO_SUSPEND_IND; + vosStatus = vos_mq_post_message(VOS_MQ_ID_WDA, &vosMessage); + if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { + pMac->readyToSuspendCallback = NULL; + pMac->readyToSuspendContext = NULL; + status = eHAL_STATUS_FAILURE; + } + return(status); +} +#endif /*---------------------------------------------------------------------------- \fn sme_UpdateAddIE diff --git a/CORE/SME/src/sme_common/sme_Trace.c b/CORE/SME/src/sme_common/sme_Trace.c index c38d09a14cc4..a7a0ef04827d 100644 --- a/CORE/SME/src/sme_common/sme_Trace.c +++ b/CORE/SME/src/sme_common/sme_Trace.c @@ -144,6 +144,9 @@ static tANI_U8* smeTraceGetRxMsgString( tANI_U32 code ) CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_P2P_IE); CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_N_PROBES); CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_HOME_AWAY_TIME); +#ifdef FEATURE_BUS_AUTO_SUSPEND + CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_AUTO_SUSPENDIND); +#endif default: return( "UNKNOWN" ); diff --git a/CORE/SYS/legacy/src/utils/src/macTrace.c b/CORE/SYS/legacy/src/utils/src/macTrace.c index 72d4aba5bf56..9f7ff1811352 100644 --- a/CORE/SYS/legacy/src/utils/src/macTrace.c +++ b/CORE/SYS/legacy/src/utils/src/macTrace.c @@ -834,6 +834,10 @@ tANI_U8* macTraceGetWdaMsgString( tANI_U16 wdaMsg ) #ifdef WLAN_FEATURE_APFIND CASE_RETURN_STRING(WDA_APFIND_SET_CMD); #endif /*WLAN_FEATURE_APFIND*/ +#ifdef FEATURE_BUS_AUTO_SUSPEND + CASE_RETURN_STRING(WDA_WLAN_AUTO_SUSPEND_IND); + CASE_RETURN_STRING(WDA_WLAN_AUTO_RESUME_IND); +#endif default: return((tANI_U8*) "UNKNOWN" ); break; diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h index 8a4b7bc0eb7b..9cd68309e997 100644 --- a/CORE/WDA/inc/wlan_qct_wda.h +++ b/CORE/WDA/inc/wlan_qct_wda.h @@ -1022,6 +1022,10 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb); #endif /* WLAN_FEATURE_APFIND */ #define WDA_OCB_SET_SCHED_REQUEST SIR_HAL_OCB_SET_SCHED_REQUEST +#ifdef FEATURE_BUS_AUTO_SUSPEND +#define WDA_WLAN_AUTO_SUSPEND_IND SIR_HAL_WLAN_AUTO_SUSPEND_IND +#define WDA_WLAN_AUTO_RESUME_IND SIR_HAL_WLAN_AUTO_RESUME_IND +#endif tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg); |
