wlan: Check for disconnect before starting carrier/tx_queues.
There is a race condition between connect completion and disconnect
because of which we can have a window where queues are opened but
sta is not registered with TL. The packets can keep coming in this
window leading to crash because of excessive logging in TL/HDD.
This fix won't allow carrier or tx_queues to be enabled in case of
disconnect so that packets can't come in this race condition.
Change-Id: I92b60863d0858af047ceae040a7d769230137f5f
CRs-Fixed: 756210
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 156ede0..c286e15 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -1298,7 +1298,7 @@
know that the device is getting activated properly.
*/
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
- if (pHddStaCtx->ft_carrier_on == FALSE)
+ if (pHddStaCtx->ft_carrier_on == FALSE && !hddDisconInProgress )
{
#endif
// Enable Linkup Event Servicing which allows the net device notifier to set the linkup event variable
@@ -1560,7 +1560,8 @@
sizeof(pAdapter->hdd_stats.hddPmfStats) );
#endif
// Start the Queue
- netif_tx_wake_all_queues(dev);
+ if ( !hddDisconInProgress )
+ netif_tx_wake_all_queues(dev);
#ifdef DEBUG_ROAM_DELAY
vos_record_roam_event(e_HDD_ENABLE_TX_QUEUE, NULL, 0);
#endif
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index ade1a2c..3b7bbae 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2042,7 +2042,7 @@
if ( 0 == pClientSTA->ucExists )
{
- TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,
+ TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
"WLAN TL:Station was not previously registered on WLANTL_STAPktPending"));
return VOS_STATUS_E_EXISTS;
}