Process of very small segments at the end of a PDU
authorManuel Requena <manuel.requena@cttc.es>
Thu, 26 Jan 2012 11:30:45 +0100
changeset 8586 6c6fdf44d58b
parent 8585 e7d1c8d286c9
child 8587 27e83197af97
Process of very small segments at the end of a PDU
src/lte/model/lte-rlc-um.cc
--- a/src/lte/model/lte-rlc-um.cc	Fri Jan 20 16:34:34 2012 +0100
+++ b/src/lte/model/lte-rlc-um.cc	Thu Jan 26 11:30:45 2012 +0100
@@ -229,9 +229,9 @@
           // (NO more segments) → exit
           // break;
         }
-      else if ( (firstSegment->GetSize () == nextSegmentSize) || (m_txBuffer.size () == 0) )
+      else if ( (nextSegmentSize - firstSegment->GetSize () <= 2) || (m_txBuffer.size () == 0) )
         {
-          NS_LOG_LOGIC ("    IF firstSegment == NextSegmentSize || txBuffer.size == 0");
+          NS_LOG_LOGIC ("    IF nextSegmentSize - firstSegment->GetSize () <= 2 || txBuffer.size == 0");
           // Add txBuffer.FirstBuffer to DataField
           dataFieldAddedSize = firstSegment->GetSize ();
           dataFieldTotalSize += dataFieldAddedSize;
@@ -254,7 +254,7 @@
             }
           NS_LOG_LOGIC ("        Next segment size = " << nextSegmentSize);
 
-          // nextSegmentSize MUST be zero (only if txBuffer is not empty)
+          // nextSegmentSize <= 2 (only if txBuffer is not empty)
 
           // (NO more segments) → exit
           // break;
@@ -273,7 +273,7 @@
           // LengthIndicator (Next_Segment)  = txBuffer.FirstBuffer.length()
           rlcHeader.PushLengthIndicator (firstSegment->GetSize ());
 
-          nextSegmentSize -= ((nextSegmentId % 2) ? (2) : (1)) + dataFieldAddedSize; // TODO???
+          nextSegmentSize -= ((nextSegmentId % 2) ? (2) : (1)) + dataFieldAddedSize;
           nextSegmentId++;
 
           NS_LOG_LOGIC ("        SDUs in TxBuffer  = " << m_txBuffer.size ());