NetKVM: BZ#1154419: Kick outside of critical section

Signed-off-by: Joseph Hindin <[email protected]>
This commit is contained in:
Joseph Hindin authored and Vadim Rozenfeld committed 2014-10-29 22:49:16 +11:00
1 parent f46214f82b
commit be8fde1f0f
2 files changed
+10 -12

No files matched your search

+9 -11
View File
@@ -462,7 +462,6 @@ BOOLEAN _Function_class_(MINIPORT_SYNCHRONIZE_INTERRUPT) CParaNdisTX::RestartQue
//TODO: Requires review
bool CParaNdisTX::RestartQueue(bool DoKick)
{
TSpinLocker LockedContext(m_Lock);
auto res = ParaNdis_SynchronizeWithInterrupt(m_Context,
m_messageIndex,
CParaNdisTX::RestartQueueSynchronously,
@@ -476,7 +475,7 @@ bool CParaNdisTX::RestartQueue(bool DoKick)
return res;
}
bool CParaNdisTX::SendMapped(bool IsInterrupt, PNET_BUFFER_LIST &NBLFailNow)
bool CParaNdisTX::SendMapped(PNET_BUFFER_LIST &NBLFailNow)
{
if(!ParaNdis_IsSendPossible(m_Context))
{
@@ -550,14 +549,7 @@ bool CParaNdisTX::SendMapped(bool IsInterrupt, PNET_BUFFER_LIST &NBLFailNow)
if (SentOutSomeBuffers)
{
DPrintf(2, ("[%s] sent down\n", __FUNCTION__, SentOutSomeBuffers));
if (IsInterrupt)
{
return true;
}
else
{
m_VirtQueue.Kick();
}
return true;
}
}
@@ -574,7 +566,7 @@ bool CParaNdisTX::DoPendingTasks(bool IsInterrupt)
DoWithTXLock([&] ()
{
m_VirtQueue.ProcessTXCompletions();
bDoKick = SendMapped(IsInterrupt, pNBLFailNow);
bDoKick = SendMapped(pNBLFailNow);
pNBLReturnNow = ProcessWaitingList();
if (!m_VirtQueue.HasPacketsInHW() && m_Context->SendState == srsPausing)
@@ -602,6 +594,12 @@ bool CParaNdisTX::DoPendingTasks(bool IsInterrupt)
CallbackToCall(m_Context);
}
if (bDoKick && !IsInterrupt)
{
Kick();
bDoKick = false;
}
return bDoKick;
}
+1 -1
View File
@@ -255,7 +255,7 @@ public:
private:
//TODO: Needs review
bool SendMapped(bool IsInterrupt, PNET_BUFFER_LIST &NBLFailNow);
bool SendMapped(PNET_BUFFER_LIST &NBLFailNow);
PNET_BUFFER_LIST ProcessWaitingList();
PNET_BUFFER_LIST BuildCancelList(PVOID CancelId);