diff --git a/core/mac/inc/ani_global.h b/core/mac/inc/ani_global.h index 0a8d9f3c35d5..af5e3e84b565 100644 --- a/core/mac/inc/ani_global.h +++ b/core/mac/inc/ani_global.h @@ -321,15 +321,6 @@ typedef struct sLimTimers { TX_TIMER gLimUpdateOlbcCacheTimer; TX_TIMER gLimChannelSwitchTimer; - /* This TIMER is started on the STA, as indicated by the */ - /* AP in its Quiet BSS IE, for the specified interval */ - TX_TIMER gLimQuietTimer; - /* This TIMER is started on the AP, prior to the AP going */ - /* into LEARN mode */ - /* This TIMER is started on the STA, for the specified */ - /* quiet duration */ - TX_TIMER gLimQuietBssTimer; - TX_TIMER gLimFTPreAuthRspTimer; #ifdef FEATURE_WLAN_ESE diff --git a/core/mac/src/include/sir_params.h b/core/mac/src/include/sir_params.h index d41bdad774c0..893b930deac2 100644 --- a/core/mac/src/include/sir_params.h +++ b/core/mac/src/include/sir_params.h @@ -296,9 +296,6 @@ struct sir_mgmt_msg { #define SIR_HAL_GET_TX_POWER_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 73) #define SIR_HAL_GET_NOISE_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 74) -/* Messages to support transmit_halt and transmit_resume */ -#define SIR_HAL_TRANSMISSION_CONTROL_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 75) - #define SIR_HAL_LOW_RSSI_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 80) #define SIR_HAL_BEACON_FILTER_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 81) @@ -749,8 +746,6 @@ struct sir_mgmt_msg { /* currently unused (SIR_LIM_TIMEOUT_MSG_START + 0x18) */ #define SIR_LIM_UPDATE_OLBC_CACHEL_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x19) #define SIR_LIM_CHANNEL_SWITCH_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x1A) -#define SIR_LIM_QUIET_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x1B) -#define SIR_LIM_QUIET_BSS_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x1C) #define SIR_LIM_WPS_OVERLAP_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x1D) #define SIR_LIM_FT_PREAUTH_RSP_TIMEOUT (SIR_LIM_TIMEOUT_MSG_START + 0x1E) diff --git a/core/mac/src/pe/include/lim_api.h b/core/mac/src/pe/include/lim_api.h index 26f19714b13c..de2e88bfaf08 100644 --- a/core/mac/src/pe/include/lim_api.h +++ b/core/mac/src/pe/include/lim_api.h @@ -65,9 +65,6 @@ /*tpdphHashNode mlmStaContext*/ #define GET_LIM_STA_CONTEXT_MLM_STATE(pStaDs) (pStaDs->mlmStaContext.mlmState) #define SET_LIM_STA_CONTEXT_MLM_STATE(pStaDs, state) (pStaDs->mlmStaContext.mlmState = state) -/* gLimQuietState */ -#define GET_LIM_QUIET_STATE(pMac) (pMac->lim.gLimSpecMgmt.quietState) -#define SET_LIM_QUIET_STATE(pMac, state) (pMac->lim.gLimSpecMgmt.quietState = state) #define LIM_IS_CONNECTION_ACTIVE(psessionEntry) (psessionEntry->LimRxedBeaconCntDuringHB) /*pMac->lim.gLimProcessDefdMsgs*/ #define GET_LIM_PROCESS_DEFD_MESGS(pMac) (pMac->lim.gLimProcessDefdMsgs) diff --git a/core/mac/src/pe/include/lim_global.h b/core/mac/src/pe/include/lim_global.h index 2f19145804d7..0c4469b8736e 100644 --- a/core/mac/src/pe/include/lim_global.h +++ b/core/mac/src/pe/include/lim_global.h @@ -160,25 +160,6 @@ typedef enum eLimMlmStates { eLIM_MLM_WT_SAE_AUTH_STATE, } tLimMlmStates; -/* 11h channel quiet states */ - -/* - * This enum indicates in which state the device is in - * when it receives quiet element in beacon or probe-response. - * The default quiet state of the device is always INIT - * eLIM_QUIET_BEGIN - When Quiet period is started - * eLIM_QUIET_CHANGED - When Quiet period is updated - * eLIM_QUIET_RUNNING - Between two successive Quiet updates - * eLIM_QUIET_END - When quiet period ends - */ -typedef enum eLimQuietStates { - eLIM_QUIET_INIT, - eLIM_QUIET_BEGIN, - eLIM_QUIET_CHANGED, - eLIM_QUIET_RUNNING, - eLIM_QUIET_END -} tLimQuietStates; - /* 11h channel switch states */ /* @@ -518,21 +499,7 @@ typedef struct sLimWscIeInfo { /* structure to hold all 11h specific data */ typedef struct sLimSpecMgmtInfo { - tLimQuietStates quietState; - uint32_t quietCount; - /* This is in units of system TICKS */ - uint32_t quietDuration; - /* This is in units of TU, for over the air transmission */ - uint32_t quietDuration_TU; - /* After this timeout, actual quiet starts */ - uint32_t quietTimeoutValue; - /* Used on AP, if quiet is enabled during learning */ - bool fQuietEnabled; tLimDot11hChanSwStates dot11hChanSwState; - /* Radar detected in cur oper chan on AP */ - bool fRadarDetCurOperChan; - /* Whether radar interrupt has been configured */ - bool fRadarIntrConfigured; } tLimSpecMgmtInfo, *tpLimSpecMgmtInfo; #ifdef FEATURE_WLAN_TDLS diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index 4291203222c0..6d6b8d29096c 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -88,18 +88,6 @@ void lim_stop_tx_and_switch_channel(tpAniSirGlobal pMac, uint8_t sessionId) pe_debug("Channel switch Mode: %d", psessionEntry->gLimChannelSwitch.switchMode); - if (psessionEntry->gLimChannelSwitch.switchMode == - eSIR_CHANSW_MODE_SILENT - || psessionEntry->gLimChannelSwitch.switchCount <= - SIR_CHANSW_TX_STOP_MAX_COUNT) { - /* Freeze the transmission */ - lim_frame_transmission_control(pMac, eLIM_TX_ALL, eLIM_STOP_TX); - - } else { - /* Resume the transmission */ - lim_frame_transmission_control(pMac, eLIM_TX_ALL, eLIM_RESUME_TX); - } - pMac->lim.limTimers.gLimChannelSwitchTimer.sessionId = sessionId; /* change the channel immediately only if * the channel switch count is 0 @@ -162,30 +150,6 @@ QDF_STATUS lim_start_channel_switch(tpAniSirGlobal pMac, return QDF_STATUS_E_FAILURE; } - /* Follow the channel switch, forget about the previous quiet. */ - /* If quiet is running, chance is there to resume tx on its timeout. */ - /* so stop timer for a safer side. */ - if (psessionEntry->gLimSpecMgmt.quietState == eLIM_QUIET_BEGIN) { - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_DEACTIVATE, - psessionEntry->peSessionId, eLIM_QUIET_TIMER)); - if (tx_timer_deactivate(&pMac->lim.limTimers.gLimQuietTimer) != - TX_SUCCESS) { - pe_err("tx_timer_deactivate failed"); - return QDF_STATUS_E_FAILURE; - } - } else if (psessionEntry->gLimSpecMgmt.quietState == eLIM_QUIET_RUNNING) { - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_DEACTIVATE, - psessionEntry->peSessionId, eLIM_QUIET_BSS_TIMER)); - if (tx_timer_deactivate(&pMac->lim.limTimers.gLimQuietBssTimer) - != TX_SUCCESS) { - pe_err("tx_timer_deactivate failed"); - return QDF_STATUS_E_FAILURE; - } - } - psessionEntry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; - /* Prepare for 11h channel switch */ lim_prepare_for11h_channel_switch(pMac, psessionEntry); diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index 0f80ed76ebc1..c1b9f1d23c03 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -1812,12 +1812,6 @@ static void lim_process_messages(tpAniSirGlobal mac_ctx, case SIR_LIM_CHANNEL_SWITCH_TIMEOUT: lim_process_channel_switch_timeout(mac_ctx); break; - case SIR_LIM_QUIET_TIMEOUT: - lim_process_quiet_timeout(mac_ctx); - break; - case SIR_LIM_QUIET_BSS_TIMEOUT: - lim_process_quiet_bss_timeout(mac_ctx); - break; case SIR_LIM_UPDATE_OLBC_CACHEL_TIMEOUT: lim_handle_update_olbc_cache(mac_ctx); break; diff --git a/core/mac/src/pe/lim/lim_timer_utils.c b/core/mac/src/pe/lim/lim_timer_utils.c index da7294321513..9f5c8829f99b 100644 --- a/core/mac/src/pe/lim/lim_timer_utils.c +++ b/core/mac/src/pe/lim/lim_timer_utils.c @@ -69,29 +69,6 @@ static bool lim_create_non_ap_timers(tpAniSirGlobal pMac) pe_err("failed to create Ch Switch timer"); return false; } - /* Create Quiet Timer - * This is used on the STA to go and shut-off Tx/Rx "after" the - * specified quiteInterval - */ - if (tx_timer_create(pMac, &pMac->lim.limTimers.gLimQuietTimer, - "QUIET TIMER", lim_quiet_timer_handler, - SIR_LIM_QUIET_TIMEOUT, LIM_QUIET_TIMER_TICKS, - 0, TX_NO_ACTIVATE) != TX_SUCCESS) { - pe_err("failed to create Quiet Begin Timer"); - return false; - } - /* Create Quiet BSS Timer - * After the specified quiteInterval, determined by gLimQuietTimer, this - * timer, gLimQuietBssTimer, trigger and put the STA to sleep for the - * specified gLimQuietDuration - */ - if (tx_timer_create(pMac, &pMac->lim.limTimers.gLimQuietBssTimer, - "QUIET BSS TIMER", lim_quiet_bss_timer_handler, - SIR_LIM_QUIET_BSS_TIMEOUT, LIM_QUIET_BSS_TIMER_TICK, - 0, TX_NO_ACTIVATE) != TX_SUCCESS) { - pe_err("failed to create Quiet Bss Timer"); - return false; - } cfgValue = SYS_MS_TO_TICKS( pMac->mlme_cfg->timeouts.join_failure_timeout); @@ -312,8 +289,6 @@ err_timer: tx_timer_delete(&pMac->lim.limTimers.gLimJoinFailureTimer); tx_timer_delete(&pMac->lim.limTimers.gLimPeriodicJoinProbeReqTimer); tx_timer_delete(&pMac->lim.limTimers.g_lim_periodic_auth_retry_timer); - tx_timer_delete(&pMac->lim.limTimers.gLimQuietBssTimer); - tx_timer_delete(&pMac->lim.limTimers.gLimQuietTimer); tx_timer_delete(&pMac->lim.limTimers.gLimChannelSwitchTimer); tx_timer_delete(&pMac->lim.limTimers.gLimActiveToPassiveChannelTimer); tx_timer_delete(&pMac->lim.limTimers.sae_auth_timer); @@ -1000,29 +975,3 @@ void lim_channel_switch_timer_handler(void *pMacGlobal, uint32_t param) lim_post_msg_api(pMac, &msg); } - -void lim_quiet_timer_handler(void *pMacGlobal, uint32_t param) -{ - struct scheduler_msg msg = {0}; - tpAniSirGlobal pMac = (tpAniSirGlobal) pMacGlobal; - - msg.type = SIR_LIM_QUIET_TIMEOUT; - msg.bodyval = (uint32_t) param; - msg.bodyptr = NULL; - - pe_debug("Post SIR_LIM_QUIET_TIMEOUT msg"); - lim_post_msg_api(pMac, &msg); -} - -void lim_quiet_bss_timer_handler(void *pMacGlobal, uint32_t param) -{ - struct scheduler_msg msg = {0}; - tpAniSirGlobal pMac = (tpAniSirGlobal) pMacGlobal; - - msg.type = SIR_LIM_QUIET_BSS_TIMEOUT; - msg.bodyval = (uint32_t) param; - msg.bodyptr = NULL; - pe_debug("Post SIR_LIM_QUIET_BSS_TIMEOUT msg"); - lim_post_msg_api(pMac, &msg); -} - diff --git a/core/mac/src/pe/lim/lim_timer_utils.h b/core/mac/src/pe/lim/lim_timer_utils.h index f6afa72d1970..585b1e51df76 100644 --- a/core/mac/src/pe/lim/lim_timer_utils.h +++ b/core/mac/src/pe/lim/lim_timer_utils.h @@ -48,8 +48,6 @@ enum { eLIM_ADDTS_RSP_TIMER, eLIM_CHANNEL_SWITCH_TIMER, eLIM_LEARN_DURATION_TIMER, - eLIM_QUIET_TIMER, - eLIM_QUIET_BSS_TIMER, eLIM_WPS_OVERLAP_TIMER, eLIM_FT_PREAUTH_RSP_TIMER, eLIM_REMAIN_CHN_TIMER, @@ -80,8 +78,6 @@ void lim_activate_auth_rsp_timer(tpAniSirGlobal, tLimPreAuthNode *); void lim_update_olbc_cache_timer_handler(void *, uint32_t); void lim_addts_response_timer_handler(void *, uint32_t); void lim_channel_switch_timer_handler(void *, uint32_t); -void lim_quiet_timer_handler(void *, uint32_t); -void lim_quiet_bss_timer_handler(void *, uint32_t); void limCBScanIntervalTimerHandler(void *, uint32_t); void limCBScanDurationTimerHandler(void *, uint32_t); #endif /* __LIM_TIMER_UTILS_H */ diff --git a/core/mac/src/pe/lim/lim_trace.c b/core/mac/src/pe/lim/lim_trace.c index 5ddc39c1abc9..e674642a82d7 100644 --- a/core/mac/src/pe/lim/lim_trace.c +++ b/core/mac/src/pe/lim/lim_trace.c @@ -59,8 +59,6 @@ static uint8_t *__lim_trace_get_timer_string(uint16_t timerId) CASE_RETURN_STRING(eLIM_ADDTS_RSP_TIMER); CASE_RETURN_STRING(eLIM_CHANNEL_SWITCH_TIMER); CASE_RETURN_STRING(eLIM_LEARN_DURATION_TIMER); - CASE_RETURN_STRING(eLIM_QUIET_TIMER); - CASE_RETURN_STRING(eLIM_QUIET_BSS_TIMER); CASE_RETURN_STRING(eLIM_WPS_OVERLAP_TIMER); CASE_RETURN_STRING(eLIM_FT_PREAUTH_RSP_TIMER); CASE_RETURN_STRING(eLIM_REMAIN_CHN_TIMER); diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index 94313b2453aa..0700a848a9f1 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -587,12 +587,6 @@ void lim_deactivate_timers(tpAniSirGlobal mac_ctx) /* Deactivate wait-for-probe-after-Heartbeat timer. */ tx_timer_deactivate(&lim_timer->gLimProbeAfterHBTimer); - /* Deactivate and delete Quiet timer. */ - tx_timer_deactivate(&lim_timer->gLimQuietTimer); - - /* Deactivate Quiet BSS timer. */ - tx_timer_deactivate(&lim_timer->gLimQuietBssTimer); - /* Deactivate cnf wait timer */ for (n = 0; n < (mac_ctx->lim.maxStation + 1); n++) { tx_timer_deactivate(&lim_timer->gpLimCnfWaitTimer[n]); @@ -669,12 +663,6 @@ void lim_cleanup_mlm(tpAniSirGlobal mac_ctx) /* Delete wait-for-probe-after-Heartbeat timer. */ tx_timer_delete(&lim_timer->gLimProbeAfterHBTimer); - /* Delete Quiet timer. */ - tx_timer_delete(&lim_timer->gLimQuietTimer); - - /* Delete Quiet BSS timer. */ - tx_timer_delete(&lim_timer->gLimQuietBssTimer); - /* Delete cnf wait timer */ for (n = 0; n < (mac_ctx->lim.maxStation + 1); n++) { tx_timer_delete(&lim_timer->gpLimCnfWaitTimer[n]); @@ -2206,285 +2194,6 @@ void lim_cancel_dot11h_channel_switch(tpAniSirGlobal pMac, } } -/** - * lim_cancel_dot11h_quiet() - * - * @mac_ctx: pointer to global mac structure - * @psession_entry: pointer to tppesession - * - * Cancel the quieting on Station if latest beacon - * doesn't contain quiet IE in it. - * - * Return: none - */ -void lim_cancel_dot11h_quiet(tpAniSirGlobal pMac, tpPESession psessionEntry) -{ - if (!LIM_IS_STA_ROLE(psessionEntry)) - return; - - if (psessionEntry->gLimSpecMgmt.quietState == eLIM_QUIET_BEGIN) { - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_DEACTIVATE, - psessionEntry->peSessionId, eLIM_QUIET_TIMER)); - if (tx_timer_deactivate(&pMac->lim.limTimers.gLimQuietTimer) != - TX_SUCCESS) { - pe_err("tx_timer_deactivate failed"); - } - } else if (psessionEntry->gLimSpecMgmt.quietState == eLIM_QUIET_RUNNING) { - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_DEACTIVATE, - psessionEntry->peSessionId, eLIM_QUIET_BSS_TIMER)); - if (tx_timer_deactivate(&pMac->lim.limTimers.gLimQuietBssTimer) - != TX_SUCCESS) { - pe_err("tx_timer_deactivate failed"); - } - /** - * If the channel switch is already running in silent mode, dont resume the - * transmission. Channel switch timer when timeout, transmission will be resumed. - */ - if (! - ((psessionEntry->gLimSpecMgmt.dot11hChanSwState == - eLIM_11H_CHANSW_RUNNING) - && (psessionEntry->gLimChannelSwitch.switchMode == - eSIR_CHANSW_MODE_SILENT))) { - lim_frame_transmission_control(pMac, eLIM_TX_ALL, - eLIM_RESUME_TX); - lim_restore_pre_quiet_state(pMac, psessionEntry); - } - } - psessionEntry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; -} - -/** - * lim_process_quiet_timeout - * - * FUNCTION: - * This function is active only on the STA. - * Handles SIR_LIM_QUIET_TIMEOUT - * - * LOGIC: - * This timeout can occur under only one circumstance: - * - * 1) When gLimQuietState = eLIM_QUIET_BEGIN - * This indicates that the timeout "interval" has - * expired. This is a trigger for the STA to now - * shut-off Tx/Rx for the specified gLimQuietDuration - * -> The TIMER object gLimQuietBssTimer is - * activated - * -> With timeout = gLimQuietDuration - * -> gLimQuietState is set to eLIM_QUIET_RUNNING - * - * ASSUMPTIONS: - * Using two TIMER objects - - * gLimQuietTimer & gLimQuietBssTimer - * - * NOTE: - * - * @param pMac - Pointer to Global MAC structure - * - * @return None - */ -void lim_process_quiet_timeout(tpAniSirGlobal pMac) -{ - tpPESession psessionEntry; - - psessionEntry = pe_find_session_by_session_id(pMac, - pMac->lim.limTimers.gLimQuietTimer.sessionId); - if (psessionEntry == NULL) { - pe_err("Session Does not exist for given sessionID"); - return; - } - - pe_debug("quietState: %d", psessionEntry->gLimSpecMgmt.quietState); - switch (psessionEntry->gLimSpecMgmt.quietState) { - case eLIM_QUIET_BEGIN: - /* Time to Stop data traffic for quietDuration */ - /* lim_deactivate_and_change_timer(pMac, eLIM_QUIET_BSS_TIMER); */ - if (TX_SUCCESS != tx_timer_deactivate( - &pMac->lim.limTimers.gLimQuietBssTimer)) { - pe_err("Unable to de-activate gLimQuietBssTimer! Will attempt to activate anyway"); - } - /* gLimQuietDuration appears to be in units of ticks */ - /* Use it as is */ - if (TX_SUCCESS != - tx_timer_change(&pMac->lim.limTimers.gLimQuietBssTimer, - psessionEntry->gLimSpecMgmt.quietDuration, - 0)) { - pe_err("Unable to change gLimQuietBssTimer! Will still attempt to activate anyway"); - } - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_ACTIVATE, - pMac->lim.limTimers.gLimQuietTimer.sessionId, - eLIM_QUIET_BSS_TIMER)); - if (TX_SUCCESS != - tx_timer_activate(&pMac->lim.limTimers.gLimQuietBssTimer)) { - pe_warn("Unable to activate gLimQuietBssTimer! The STA will be unable to honor Quiet BSS"); - } else { - /* Transition to eLIM_QUIET_RUNNING */ - psessionEntry->gLimSpecMgmt.quietState = - eLIM_QUIET_RUNNING; - /* Shut-off Tx/Rx for gLimSpecMgmt.quietDuration */ - /* freeze the transmission */ - lim_frame_transmission_control(pMac, eLIM_TX_ALL, - eLIM_STOP_TX); - - pe_debug("Quiet BSS: STA shutting down for %d ticks", - psessionEntry->gLimSpecMgmt.quietDuration); - } - break; - - case eLIM_QUIET_RUNNING: - case eLIM_QUIET_INIT: - case eLIM_QUIET_END: - default: - /* */ - /* As of now, nothing to be done */ - /* */ - break; - } -} - -/** - * lim_process_quiet_bss_timeout() - Handles SIR_LIM_QUIET_BSS_TIMEOUT - * @mac_ctx: pointer to Globale Mac Structure - * - * This function is active on the AP and STA. - * Handles SIR_LIM_QUIET_BSS_TIMEOUT - * - * On the AP - - * When the SIR_LIM_QUIET_BSS_TIMEOUT is triggered, it is - * an indication for the AP to START sending out the - * Quiet BSS IE. - * If 802.11H is enabled, the Quiet BSS IE is sent as per - * the 11H spec - * If 802.11H is not enabled, the Quiet BSS IE is sent as - * a Proprietary IE. This will be understood by all the - * TITAN STA's - * Transitioning gLimQuietState to eLIM_QUIET_BEGIN will - * initiate the SCH to include the Quiet BSS IE in all - * its subsequent Beacons/PR's. - * The Quiet BSS IE will be included in all the Beacons - * & PR's until the next DTIM period - * - * On the STA - - * When gLimQuietState = eLIM_QUIET_RUNNING - * This indicates that the STA was successfully shut-off - * for the specified gLimQuietDuration. This is a trigger - * for the STA to now resume data traffic. - * -> gLimQuietState is set to eLIM_QUIET_INIT - * - * - * Return: none - */ -void lim_process_quiet_bss_timeout(tpAniSirGlobal mac_ctx) -{ - tpPESession psession_entry = NULL; - tLimTimers *lim_timer = &mac_ctx->lim.limTimers; - - psession_entry = pe_find_session_by_session_id(mac_ctx, - lim_timer->gLimQuietBssTimer.sessionId); - - if (psession_entry == NULL) { - pe_err("Session Does not exist for given sessionID"); - return; - } - - pe_debug("quietState: %d", - psession_entry->gLimSpecMgmt.quietState); - - if (LIM_IS_AP_ROLE(psession_entry)) - return; - - /* eLIM_STA_ROLE */ - switch (psession_entry->gLimSpecMgmt.quietState) { - case eLIM_QUIET_RUNNING: - /* Transition to eLIM_QUIET_INIT */ - psession_entry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; - - /* - * Resume data traffic only if channel switch is - * not running in silent mode. - */ - if (!((psession_entry->gLimSpecMgmt.dot11hChanSwState == - eLIM_11H_CHANSW_RUNNING) && - (psession_entry->gLimChannelSwitch.switchMode == - eSIR_CHANSW_MODE_SILENT))) { - lim_frame_transmission_control(mac_ctx, eLIM_TX_ALL, - eLIM_RESUME_TX); - lim_restore_pre_quiet_state(mac_ctx, psession_entry); - } - pe_debug("Quiet BSS: Resuming traffic"); - break; - - case eLIM_QUIET_INIT: - case eLIM_QUIET_BEGIN: - case eLIM_QUIET_END: - pe_debug("Quiet state not in RUNNING"); - /* - * If the quiet period has ended, then resume the - * frame transmission - */ - lim_frame_transmission_control(mac_ctx, eLIM_TX_ALL, - eLIM_RESUME_TX); - lim_restore_pre_quiet_state(mac_ctx, psession_entry); - psession_entry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; - break; - - default: - /* As of now, nothing to be done */ - break; - } -} - -/**---------------------------------------------- - \fn lim_start_quiet_timer - \brief Starts the quiet timer. - - \param pMac - \return NONE - -----------------------------------------------*/ -void lim_start_quiet_timer(tpAniSirGlobal pMac, uint8_t sessionId) -{ - tpPESession psessionEntry; - - psessionEntry = pe_find_session_by_session_id(pMac, sessionId); - - if (psessionEntry == NULL) { - pe_err("Session Does not exist for given sessionID"); - return; - } - - if (!LIM_IS_STA_ROLE(psessionEntry)) - return; - /* First, de-activate Timer, if its already active */ - lim_cancel_dot11h_quiet(pMac, psessionEntry); - - MTRACE(mac_trace - (pMac, TRACE_CODE_TIMER_ACTIVATE, sessionId, eLIM_QUIET_TIMER)); - if (TX_SUCCESS != - tx_timer_deactivate(&pMac->lim.limTimers.gLimQuietTimer)) { - pe_err("Unable to deactivate gLimQuietTimer! Will still attempt to re-activate anyway"); - } - /* Set the NEW timeout value, in ticks */ - if (TX_SUCCESS != tx_timer_change(&pMac->lim.limTimers.gLimQuietTimer, - SYS_MS_TO_TICKS(psessionEntry-> - gLimSpecMgmt. - quietTimeoutValue), - 0)) { - pe_err("Unable to change gLimQuietTimer! Will still attempt to re-activate anyway"); - } - - pMac->lim.limTimers.gLimQuietTimer.sessionId = sessionId; - if (TX_SUCCESS != - tx_timer_activate(&pMac->lim.limTimers.gLimQuietTimer)) { - pe_err("Unable to activate gLimQuietTimer! STA cannot honor Quiet BSS!"); - lim_restore_pre_quiet_state(pMac, psessionEntry); - - psessionEntry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; - return; - } -} - /** ------------------------------------------------------------------------ **/ /** * keep track of the number of ANI peers associated in the BSS @@ -4947,117 +4656,6 @@ bool lim_is_channel_valid_for_channel_switch(tpAniSirGlobal pMac, uint8_t channe return false; } -/**------------------------------------------------------ - \fn __lim_fill_tx_control_params - \brief Fill the message for stopping/resuming tx. - - \param pMac - \param pTxCtrlMsg - Pointer to tx control message. - \param type - Which way we want to stop/ resume tx. - \param mode - To stop/resume. - -------------------------------------------------------*/ -static QDF_STATUS -__lim_fill_tx_control_params(tpAniSirGlobal pMac, tpTxControlParams pTxCtrlMsg, - tLimQuietTxMode type, tLimControlTx mode) -{ - - tpPESession psessionEntry = &pMac->lim.gpSession[0]; - - if (mode == eLIM_STOP_TX) - pTxCtrlMsg->stopTx = true; - else - pTxCtrlMsg->stopTx = false; - - switch (type) { - case eLIM_TX_ALL: - /** Stops/resumes transmission completely */ - pTxCtrlMsg->fCtrlGlobal = 1; - break; - - case eLIM_TX_BSS_BUT_BEACON: - /** Stops/resumes transmission on a particular BSS. Stopping BSS, doesn't - * stop beacon transmission. - */ - pTxCtrlMsg->ctrlBss = 1; - pTxCtrlMsg->bssBitmap |= (1 << psessionEntry->bssIdx); - break; - - case eLIM_TX_STA: - /** Memory for station bitmap is allocated dynamically in caller of this - * so decode properly here and fill the bitmap. Now not implemented, - * fall through. - */ - case eLIM_TX_BSS: - /* Fall thru... */ - default: - pe_warn("Invalid case: Not Handled"); - return QDF_STATUS_E_FAILURE; - } - - return QDF_STATUS_SUCCESS; -} - -/** - * @function : lim_frame_transmission_control() - * - * @brief : This API is called by the user to halt/resume any frame - * transmission from the device. If stopped, all frames will be - * queued starting from hardware. Then back-pressure - * is built till the driver. - * LOGIC: - * - * ASSUMPTIONS: - * NA - * - * NOTE: - * NA - * - * @param pMac - Pointer to Global MAC structure - * @return None - */ -void lim_frame_transmission_control(tpAniSirGlobal pMac, tLimQuietTxMode type, - tLimControlTx mode) -{ - - QDF_STATUS status = QDF_STATUS_E_FAILURE; - tpTxControlParams pTxCtrlMsg; - struct scheduler_msg msgQ = {0}; - uint8_t nBytes = 0; /* No of bytes required for station bitmap. */ - - /** Allocate only required number of bytes for station bitmap - * Make it to align to 4 byte boundary */ - nBytes = (uint8_t) HALMSG_NUMBYTES_STATION_BITMAP(pMac->lim.maxStation); - - pTxCtrlMsg = qdf_mem_malloc(sizeof(*pTxCtrlMsg) + nBytes); - if (!pTxCtrlMsg) - return; - - status = __lim_fill_tx_control_params(pMac, pTxCtrlMsg, type, mode); - if (status != QDF_STATUS_SUCCESS) { - qdf_mem_free(pTxCtrlMsg); - pe_err("__lim_fill_tx_control_params failed, status: %d", - status); - return; - } - - msgQ.bodyptr = (void *)pTxCtrlMsg; - msgQ.bodyval = 0; - msgQ.reserved = 0; - msgQ.type = WMA_TRANSMISSION_CONTROL_IND; - - MTRACE(mac_trace_msg_tx(pMac, NO_SESSION, msgQ.type)); - if (wma_post_ctrl_msg(pMac, &msgQ) != QDF_STATUS_SUCCESS) { - qdf_mem_free(pTxCtrlMsg); - pe_err("Posting Message to HAL failed"); - return; - } - - pe_debug("Stopping the transmission of all packets, indicated softmac tx_control: %d", - mode); - - return; -} - /** * @function : lim_restore_pre_channel_switch_state() * @@ -5088,35 +4686,6 @@ lim_restore_pre_channel_switch_state(tpAniSirGlobal pMac, tpPESession psessionEn /* Channel switch should be ready for the next time */ psessionEntry->gLimSpecMgmt.dot11hChanSwState = eLIM_11H_CHANSW_INIT; - /* Restore the frame transmission, all the time. */ - lim_frame_transmission_control(pMac, eLIM_TX_ALL, eLIM_RESUME_TX); - - return retCode; -} - -/**-------------------------------------------- - \fn lim_restore_pre_quiet_state - \brief Restore the pre quiet state - - \param pMac - \return NONE - ---------------------------------------------*/ -QDF_STATUS lim_restore_pre_quiet_state(tpAniSirGlobal pMac, - tpPESession psessionEntry) -{ - - QDF_STATUS retCode = QDF_STATUS_SUCCESS; - - if (pMac->lim.gLimSystemRole != eLIM_STA_ROLE) - return retCode; - - /* Quiet should be ready for the next time */ - psessionEntry->gLimSpecMgmt.quietState = eLIM_QUIET_INIT; - - /* Restore the frame transmission, all the time. */ - if (psessionEntry->gLimSpecMgmt.quietState == eLIM_QUIET_RUNNING) - lim_frame_transmission_control(pMac, eLIM_TX_ALL, eLIM_RESUME_TX); - return retCode; } diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index bb31423095c7..d310b08b7dfe 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -298,10 +298,7 @@ QDF_STATUS lim_start_channel_switch(tpAniSirGlobal pMac, tpPESession psessionEntry); void lim_update_channel_switch(tpAniSirGlobal, tpSirProbeRespBeacon, tpPESession psessionEntry); -void lim_process_quiet_timeout(tpAniSirGlobal); -void lim_process_quiet_bss_timeout(tpAniSirGlobal); -void lim_start_quiet_timer(tpAniSirGlobal pMac, uint8_t sessionId); void lim_switch_primary_channel(tpAniSirGlobal, uint8_t, tpPESession); void lim_switch_primary_secondary_channel(tpAniSirGlobal pMac, tpPESession psessionEntry, @@ -319,15 +316,10 @@ void lim_update_sta_run_time_ht_info(struct mac_context *pMac, tpPESession psessionEntry); void lim_cancel_dot11h_channel_switch(tpAniSirGlobal pMac, tpPESession psessionEntry); -void lim_cancel_dot11h_quiet(tpAniSirGlobal pMac, tpPESession psessionEntry); bool lim_is_channel_valid_for_channel_switch(tpAniSirGlobal pMac, uint8_t channel); -void lim_frame_transmission_control(tpAniSirGlobal pMac, tLimQuietTxMode type, - tLimControlTx mode); QDF_STATUS lim_restore_pre_channel_switch_state(tpAniSirGlobal pMac, tpPESession psessionEntry); -QDF_STATUS lim_restore_pre_quiet_state(tpAniSirGlobal pMac, - tpPESession psessionEntry); void lim_prepare_for11h_channel_switch(tpAniSirGlobal pMac, tpPESession psessionEntry); diff --git a/core/mac/src/sys/legacy/src/utils/src/mac_trace.c b/core/mac/src/sys/legacy/src/utils/src/mac_trace.c index b0e08bb7884b..a3d4f5dbda53 100644 --- a/core/mac/src/sys/legacy/src/utils/src/mac_trace.c +++ b/core/mac/src/sys/legacy/src/utils/src/mac_trace.c @@ -455,7 +455,6 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg) CASE_RETURN_STRING(WMA_SET_TX_POWER_RSP); CASE_RETURN_STRING(WMA_GET_TX_POWER_REQ); - CASE_RETURN_STRING(WMA_TRANSMISSION_CONTROL_IND); CASE_RETURN_STRING(WMA_ENABLE_UAPSD_REQ); CASE_RETURN_STRING(WMA_DISABLE_UAPSD_REQ); CASE_RETURN_STRING(WMA_GET_STATISTICS_REQ); @@ -695,8 +694,6 @@ uint8_t *mac_trace_get_lim_msg_string(uint16_t lim_msg) CASE_RETURN_STRING(SIR_LIM_CNF_WAIT_TIMEOUT); CASE_RETURN_STRING(SIR_LIM_UPDATE_OLBC_CACHEL_TIMEOUT); CASE_RETURN_STRING(SIR_LIM_CHANNEL_SWITCH_TIMEOUT); - CASE_RETURN_STRING(SIR_LIM_QUIET_TIMEOUT); - CASE_RETURN_STRING(SIR_LIM_QUIET_BSS_TIMEOUT); CASE_RETURN_STRING(SIR_LIM_WPS_OVERLAP_TIMEOUT); CASE_RETURN_STRING(SIR_LIM_FT_PREAUTH_RSP_TIMEOUT); CASE_RETURN_STRING(SIR_LIM_CONVERT_ACTIVE_CHANNEL_TO_PASSIVE); diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h index dc46fbecf162..af2fa3d9f61d 100644 --- a/core/wma/inc/wma_if.h +++ b/core/wma/inc/wma_if.h @@ -1103,32 +1103,6 @@ typedef struct tHalIndCB { tHalMsgCallback pHalIndCB; } tHalIndCB, *tpHalIndCB; -/** - * struct sControlTxParams - control tx parameters - * @stopTx: stop transmission - * @fCtrlGlobal: Master flag to stop or resume all transmission - * @ctrlSta: If this flag is set, staBitmap - * @ctrlBss: If this flag is set, bssBitmap and beaconBitmap is valid - * @bssBitmap: bitmap of BSS indices to be stopped for resumed - * @beaconBitmap: this bitmap contains bitmap of BSS indices to be - * stopped for resumed for beacon transmission - */ -typedef struct sControlTxParams { - bool stopTx; - uint8_t fCtrlGlobal; - uint8_t ctrlSta; - uint8_t ctrlBss; - /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be - * stopped for resumed for transmission. - * This is 32 bit bitmap, not array of bytes. - */ - uint32_t bssBitmap; - /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be - * stopped for resumed for beacon transmission. - */ - uint32_t beaconBitmap; -} tTxControlParams, *tpTxControlParams; - /** * struct tMaxTxPowerParams - Max Tx Power parameters * @bssId: BSSID is needed to identify which session issued this request diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h index a9fbb8ce45ff..78040aa81a49 100644 --- a/core/wma/inc/wma_types.h +++ b/core/wma/inc/wma_types.h @@ -199,9 +199,6 @@ #define WMA_SET_TX_POWER_RSP SIR_HAL_SET_TX_POWER_RSP #define WMA_GET_TX_POWER_REQ SIR_HAL_GET_TX_POWER_REQ -/* Messages to support transmit_halt and transmit_resume */ -#define WMA_TRANSMISSION_CONTROL_IND SIR_HAL_TRANSMISSION_CONTROL_IND - #define WMA_ENABLE_UAPSD_REQ SIR_HAL_ENABLE_UAPSD_REQ #define WMA_DISABLE_UAPSD_REQ SIR_HAL_DISABLE_UAPSD_REQ