src/lte/model/rr-ff-mac-scheduler.cc
changeset 9504 5671c81e6aad
parent 9468 4513b57ab94b
child 9506 9b140380dda0
--- 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;
         }
     }