summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKanchanapally, Vidyullatha <vkanchan@qti.qualcomm.com>2014-02-24 16:38:39 +0530
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-02-28 01:47:14 -0800
commit168b18d60b76994267b2f5edd872459f69cdf0ff (patch)
tree8f9cee1837f975b174508a0d4b77d40d9f05a1c5
parentbf1c297fe8008c4b7454eb35e47224de05d76a0a (diff)
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
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c29
1 files 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
{