From fa0ccf1951e796c2d726cbc184c880b4e773cff7 Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 22 Dec 2011 17:59:01 +0100 Subject: [PATCH] Update RR and PF scheduler for updating BSR queues avoiding overflows --- src/lte/model/pf-ff-mac-scheduler.cc | 9 ++++++++- src/lte/model/rr-ff-mac-scheduler.cc | 13 +++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lte/model/pf-ff-mac-scheduler.cc b/src/lte/model/pf-ff-mac-scheduler.cc index a1f29dc15..901dd3f5a 100644 --- a/src/lte/model/pf-ff-mac-scheduler.cc +++ b/src/lte/model/pf-ff-mac-scheduler.cc @@ -1181,7 +1181,14 @@ PfFfMacScheduler::UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size) if (it!=m_ceBsrRxed.end ()) { // NS_LOG_DEBUG (this << " UE " << rnti << " size " << size << " BSR " << (*it).second); - (*it).second -= size; + if ((*it).second >= size) + { + (*it).second -= size; + } + else + { + (*it).second = 0; + } } else { diff --git a/src/lte/model/rr-ff-mac-scheduler.cc b/src/lte/model/rr-ff-mac-scheduler.cc index 3d0d01adf..970c02769 100644 --- a/src/lte/model/rr-ff-mac-scheduler.cc +++ b/src/lte/model/rr-ff-mac-scheduler.cc @@ -23,6 +23,7 @@ #include "lte-amc.h" #include "rr-ff-mac-scheduler.h" +#include NS_LOG_COMPONENT_DEFINE ("RrFfMacScheduler"); @@ -816,6 +817,7 @@ RrFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::S { // update the CQI value (*it).second = BufferSizeLevelBsr::BsrId2BufferSize (params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0)); +// NS_LOG_DEBUG (this << " Update BSR with " << BufferSizeLevelBsr::BsrId2BufferSize (params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0)) << " at " << Simulator::Now ()); } } } @@ -1010,8 +1012,15 @@ RrFfMacScheduler::UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size) std::map ::iterator it = m_ceBsrRxed.find (rnti); if (it!=m_ceBsrRxed.end ()) { -// NS_LOG_DEBUG (this << " UE " << rnti << " szie " << size << " BSR " << (*it).second); - (*it).second -= size; +// NS_LOG_DEBUG (this << " Update RLC BSR UE " << rnti << " size " << size << " BSR " << (*it).second); + if ((*it).second >= size) + { + (*it).second -= size; + } + else + { + (*it).second = 0; + } } else {