wlan: Re-Integrate CL 633831, TX data path hang issue fix
Under specific condition, busy environment and heavy data traffic, TX
data stuck happen since SMSM could not trigger TX data transfer ion time
Change-Id: I5a115704e14cd1efd8624d7fc7db8f7c4227f6e7
CR-Fixed: 359372
diff --git a/CORE/DXE/src/wlan_qct_dxe.c b/CORE/DXE/src/wlan_qct_dxe.c
index 720d64f..5364c0b 100644
--- a/CORE/DXE/src/wlan_qct_dxe.c
+++ b/CORE/DXE/src/wlan_qct_dxe.c
@@ -2626,16 +2626,14 @@
#else
wpt_iterator iterator;
#endif /* FEATURE_R33D */
-
- wpt_uint32 isEmpty = 0;
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
"%s Enter", __FUNCTION__);
- if((0 == tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_LOW_PRI].numRsvdDesc) &&
- (0 == tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_HIGH_PRI].numRsvdDesc))
+ if(WLANDXE_POWER_STATE_BMPS == tempDxeCtrlBlk->hostPowerState)
{
- isEmpty = 1;
+ tempDxeCtrlBlk->rivaPowerState = WLANDXE_RIVA_POWER_STATE_BMPS_UNKNOWN;
+ dxeNotifySmsm(eWLAN_PAL_FALSE, eWLAN_PAL_TRUE);
}
channelEntry->numFragmentCurrentChain = 0;
@@ -2778,15 +2776,11 @@
{
/* Update channel head as next avaliable linked slot */
channelEntry->headCtrlBlk = currentCtrlBlk;
-
- if( isEmpty )
- {
- tempDxeCtrlBlk->ringNotEmpty = eWLAN_PAL_TRUE;
- HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO_LOW, "SMSM_ret LO=%d HI=%d", tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_LOW_PRI].numRsvdDesc,
- tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_HIGH_PRI].numRsvdDesc );
- dxeNotifySmsm(eWLAN_PAL_TRUE, eWLAN_PAL_FALSE);
- }
- return status;
+ tempDxeCtrlBlk->ringNotEmpty = eWLAN_PAL_TRUE;
+ HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO_LOW, "SMSM_ret LO=%d HI=%d", tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_LOW_PRI].numRsvdDesc,
+ tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_HIGH_PRI].numRsvdDesc );
+ dxeNotifySmsm(eWLAN_PAL_TRUE, eWLAN_PAL_FALSE);
+ return status;
}
/* If DXE use external descriptor, registers are not needed to be programmed