Bug-fix UpdateDlRlcBufferInfo of PF and RR schedulers mutual exclusivity of the status and retx queues
This commit is contained in:
@@ -1970,37 +1970,25 @@ PfFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t s
|
||||
NS_LOG_INFO (this << " UE " << rnti << " LC " << (uint16_t)lcid << " txqueue " << (*it).second.m_rlcTransmissionQueueSize << " retxqueue " << (*it).second.m_rlcRetransmissionQueueSize << " status " << (*it).second.m_rlcStatusPduSize << " decrease " << size);
|
||||
// Update queues: RLC tx order Status, ReTx, Tx
|
||||
// Update status queue
|
||||
if ((*it).second.m_rlcStatusPduSize <= size)
|
||||
if (((*it).second.m_rlcStatusPduSize > 0) && (size >= (*it).second.m_rlcStatusPduSize))
|
||||
{
|
||||
size -= (*it).second.m_rlcStatusPduSize;
|
||||
(*it).second.m_rlcStatusPduSize = 0;
|
||||
(*it).second.m_rlcStatusPduSize = 0;
|
||||
}
|
||||
else
|
||||
else if (((*it).second.m_rlcRetransmissionQueueSize > 0) && (size >= (*it).second.m_rlcRetransmissionQueueSize))
|
||||
{
|
||||
(*it).second.m_rlcStatusPduSize -= size;
|
||||
return;
|
||||
}
|
||||
// update retransmission queue
|
||||
if ((*it).second.m_rlcRetransmissionQueueSize <= size)
|
||||
{
|
||||
size -= (*it).second.m_rlcRetransmissionQueueSize;
|
||||
(*it).second.m_rlcRetransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
else if ((*it).second.m_rlcTransmissionQueueSize > 0)
|
||||
{
|
||||
(*it).second.m_rlcRetransmissionQueueSize -= size;
|
||||
return;
|
||||
}
|
||||
// update transmission queue
|
||||
if ((*it).second.m_rlcTransmissionQueueSize <= size)
|
||||
{
|
||||
size -= (*it).second.m_rlcTransmissionQueueSize;
|
||||
(*it).second.m_rlcTransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).second.m_rlcTransmissionQueueSize -= size;
|
||||
return;
|
||||
// update transmission queue
|
||||
if ((*it).second.m_rlcTransmissionQueueSize <= size)
|
||||
{
|
||||
(*it).second.m_rlcTransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).second.m_rlcTransmissionQueueSize -= size;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1761,39 +1761,26 @@ RrFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t s
|
||||
NS_LOG_INFO (this << " UE " << rnti << " LC " << (uint16_t)lcid << " txqueue " << (*it).m_rlcTransmissionQueueSize << " retxqueue " << (*it).m_rlcRetransmissionQueueSize << " status " << (*it).m_rlcStatusPduSize << " decrease " << size);
|
||||
// Update queues: RLC tx order Status, ReTx, Tx
|
||||
// Update status queue
|
||||
if ((*it).m_rlcStatusPduSize <= size)
|
||||
{
|
||||
size -= (*it).m_rlcStatusPduSize;
|
||||
(*it).m_rlcStatusPduSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).m_rlcStatusPduSize -= size;
|
||||
return;
|
||||
}
|
||||
// update retransmission queue
|
||||
if ((*it).m_rlcRetransmissionQueueSize <= size)
|
||||
{
|
||||
size -= (*it).m_rlcRetransmissionQueueSize;
|
||||
(*it).m_rlcRetransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).m_rlcRetransmissionQueueSize -= size;
|
||||
return;
|
||||
}
|
||||
// update transmission queue
|
||||
if ((*it).m_rlcTransmissionQueueSize <= size)
|
||||
{
|
||||
size -= (*it).m_rlcTransmissionQueueSize;
|
||||
(*it).m_rlcTransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).m_rlcTransmissionQueueSize -= size;
|
||||
NS_LOG_DEBUG ("dequeue " << (*it).m_rlcTransmissionQueueSize);
|
||||
return;
|
||||
}
|
||||
if (((*it).m_rlcStatusPduSize > 0) && (size >= (*it).m_rlcStatusPduSize))
|
||||
{
|
||||
(*it).m_rlcStatusPduSize = 0;
|
||||
}
|
||||
else if (((*it).m_rlcRetransmissionQueueSize > 0) && (size >= (*it).m_rlcRetransmissionQueueSize))
|
||||
{
|
||||
(*it).m_rlcRetransmissionQueueSize = 0;
|
||||
}
|
||||
else if ((*it).m_rlcTransmissionQueueSize > 0)
|
||||
{
|
||||
// update transmission queue
|
||||
if ((*it).m_rlcTransmissionQueueSize <= size)
|
||||
{
|
||||
(*it).m_rlcTransmissionQueueSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it).m_rlcTransmissionQueueSize -= size;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user