From 168b18d60b76994267b2f5edd872459f69cdf0ff Mon Sep 17 00:00:00 2001 From: "Kanchanapally, Vidyullatha" Date: Mon, 24 Feb 2014 16:38:39 +0530 Subject: qcacld: enable tx queues before hdd_roamRegisterSTA Enable tx queues before hdd_roamRegisterSTA, since there is a possibility to have cached data RX frames which are immediately flushed upon invoking hdd_roamRegisterSTA. Hence it is possible that their responses may not reach the driver if processed immediately before the tx queues are enabled. Change-Id: I7049f797a003e7deaed52e96dccae033f29cbb90 CRs-Fixed: 610608 --- CORE/HDD/src/wlan_hdd_assoc.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c index 714d2bc10dd1..80f1906910e1 100644 --- a/CORE/HDD/src/wlan_hdd_assoc.c +++ b/CORE/HDD/src/wlan_hdd_assoc.c @@ -1455,6 +1455,15 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs pHddCtx->wiphy, #endif bss); + + // perform any WMM-related association processing + hdd_wmm_assoc(pAdapter, pRoamInfo, eCSR_BSS_TYPE_INFRASTRUCTURE); + + /* Start the Queue - Start tx queues before hdd_roamRegisterSTA, + since hdd_roamRegisterSTA will flush any cached data frames + immediately */ + netif_tx_wake_all_queues(dev); + // Register the Station with TL after associated... vosStatus = hdd_roamRegisterSTA( pAdapter, pRoamInfo, @@ -1490,16 +1499,20 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs WLANTL_STA_AUTHENTICATED ); pHddStaCtx->conn_info.uIsAuthenticated = VOS_TRUE; } - } - if ( VOS_IS_STATUS_SUCCESS( vosStatus ) ) - { - // perform any WMM-related association processing - hdd_wmm_assoc(pAdapter, pRoamInfo, eCSR_BSS_TYPE_INFRASTRUCTURE); + if ( VOS_IS_STATUS_SUCCESS( vosStatus ) ) + { + // perform any WMM-related association processing + hdd_wmm_assoc(pAdapter, pRoamInfo, eCSR_BSS_TYPE_INFRASTRUCTURE); + } + + /* Start the tx queues */ + netif_tx_wake_all_queues(dev); } - else + + if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) { - VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_WARN, + VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, "Cannot register STA with TL. Failed with vosStatus = %d [%08X]", vosStatus, vosStatus ); } @@ -1507,8 +1520,6 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs vos_mem_zero( &pAdapter->hdd_stats.hddPmfStats, sizeof(pAdapter->hdd_stats.hddPmfStats) ); #endif - // Start the Queue - netif_tx_wake_all_queues(dev); } else { -- cgit v1.2.3