--- a/src/lte/model/lte-enb-rrc.cc Wed Dec 19 12:20:08 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.cc Wed Dec 19 13:59:51 2012 +0100
@@ -99,6 +99,7 @@
{
"INITIAL_RANDOM_ACCESS",
"CONNECTION_SETUP",
+ "CONNECTION_REJECTED",
"CONNECTED_NORMALLY",
"CONNECTION_RECONFIGURATION",
"CONNECTION_REESTABLISHMENT",
@@ -686,18 +687,32 @@
{
case INITIAL_RANDOM_ACCESS:
{
- m_connectionTimeout.Cancel ();
- m_imsi = msg.ueIdentity;
- if (m_rrc->m_s1SapProvider != 0)
+ if (m_rrc->m_admitRrcConnectionRequest == true)
{
- m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
- }
- LteRrcSap::RrcConnectionSetup msg2;
- msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
- msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
- m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
- RecordDataRadioBearersToBeStarted ();
- SwitchToState (CONNECTION_SETUP);
+ m_connectionTimeout.Cancel ();
+ m_imsi = msg.ueIdentity;
+ if (m_rrc->m_s1SapProvider != 0)
+ {
+ m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
+ }
+ LteRrcSap::RrcConnectionSetup msg2;
+ msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
+ msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
+ m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
+ RecordDataRadioBearersToBeStarted ();
+ SwitchToState (CONNECTION_SETUP);
+ }
+ else
+ {
+ m_connectionTimeout.Cancel ();
+ NS_LOG_INFO ("rejecting connection request for RNTI " << m_rnti);
+ LteRrcSap::RrcConnectionReject rejectMsg;
+ rejectMsg.waitTime = 3;
+ m_rrc->m_rrcSapUser->SendRrcConnectionReject (m_rnti, rejectMsg);
+ Time maxRecvConnRejectDelay = MilliSeconds (30);
+ m_connectionTimeout = Simulator::Schedule (maxRecvConnRejectDelay, &LteEnbRrc::ConnectionTimeout, m_rrc, m_rnti);
+ SwitchToState (CONNECTION_REJECTED);
+ }
}
break;
@@ -1331,17 +1346,7 @@
{
NS_LOG_FUNCTION (this << rnti);
- if (m_admitRrcConnectionRequest == true)
- {
GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
- }
- else
- {
- NS_LOG_INFO ("rejecting connection request to rnti " << rnti);
- LteRrcSap::RrcConnectionReject rejectMsg;
- rejectMsg.waitTime = 3;
- m_rrcSapUser->SendRrcConnectionReject (rnti, rejectMsg);
- }
}
void
--- a/src/lte/test/test-lte-rrc.cc Wed Dec 19 12:20:08 2012 +0100
+++ b/src/lte/test/test-lte-rrc.cc Wed Dec 19 13:59:51 2012 +0100
@@ -320,12 +320,10 @@
{
NS_LOG_FUNCTION (this);
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1, 0, true));
-
for (uint32_t useIdealRrc = 0; useIdealRrc <= 1; ++useIdealRrc)
{
// <----- all times in ms ----------------->
- // nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest
+ // nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, useIdealRrc, true));
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 100, 0, 1, useIdealRrc, true));
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 1, 0, 0, 1, useIdealRrc, true));
@@ -347,12 +345,13 @@
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20, 0, 10, 1, 1, useIdealRrc, true));
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1, useIdealRrc, true));
- // Test cases to check admitRrcConnectionRequest=false
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, useIdealRrc, false));
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, useIdealRrc, false));
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, useIdealRrc, false));
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, useIdealRrc, false));
- //AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, useIdealRrc, false));
+ //Test cases to check admitRrcConnectionRequest=false
+ // nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest
+ AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 0, 0, 0, 1, useIdealRrc, false));
+ AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 1, 2, 100, 0, 1, useIdealRrc, false));
+ AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 0, 20, 0, 1, useIdealRrc, false));
+ AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 2, 1, 20, 0, 1, useIdealRrc, false));
+ AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 3, 0, 20, 0, 1, useIdealRrc, false));
// // time consuming tests with a lot of UEs
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 0, 1, useIdealRrc, true));