--- a/src/lte/model/rr-ff-mac-scheduler.cc Tue Dec 11 13:28:25 2012 +0100
+++ b/src/lte/model/rr-ff-mac-scheduler.cc Tue Dec 11 18:32:51 2012 +0100
@@ -1761,39 +1761,26 @@
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;
}
}