--- a/src/lte/model/lte-rlc-am.cc Sun Nov 03 21:00:32 2013 +0100
+++ b/src/lte/model/lte-rlc-am.cc Fri Nov 22 20:33:30 2013 +0100
@@ -76,6 +76,8 @@
// Timers
m_pollRetransmitTimerValue = MilliSeconds (100);
+ m_reorderingTimerValue = MilliSeconds (20);
+ m_statusProhibitTimerValue = MilliSeconds (20);
}
LteRlcAm::~LteRlcAm ()
@@ -247,6 +249,8 @@
m_statusPduRequested = false;
m_statusPduBufferSize = 0;
+ m_statusProhibitTimer = Simulator::Schedule (m_statusProhibitTimerValue,
+ &LteRlcAm::ExpireStatusProhibitTimer, this);
return;
}
else if ( m_retxBufferSize > 0 )
@@ -293,7 +297,7 @@
NS_LOG_LOGIC ("Sending data from Transmission Buffer");
}
- else if ( m_txedBufferSize > 0 )
+ /* else if ( m_txedBufferSize > 0 )
{
NS_LOG_LOGIC ("Sending data from Transmitted Buffer");
@@ -335,7 +339,7 @@
NS_LOG_LOGIC ("Waiting for bigger TxOpportunity");
return;
}
- }
+ }*/
else
{
NS_LOG_LOGIC ("No data pending");
@@ -905,7 +909,7 @@
if ( m_vrH > m_vrR )
{
NS_LOG_LOGIC ("Start reordering timer");
- m_reorderingTimer = Simulator::Schedule (Time ("0.1s"),
+ m_reorderingTimer = Simulator::Schedule (m_reorderingTimerValue,
&LteRlcAm::ExpireReorderingTimer ,this);
m_vrX = m_vrH;
NS_LOG_LOGIC ("New VR(X) = " << m_vrX);
@@ -997,7 +1001,7 @@
// {
// NS_LOG_LOGIC ("VR(UX) > VR(UR). " << m_vrUx << " > " << m_vrUr);
// NS_LOG_LOGIC ("Start reordering timer");
-// m_reorderingTimer = Simulator::Schedule (Time ("1.0s"),
+// m_reorderingTimer = Simulator::Schedule (m_reorderingTimerValue),
// &LteRlcAm::ExpireReorderingTimer ,this);
// m_vrUx = m_vrUh;
// NS_LOG_LOGIC ("New VR(UX) = " << m_vrUx);
@@ -1699,11 +1703,16 @@
if ( m_vrH > m_vrMs )
{
NS_LOG_LOGIC ("Start reordering timer");
- m_reorderingTimer = Simulator::Schedule (Time ("0.1s"),
+ m_reorderingTimer = Simulator::Schedule (m_reorderingTimerValue,
&LteRlcAm::ExpireReorderingTimer ,this);
m_vrX = m_vrH;
NS_LOG_LOGIC ("New VR(MS) = " << m_vrMs);
}
+
+ // Section 5.2.3 Status Reporting:
+ // - The receiving side of an AM RLC entity shall trigger a
+ // STATUS report when T_reordering expires.
+ m_statusPduRequested = true;
}
void
@@ -1721,5 +1730,10 @@
}
+void
+LteRlcAm::ExpireStatusProhibitTimer (void)
+{
+ NS_LOG_FUNCTION (this);
+}
} // namespace ns3
--- a/src/lte/model/lte-rlc-am.h Sun Nov 03 21:00:32 2013 +0100
+++ b/src/lte/model/lte-rlc-am.h Fri Nov 22 20:33:30 2013 +0100
@@ -62,6 +62,12 @@
void ExpireReorderingTimer (void);
void ExpirePollRetransmitTimer (void);
+ /**
+ * method called when the T_status_prohibit timer expires
+ *
+ */
+ void ExpireStatusProhibitTimer (void);
+
bool IsInsideReceivingWindow (SequenceNumber10 seqNumber);
//
// void ReassembleOutsideWindow (void);
@@ -142,7 +148,9 @@
EventId m_pollRetransmitTimer;
Time m_pollRetransmitTimerValue;
EventId m_reorderingTimer;
+ Time m_reorderingTimerValue;
EventId m_statusProhibitTimer;
+ Time m_statusProhibitTimerValue;
/**
* Configurable parameters. See section 7.4 in TS 36.322
--- a/src/lte/test/lte-test-rlc-am-e2e.cc Sun Nov 03 21:00:32 2013 +0100
+++ b/src/lte/test/lte-test-rlc-am-e2e.cc Fri Nov 22 20:33:30 2013 +0100
@@ -55,8 +55,6 @@
{
// NS_LOG_INFO ("Creating LteRlcAmE2eTestSuite");
- AddTestCase (new LteRlcAmE2eTestCase ("the one that fails", 6666, 0.25), TestCase::QUICK);
-
double losses[] = {0.0, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95};
uint32_t runs[] = {1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 9999, 10101};