|
@@ -289,142 +289,6 @@ static QDF_STATUS sme_ps_disable_uapsd_req_params(tpAniSirGlobal mac_ctx,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * sme_ps_enter_wowl_req_params(): enable WOWL req Parama
|
|
|
- * @mac_ctx: global mac context
|
|
|
- * @session_id: session id
|
|
|
- *
|
|
|
- * Return: QDF_STATUS
|
|
|
- */
|
|
|
-static QDF_STATUS sme_ps_enter_wowl_req_params(tpAniSirGlobal mac_ctx,
|
|
|
- uint32_t session_id)
|
|
|
-{
|
|
|
- struct sSirHalWowlEnterParams *hal_wowl_params;
|
|
|
- struct sSirSmeWowlEnterParams *sme_wowl_params;
|
|
|
- uint32_t cfg_value = 0;
|
|
|
- struct ps_global_info *ps_global_info = &mac_ctx->sme.ps_global_info;
|
|
|
-
|
|
|
- sme_wowl_params =
|
|
|
- &ps_global_info->ps_params[session_id].wowl_enter_params;
|
|
|
-
|
|
|
- hal_wowl_params = qdf_mem_malloc(sizeof(*hal_wowl_params));
|
|
|
- if (NULL == hal_wowl_params) {
|
|
|
- sme_err("Fail to allocate memory for Enter Wowl Request");
|
|
|
- return QDF_STATUS_E_NOMEM;
|
|
|
- }
|
|
|
-
|
|
|
- /* fill in the message field */
|
|
|
- hal_wowl_params->ucMagicPktEnable = sme_wowl_params->ucMagicPktEnable;
|
|
|
- hal_wowl_params->ucPatternFilteringEnable =
|
|
|
- sme_wowl_params->ucPatternFilteringEnable;
|
|
|
- qdf_copy_macaddr(&hal_wowl_params->magic_ptrn,
|
|
|
- &sme_wowl_params->magic_ptrn);
|
|
|
-
|
|
|
-#ifdef WLAN_WAKEUP_EVENTS
|
|
|
- hal_wowl_params->ucWoWEAPIDRequestEnable =
|
|
|
- sme_wowl_params->ucWoWEAPIDRequestEnable;
|
|
|
- hal_wowl_params->ucWoWEAPOL4WayEnable =
|
|
|
- sme_wowl_params->ucWoWEAPOL4WayEnable;
|
|
|
- hal_wowl_params->ucWowNetScanOffloadMatch =
|
|
|
- sme_wowl_params->ucWowNetScanOffloadMatch;
|
|
|
- hal_wowl_params->ucWowGTKRekeyError =
|
|
|
- sme_wowl_params->ucWowGTKRekeyError;
|
|
|
- hal_wowl_params->ucWoWBSSConnLoss =
|
|
|
- sme_wowl_params->ucWoWBSSConnLoss;
|
|
|
-#endif /* WLAN_WAKEUP_EVENTS */
|
|
|
-
|
|
|
- if (wlan_cfg_get_int
|
|
|
- (mac_ctx, WNI_CFG_WOWLAN_UCAST_PATTERN_FILTER_ENABLE,
|
|
|
- &cfg_value) != eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_UCAST_PATTERN_FILTER_ENABLE");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucUcastPatternFilteringEnable = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- if (wlan_cfg_get_int
|
|
|
- (mac_ctx, WNI_CFG_WOWLAN_CHANNEL_SWITCH_ENABLE,
|
|
|
- &cfg_value) != eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_CHANNEL_SWITCH_ENABLE");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucWowChnlSwitchRcv = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- if (wlan_cfg_get_int
|
|
|
- (mac_ctx, WNI_CFG_WOWLAN_DEAUTH_ENABLE, &cfg_value) !=
|
|
|
- eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_DEAUTH_ENABLE");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucWowDeauthRcv = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- if (wlan_cfg_get_int
|
|
|
- (mac_ctx, WNI_CFG_WOWLAN_DISASSOC_ENABLE, &cfg_value) !=
|
|
|
- eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_DISASSOC_ENABLE");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucWowDisassocRcv = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- if (wlan_cfg_get_int(mac_ctx, WNI_CFG_WOWLAN_MAX_MISSED_BEACON,
|
|
|
- &cfg_value) != eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_MAX_MISSED_BEACON");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucWowMaxMissedBeacons = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- if (wlan_cfg_get_int(mac_ctx, WNI_CFG_WOWLAN_MAX_SLEEP_PERIOD,
|
|
|
- &cfg_value) != eSIR_SUCCESS) {
|
|
|
- sme_err("cfgGet failed for WNI_CFG_WOWLAN_MAX_SLEEP_PERIOD");
|
|
|
- goto end;
|
|
|
- }
|
|
|
- hal_wowl_params->ucWowMaxSleepUsec = (uint8_t) cfg_value;
|
|
|
-
|
|
|
- hal_wowl_params->sessionId = sme_wowl_params->sessionId;
|
|
|
-
|
|
|
- if (QDF_STATUS_SUCCESS == sme_post_ps_msg_to_wma(WMA_WOWL_ENTER_REQ,
|
|
|
- hal_wowl_params)){
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
|
|
|
- FL("Msg WMA_WOWL_ENTER_REQ Successfully sent to WMA"));
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
- } else {
|
|
|
- return QDF_STATUS_E_FAILURE;
|
|
|
- }
|
|
|
-
|
|
|
-end:
|
|
|
- if (hal_wowl_params != NULL)
|
|
|
- qdf_mem_free(hal_wowl_params);
|
|
|
- return QDF_STATUS_E_FAILURE;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * sme_ps_exit_wowl_req_params(): Exit WOWL req params
|
|
|
- * @mac_ctx: global mac context
|
|
|
- * @session_id: session id
|
|
|
- *
|
|
|
- * Return: QDF_STATUS
|
|
|
- */
|
|
|
-static QDF_STATUS sme_ps_exit_wowl_req_params(tpAniSirGlobal mac_ctx,
|
|
|
- uint32_t session_id)
|
|
|
-{
|
|
|
- struct sSirHalWowlExitParams *hal_wowl_msg;
|
|
|
-
|
|
|
- hal_wowl_msg = qdf_mem_malloc(sizeof(*hal_wowl_msg));
|
|
|
- if (NULL == hal_wowl_msg) {
|
|
|
- sme_err("Fail to allocate memory for WoWLAN Add Bcast Pattern");
|
|
|
- return QDF_STATUS_E_NOMEM;
|
|
|
- }
|
|
|
- hal_wowl_msg->sessionId = session_id;
|
|
|
-
|
|
|
- if (QDF_STATUS_SUCCESS == sme_post_ps_msg_to_wma(WMA_WOWL_EXIT_REQ,
|
|
|
- hal_wowl_msg)){
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
|
|
|
- FL("Msg WMA_WOWL_EXIT_REQ Successfully sent to WMA"));
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
- } else {
|
|
|
- return QDF_STATUS_E_FAILURE;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* sme_ps_process_command(): Sme process power save messages
|
|
|
* and pass messages to WMA.
|
|
@@ -458,13 +322,6 @@ QDF_STATUS sme_ps_process_command(tpAniSirGlobal mac_ctx, uint32_t session_id,
|
|
|
case SME_PS_UAPSD_DISABLE:
|
|
|
status = sme_ps_disable_uapsd_req_params(mac_ctx, session_id);
|
|
|
break;
|
|
|
- case SME_PS_WOWL_ENTER:
|
|
|
- status = sme_ps_enter_wowl_req_params(mac_ctx, session_id);
|
|
|
- break;
|
|
|
- case SME_PS_WOWL_EXIT:
|
|
|
- status = sme_ps_exit_wowl_req_params(mac_ctx, session_id);
|
|
|
- break;
|
|
|
-
|
|
|
default:
|
|
|
sme_err("Invalid command type: %d", command);
|
|
|
status = QDF_STATUS_E_FAILURE;
|