Wlan: Invalid WLAN driver reloading fix
Frames count handled by previous interrupt was not set properly, right
after correct resync finished. Sometimes empty interrupt may come in,
but previous number of handled frame did not set ptoperly, DXE WLAN
driver think successive empty interrupt generated. DXE descriptor dump
log is not reasonable, reduce dump descriptors as just for needed
Change-Id: Ic54db8c86c8b1c7f41490b57105183bb7d210bca
CR-Fixed: NA
diff --git a/CORE/DXE/src/wlan_qct_dxe.c b/CORE/DXE/src/wlan_qct_dxe.c
index b63abb1..9b6fa7c 100644
--- a/CORE/DXE/src/wlan_qct_dxe.c
+++ b/CORE/DXE/src/wlan_qct_dxe.c
@@ -359,17 +359,22 @@
{
wpt_uint32 channelLoop;
WLANDXE_DescCtrlBlkType *targetCtrlBlk;
+ wpt_uint32 previousCtrlValue = 0;
targetCtrlBlk = channelEntry->headCtrlBlk;
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_FATAL,
"%s %d descriptor chains",
- channelType[channelEntry->channelType], (int)channelEntry->numDesc);
+ channelType[channelEntry->channelType], channelEntry->numDesc);
for(channelLoop = 0; channelLoop < channelEntry->numDesc; channelLoop++)
{
- HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%5d : 0x%x", (int)targetCtrlBlk->ctrlBlkOrder,
- (unsigned int)targetCtrlBlk->linkedDesc->descCtrl.ctrl);
+ if(previousCtrlValue != targetCtrlBlk->linkedDesc->descCtrl.ctrl)
+ {
+ HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "%5d : 0x%x", targetCtrlBlk->ctrlBlkOrder,
+ targetCtrlBlk->linkedDesc->descCtrl.ctrl);
+ }
+ previousCtrlValue = targetCtrlBlk->linkedDesc->descCtrl.ctrl;
targetCtrlBlk = (WLANDXE_DescCtrlBlkType *)targetCtrlBlk->nextCtrlBlk;
}
@@ -1782,7 +1787,6 @@
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
"re-sync routed %d frames to upper layer", (int)frameCount);
channelEntry->numFragmentCurrentChain = frameCount;
- frameCount = 0;
}
/* Successive Empty interrupt
* But this case, first descriptor also invalidated, then it means head descriptor
@@ -1805,8 +1809,7 @@
}
}
}
-
- channelEntry->numFragmentCurrentChain = frameCount;
+
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
"%s Exit", __FUNCTION__);
return status;