Hi rocio.
At first, I thought that the behavior was due to the issue below:
But, the problem is present even after applying the patch.
Analyzing the log file, the behavior looks as follows:
--------------------------------------------------------------------
[eNB]
LteRlcAm:DoTransmitPdcpPdu(0x2196d30, 1, 1, 42) <--- Maybe, TCP:SYN.
Send ReportBufferStatus: 42, 0, 0, 0, 0 <--- Request 42 bytes assignment.
LteRlcAm:DoNotifyTxOpportunity(0x2196d30, 1, 1, 2196) <--- Assigned 2196 bytes.
Sending data from Transmission Buffer
...
[UE]
LteRlcAm:DoTransmitPdcpPdu(0x219d150, 1, 1, 42) <--- Maybe, TCP:SYN/ACK.
Send ReportBufferStatus: 42, 0, 0, 0, 4 <--- Data PDU:42 bytes + RLC ACK:4 bytes.
LteRlcAm:DoNotifyTxOpportunity(0x219d150, 1, 1, 621) <--- Assigned 621 bytes.
Sending STATUS PDU <--- (*)
LteRlc:~LteRlc(0x2196d30)
LteRlc:~LteRlc(0x219d150) <--- End.
--------------------------------------------------------------------
(*)
As above log shows, UE could not send 42 bytes of Data PDU(TCP:SYN/ACK).
This seems due to the limitations of current lena implementation:
1.6.4 AM data transfer in LTE Simulator Documentation.
"The AM RLC entity generates and sends exactly one RLC PDU for each transmission opportunity
even if it is smaller than the size reported by the transmission opportunity. So for instance,
if a STATUS PDU is to be sent, then only this PDU will be sent in that transmission opportunity."
Furthermore, because "periodicBSR-Timer" and "retxBSR-Timer" in 3GPP TS 36.321
are not implemented so far, UE can not send BufferStatusReports any more.
So, MAC shceduler can't assign resources and the Data PDU(TCP:SYN/ACK) remains in the RLC buffer.
One solution of this matter is that UE sends BufferStatusReport again after sending STATUS PDU.
By applying attached patch, it seems work well.
I think that essential solution of this matter is to implement "periodicBSR-Timer" and "retxBSR-Timer"
or multiple RLC PDUs in one MAC PDU.
Is there anyone who plans to implement the functions in the near future ?
-----------------------------------------------------------------------
A segmentation fault occurred at "LteRlcAm::DoReceivePdu".
So, I commented out the source code below in attached patch.
@@ -656,17 +680,17 @@ LteRlcAm::DoReceivePdu (Ptr<Packet> p)
- m_retxBuffer.front ().m_pdu->PeekPacketTag (retxQueueHolTimeTag);
+// m_retxBuffer.front ().m_pdu->PeekPacketTag (retxQueueHolTimeTag);