UeRelease support at LteEnbMac and schedulers (PF and RR)
This commit is contained in:
@@ -368,7 +368,7 @@ LteEnbMac::DoDispose ()
|
||||
m_ulCeReceived.clear ();
|
||||
m_dlInfoListReceived.clear ();
|
||||
m_ulInfoListReceived.clear ();
|
||||
m_miDlHarqProcessesPackets.clear ();
|
||||
m_miDlHarqProcessesPackets.clear ();
|
||||
delete m_macSapProvider;
|
||||
delete m_cmacSapProvider;
|
||||
delete m_schedSapUser;
|
||||
@@ -769,6 +769,7 @@ LteEnbMac::DoRemoveUe (uint16_t rnti)
|
||||
params.m_rnti = rnti;
|
||||
m_cschedSapProvider->CschedUeReleaseReq (params);
|
||||
m_rlcAttached.erase (rnti);
|
||||
m_miDlHarqProcessesPackets.erase (rnti);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -382,7 +382,24 @@ void
|
||||
PfFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
// TODO: Implementation of the API
|
||||
for (uint16_t i = 0; i < params.m_logicalChannelIdentity.size (); i++)
|
||||
{
|
||||
std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
|
||||
std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
|
||||
while (it!=m_rlcBufferReq.end ())
|
||||
{
|
||||
if (((*it).first.m_rnti == params.m_rnti) && ((*it).first.m_lcId == params.m_logicalChannelIdentity.at (i)))
|
||||
{
|
||||
temp = it;
|
||||
it++;
|
||||
m_rlcBufferReq.erase (temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
it++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -390,7 +407,34 @@ void
|
||||
PfFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
// TODO: Implementation of the API
|
||||
|
||||
m_uesTxMode.erase (params.m_rnti);
|
||||
m_dlHarqCurrentProcessId.erase (params.m_rnti);
|
||||
m_dlHarqProcessesStatus.erase (params.m_rnti);
|
||||
m_dlHarqProcessesDciBuffer.erase (params.m_rnti);
|
||||
m_dlHarqProcessesRlcPduListBuffer.erase (params.m_rnti);
|
||||
m_ulHarqCurrentProcessId.erase (params.m_rnti);
|
||||
m_ulHarqProcessesStatus.erase (params.m_rnti);
|
||||
m_ulHarqProcessesDciBuffer.erase (params.m_rnti);
|
||||
m_flowStatsDl.erase (params.m_rnti);
|
||||
m_flowStatsUl.erase (params.m_rnti);
|
||||
m_ceBsrRxed.erase (params.m_rnti);
|
||||
std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
|
||||
std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
|
||||
while (it!=m_rlcBufferReq.end ())
|
||||
{
|
||||
if ((*it).first.m_rnti == params.m_rnti)
|
||||
{
|
||||
temp = it;
|
||||
it++;
|
||||
m_rlcBufferReq.erase (temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
it++;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -350,7 +350,7 @@ void
|
||||
RrFfMacScheduler::DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
// Not used at this stage
|
||||
// Not used at this stage (LCs updated by DoSchedDlRlcBufferReq)
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -358,7 +358,21 @@ void
|
||||
RrFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
// TODO: Implementation of the API
|
||||
for (uint16_t i = 0; i < params.m_logicalChannelIdentity.size (); i++)
|
||||
{
|
||||
std::list<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
|
||||
while (it!=m_rlcBufferReq.end ())
|
||||
{
|
||||
if (((*it).m_rnti == params.m_rnti)&&((*it).m_logicalChannelIdentity == params.m_logicalChannelIdentity.at (i)))
|
||||
{
|
||||
it = m_rlcBufferReq.erase (it);
|
||||
}
|
||||
else
|
||||
{
|
||||
it++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -366,7 +380,30 @@ void
|
||||
RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
// TODO: Implementation of the API
|
||||
|
||||
m_uesTxMode.erase (params.m_rnti);
|
||||
m_dlHarqCurrentProcessId.erase (params.m_rnti);
|
||||
m_dlHarqProcessesStatus.erase (params.m_rnti);
|
||||
m_dlHarqProcessesDciBuffer.erase (params.m_rnti);
|
||||
m_dlHarqProcessesRlcPduListBuffer.erase (params.m_rnti);
|
||||
m_ulHarqCurrentProcessId.erase (params.m_rnti);
|
||||
m_ulHarqProcessesStatus.erase (params.m_rnti);
|
||||
m_ulHarqProcessesDciBuffer.erase (params.m_rnti);
|
||||
m_ceBsrRxed.erase (params.m_rnti);
|
||||
std::list<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
|
||||
while (it != m_rlcBufferReq.end ())
|
||||
{
|
||||
NS_LOG_DEBUG (this << " Erase RNTI " << (*it).m_rnti << " LC " << (uint16_t)(*it).m_logicalChannelIdentity);
|
||||
if ((*it).m_rnti == params.m_rnti)
|
||||
{
|
||||
it = m_rlcBufferReq.erase (it);
|
||||
}
|
||||
else
|
||||
{
|
||||
it++;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ std::string LteRrcConnectionEstablishmentTestCase::BuildNameString (uint32_t nUe
|
||||
}
|
||||
|
||||
LteRrcConnectionEstablishmentTestCase::LteRrcConnectionEstablishmentTestCase (uint32_t nUes, uint32_t nBearers, uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc)
|
||||
: TestCase (BuildNameString (nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart)),
|
||||
: TestCase (BuildNameString (nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc)),
|
||||
m_nUes (nUes),
|
||||
m_nBearers (nBearers),
|
||||
m_tConnBase (tConnBase),
|
||||
@@ -275,13 +275,14 @@ LteRrcTestSuite::LteRrcTestSuite ()
|
||||
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 0, 1, useIdealRrc));
|
||||
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 4, 0, 20, 300, 1, useIdealRrc));
|
||||
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20, 0, 10, 1, 1, useIdealRrc));
|
||||
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1));, useIdealRrc
|
||||
AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50, 0, 0, 0, 1, useIdealRrc));
|
||||
// // time consuming tests with a lot of UEs
|
||||
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 0, 1));
|
||||
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (100, 0, 10, 1, 1));
|
||||
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 0, 1));
|
||||
// AddTestCase (new LteRrcConnectionEstablishmentTestCase (200, 0, 10, 1, 1));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static LteRrcTestSuite g_lteRrcTestSuiteInstance;
|
||||
|
||||
Reference in New Issue
Block a user