From 1e05dd7f5d8792f7231926390bd67a054af618f9 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 17:12:19 +0100 Subject: [PATCH 1/5] LteRrcSap now scheduling DoRecvXxx methods instead of direct call --- src/lte/model/lte-rrc-sap.h | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/lte/model/lte-rrc-sap.h b/src/lte/model/lte-rrc-sap.h index 81eca795f..1ea0cd298 100644 --- a/src/lte/model/lte-rrc-sap.h +++ b/src/lte/model/lte-rrc-sap.h @@ -26,6 +26,7 @@ #include #include +#include namespace ns3 { @@ -594,63 +595,63 @@ template void MemberLteUeRrcSapProvider::RecvMasterInformationBlock (MasterInformationBlock msg) { - m_owner->DoRecvMasterInformationBlock (msg); + Simulator::ScheduleNow (&C::DoRecvMasterInformationBlock, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg) { - m_owner->DoRecvSystemInformationBlockType1 (msg); + Simulator::ScheduleNow (&C::DoRecvSystemInformationBlockType1, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvSystemInformation (SystemInformation msg) { - m_owner->DoRecvSystemInformation (msg); + Simulator::ScheduleNow (&C::DoRecvSystemInformation, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionSetup (RrcConnectionSetup msg) { - m_owner->DoRecvRrcConnectionSetup (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetup, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReconfiguration (RrcConnectionReconfiguration msg) { - m_owner->DoRecvRrcConnectionReconfiguration (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfiguration, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg) { - m_owner->DoRecvRrcConnectionReestablishment (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishment, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg) { - m_owner->DoRecvRrcConnectionReestablishmentReject (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentReject, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionRelease (RrcConnectionRelease msg) { - m_owner->DoRecvRrcConnectionRelease (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionRelease, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReject (RrcConnectionReject msg) { - m_owner->DoRecvRrcConnectionReject (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReject, m_owner, msg); } @@ -852,35 +853,35 @@ template void MemberLteEnbRrcSapProvider::RecvRrcConnectionRequest (uint16_t rnti, RrcConnectionRequest msg) { - m_owner->DoRecvRrcConnectionRequest (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionRequest, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted (uint16_t rnti, RrcConnectionSetupCompleted msg) { - m_owner->DoRecvRrcConnectionSetupCompleted (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetupCompleted, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted (uint16_t rnti, RrcConnectionReconfigurationCompleted msg) { - m_owner->DoRecvRrcConnectionReconfigurationCompleted (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfigurationCompleted, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest (uint16_t rnti, RrcConnectionReestablishmentRequest msg) { - m_owner->DoRecvRrcConnectionReestablishmentRequest (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentRequest, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete (uint16_t rnti, RrcConnectionReestablishmentComplete msg) { - m_owner->DoRecvRrcConnectionReestablishmentComplete (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentComplete, m_owner, rnti, msg); } From 7622a4cebd43fedca3747cbe5de647384efc1e38 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 17:16:48 +0100 Subject: [PATCH 2/5] added missing reinitializations to LteSpectrumPhy::Reset () --- src/lte/model/lte-spectrum-phy.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lte/model/lte-spectrum-phy.cc b/src/lte/model/lte-spectrum-phy.cc index 019f94a0a..c0cb73365 100644 --- a/src/lte/model/lte-spectrum-phy.cc +++ b/src/lte/model/lte-spectrum-phy.cc @@ -307,6 +307,12 @@ LteSpectrumPhy::Reset () m_endRxDataEvent.Cancel (); m_endRxDlCtrlEvent.Cancel (); m_endRxUlSrsEvent.Cancel (); + m_rxControlMessageList.clear (); + m_expectedTbs.clear (); + m_txControlMessageList.clear (); + m_rxPacketBurstList.clear (); + m_txPacketBurst = 0; + m_rxSpectrumModel = 0; } From 444648d7ff6fa9cbe9fb3ce268c86f4875822591 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 17:26:59 +0100 Subject: [PATCH 3/5] increase test time in lte-link-adaptation test --- src/lte/test/lte-test-link-adaptation.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lte/test/lte-test-link-adaptation.cc b/src/lte/test/lte-test-link-adaptation.cc index b01ca5b14..bc37e45df 100644 --- a/src/lte/test/lte-test-link-adaptation.cc +++ b/src/lte/test/lte-test-link-adaptation.cc @@ -155,9 +155,11 @@ LteLinkAdaptationTestCase::~LteLinkAdaptationTestCase () void LteLinkAdaptationTestCase::DoRun (void) { - + Config::Reset (); Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010)); Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005)); + Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (2)); + /** * Simulation Topology */ @@ -206,7 +208,7 @@ LteLinkAdaptationTestCase::DoRun (void) Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling", MakeBoundCallback (&LteTestDlSchedulingCallback, this)); - Simulator::Stop (Seconds (0.026)); + Simulator::Stop (Seconds (0.040)); Simulator::Run (); double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()->operator[] (0)); @@ -233,7 +235,7 @@ LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, * RRC connection has been completed and * CQI feedback is available at the eNB. */ - if (Simulator::Now ().GetSeconds () > 0.024) + if (Simulator::Now ().GetSeconds () > 0.030) { NS_LOG_INFO (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1); From 93596c5ba8c2fbe34aa65e440efa1513c1e35b45 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 18:23:50 +0100 Subject: [PATCH 4/5] discard packets for which UE context is not found --- src/lte/model/epc-enb-application.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lte/model/epc-enb-application.cc b/src/lte/model/epc-enb-application.cc index dc31d3f97..59aa4e44a 100644 --- a/src/lte/model/epc-enb-application.cc +++ b/src/lte/model/epc-enb-application.cc @@ -254,11 +254,17 @@ EpcEnbApplication::RecvFromLteSocket (Ptr socket) uint8_t bid = tag.GetBid (); NS_LOG_LOGIC ("received packet with RNTI=" << (uint32_t) rnti << ", BID=" << (uint32_t) bid); std::map >::iterator rntiIt = m_rbidTeidMap.find (rnti); - NS_ASSERT (rntiIt != m_rbidTeidMap.end ()); - std::map::iterator bidIt = rntiIt->second.find (bid); - NS_ASSERT (bidIt != rntiIt->second.end ()); - uint32_t teid = bidIt->second; - SendToS1uSocket (packet, teid); + if (rntiIt == m_rbidTeidMap.end ()) + { + NS_LOG_WARN ("UE context not found, discarding packet"); + } + else + { + std::map::iterator bidIt = rntiIt->second.find (bid); + NS_ASSERT (bidIt != rntiIt->second.end ()); + uint32_t teid = bidIt->second; + SendToS1uSocket (packet, teid); + } } void From 2cfe27f9a707d51d4df5588b923229b2b18816fa Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 18:24:18 +0100 Subject: [PATCH 5/5] minor changes to lte-x2-handover test --- src/lte/test/test-lte-x2-handover.cc | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/lte/test/test-lte-x2-handover.cc b/src/lte/test/test-lte-x2-handover.cc index 663468bcd..476382c85 100644 --- a/src/lte/test/test-lte-x2-handover.cc +++ b/src/lte/test/test-lte-x2-handover.cc @@ -432,7 +432,6 @@ LteX2HandoverTestCase::DoRun () void LteX2HandoverTestCase::CheckConnected (Ptr ueDevice, Ptr enbDevice) { - NS_LOG_FUNCTION (this); Ptr ueLteDevice = ueDevice->GetObject (); Ptr ueRrc = ueLteDevice->GetRrc (); NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY, "Wrong LteUeRrc state!"); @@ -500,7 +499,6 @@ LteX2HandoverTestCase::CheckConnected (Ptr ueDevice, Ptr e void LteX2HandoverTestCase::SaveStatsAfterHandover (uint32_t ueIndex) { - NS_LOG_FUNCTION (this << ueIndex); for (std::list::iterator it = m_ueDataVector.at (ueIndex).bearerDataList.begin (); it != m_ueDataVector.at (ueIndex).bearerDataList.end (); ++it) @@ -512,8 +510,7 @@ LteX2HandoverTestCase::SaveStatsAfterHandover (uint32_t ueIndex) void LteX2HandoverTestCase::CheckStatsAWhileAfterHandover (uint32_t ueIndex) -{ - NS_LOG_FUNCTION (this << ueIndex); +{ uint32_t b = 1; for (std::list::iterator it = m_ueDataVector.at (ueIndex).bearerDataList.begin (); it != m_ueDataVector.at (ueIndex).bearerDataList.end (); @@ -541,8 +538,6 @@ public: LteX2HandoverTestSuite::LteX2HandoverTestSuite () : TestSuite ("lte-x2-handover", SYSTEM) { - NS_LOG_FUNCTION (this); - // in the following: // fwd means handover from enb 0 to enb 1 // bwd means handover from enb 1 to enb 0 @@ -616,11 +611,9 @@ LteX2HandoverTestSuite::LteX2HandoverTestSuite () hel7.push_back (ue2fwd); hel7.push_back (ue2bwd); - AddTestCase (new LteX2HandoverTestCase ( 2, 0, hel1, hel1name, true, "ns3::RrFfMacScheduler", true, false)); - std::vector schedulers; schedulers.push_back ("ns3::RrFfMacScheduler"); - schedulers.push_back ("ns3::PfrFfMacScheduler"); + schedulers.push_back ("ns3::PfFfMacScheduler"); for (std::vector::iterator schedIt = schedulers.begin (); schedIt != schedulers.end (); ++schedIt) { for (int32_t useIdealRrc = 1; useIdealRrc >= 0; --useIdealRrc)