From e7740eb238dea7ed04eabd2519d726a22eb10f58 Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Tue, 4 Dec 2012 13:16:20 +0100 Subject: [PATCH] Bug fix release info on RR allocation memory and remove NS_FATAL_ERROR on HARQ when HO --- src/lte/model/pf-ff-mac-scheduler.cc | 4 ++++ src/lte/model/rr-ff-mac-scheduler.cc | 25 ++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/lte/model/pf-ff-mac-scheduler.cc b/src/lte/model/pf-ff-mac-scheduler.cc index 99233e357..f65f7fcba 100644 --- a/src/lte/model/pf-ff-mac-scheduler.cc +++ b/src/lte/model/pf-ff-mac-scheduler.cc @@ -434,6 +434,10 @@ PfFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::Csc it++; } } + if (m_nextRntiUl == params.m_rnti) + { + m_nextRntiUl = 0; + } return; } diff --git a/src/lte/model/rr-ff-mac-scheduler.cc b/src/lte/model/rr-ff-mac-scheduler.cc index 179efdbb3..9b53e27ea 100644 --- a/src/lte/model/rr-ff-mac-scheduler.cc +++ b/src/lte/model/rr-ff-mac-scheduler.cc @@ -379,7 +379,7 @@ RrFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::Csc void RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params) { - NS_LOG_FUNCTION (this); + NS_LOG_FUNCTION (this << " Release RNTI " << params.m_rnti); m_uesTxMode.erase (params.m_rnti); m_dlHarqCurrentProcessId.erase (params.m_rnti); @@ -393,9 +393,9 @@ RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::Csc std::list::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) { + NS_LOG_DEBUG (this << " Erase RNTI " << (*it).m_rnti << " LC " << (uint16_t)(*it).m_logicalChannelIdentity); it = m_rlcBufferReq.erase (it); } else @@ -403,6 +403,15 @@ RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::Csc it++; } } + if (m_nextRntiUl == params.m_rnti) + { + m_nextRntiUl = 0; + } + + if (m_nextRntiDl == params.m_rnti) + { + m_nextRntiDl = 0; + } return; } @@ -689,7 +698,7 @@ RrFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sched std::map ::iterator it = m_dlHarqProcessesStatus.find (rnti); if (it == m_dlHarqProcessesStatus.end ()) { - NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << m_dlInfoListBuffered.at (i).m_rnti); + NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << m_dlInfoListBuffered.at (i).m_rnti); } (*it).second.at (harqId) = 0; std::map ::iterator itRlcPdu = m_dlHarqProcessesRlcPduListBuffer.find (rnti); @@ -1200,20 +1209,20 @@ RrFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::Sched itProcId = m_ulHarqCurrentProcessId.find (rnti); if (itProcId == m_ulHarqCurrentProcessId.end ()) { - NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << rnti); + NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti); } uint8_t harqId = (uint8_t)((*itProcId).second - HARQ_PERIOD) % HARQ_PROC_NUM; NS_LOG_INFO (this << " UL-HARQ retx RNTI " << rnti << " harqId " << (uint16_t)harqId); std::map ::iterator itHarq = m_ulHarqProcessesDciBuffer.find (rnti); if (itHarq == m_ulHarqProcessesDciBuffer.end ()) { - NS_FATAL_ERROR ("No info find in UL-HARQ buffer for UE " << rnti); + NS_LOG_ERROR ("No info find in UL-HARQ buffer for UE (might change eNB) " << rnti); } UlDciListElement_s dci = (*itHarq).second.at (harqId); std::map ::iterator itStat = m_ulHarqProcessesStatus.find (rnti); if (itStat == m_ulHarqProcessesStatus.end ()) { - NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << rnti); + NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti); } if ((*itStat).second.at (harqId) > 3) { @@ -1327,7 +1336,7 @@ RrFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::Sched // limit to physical resources last resource assignment rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated; } - + NS_LOG_DEBUG (this << " try to allocate " << (*it).first); UlDciListElement_s uldci; uldci.m_rnti = (*it).first; uldci.m_rbLen = rbPerFlow; @@ -1517,11 +1526,13 @@ RrFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::S { // create the new entry m_ceBsrRxed.insert ( std::pair (rnti, buffer)); + NS_LOG_INFO (this << " Insert RNTI " << rnti); } else { // update the buffer size value (*it).second = buffer; + NS_LOG_INFO (this << " Update RNTI " << rnti); } } }