UINT CTXVirtQueue::ReleaseTransmitBuffers(CRawCNBList& listDone) { UINT len, i = 0; CTXDescriptor *TXDescriptor; DEBUG_ENTRY(4); while(NULL != (TXDescriptor = (CTXDescriptor *) GetBuf(&len))) { m_DescriptorsInUse.Remove(TXDescriptor); if (!TXDescriptor->GetUsedBuffersNum()) { DPrintf(0, ("[%s] ERROR: nofUsedBuffers not set!\n", __FUNCTION__)); } m_FreeHWBuffers += TXDescriptor->GetUsedBuffersNum(); listDone.PushBack(TXDescriptor->GetNB()); m_Descriptors.Push(TXDescriptor); DPrintf(3, ("[%s] Free Tx: desc %d, buff %d\n", __FUNCTION__, m_Descriptors.GetCount(), m_FreeHWBuffers)); ++i; } if (i) { NdisGetCurrentSystemTime(&m_Context->LastTxCompletionTimeStamp); m_DoKickOnNoBuffer = true; } DPrintf((i ? 3 : 5), ("[%s] returning i = %d\n", __FUNCTION__, i)); return i; }
void CTXVirtQueue::ReleaseOneBuffer(CTXDescriptor *TXDescriptor, CRawCNBList& listDone) { if (!TXDescriptor->GetUsedBuffersNum()) { DPrintf(0, "[%s] ERROR: nofUsedBuffers not set!\n", __FUNCTION__); } m_FreeHWBuffers += TXDescriptor->GetUsedBuffersNum(); listDone.PushBack(TXDescriptor->GetNB()); m_Descriptors.Push(TXDescriptor); DPrintf(3, "[%s] Free Tx: desc %d, buff %d\n", __FUNCTION__, m_Descriptors.GetCount(), m_FreeHWBuffers); }