diff --git a/src/lte/model/pf-ff-mac-scheduler.cc b/src/lte/model/pf-ff-mac-scheduler.cc index a9f145cd5..d3092098a 100644 --- a/src/lte/model/pf-ff-mac-scheduler.cc +++ b/src/lte/model/pf-ff-mac-scheduler.cc @@ -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 diff --git a/src/lte/model/rr-ff-mac-scheduler.cc b/src/lte/model/rr-ff-mac-scheduler.cc index 9b53e27ea..abbba5883 100644 --- a/src/lte/model/rr-ff-mac-scheduler.cc +++ b/src/lte/model/rr-ff-mac-scheduler.cc @@ -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; } }