Bug-fix UL Allocation Map storing for UL-CQI

This commit is contained in:
Marco Miozzo
2011-11-14 12:25:16 +01:00
parent 3264547824
commit 63013bcb41
2 changed files with 22 additions and 14 deletions

View File

@@ -971,25 +971,29 @@ void
PfFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
{
NS_LOG_FUNCTION (this);
//NS_LOG_DEBUG (this << " RX UL CQI at " << params.m_sfnSf);
// NS_LOG_DEBUG (this << " RX SFNID " << params.m_sfnSf << " delay " << (uint32_t)m_schedTtiDelay);
// correlate info on UL-CQIs with previous scheduling -> calculate m_sfnSf of transmission
uint32_t frameNo = (0x3FF & params.m_sfnSf) >> 4;
uint32_t frameNo = (0x3FF & (params.m_sfnSf >> 4));
uint32_t subframeNo = (0xF & params.m_sfnSf);
//NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
if (subframeNo - m_schedTtiDelay < 0)
// NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
if (subframeNo <= m_schedTtiDelay)
{
frameNo--;
subframeNo = (10 + subframeNo - m_schedTtiDelay) % 11;
}
else
{
subframeNo = (subframeNo - m_schedTtiDelay) % 11;
}
subframeNo = (subframeNo - m_schedTtiDelay) % 10;
//NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo);
uint16_t sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
// NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo << " sfnSf " << sfnSf);
// retrieve the allocation for this subframe
std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
std::map <uint16_t, std::vector <double> >::iterator itCqi;
itMap = m_allocationMaps.find (sfnSf);
if (itMap == m_allocationMaps.end ())
{
NS_LOG_DEBUG (this << " Does not find info on allocation");
NS_LOG_DEBUG (this << " Does not find info on allocation, size : " << m_allocationMaps.size ());
return;
}
for (uint32_t i = 0; i < (*itMap).second.size (); i++)
@@ -1033,7 +1037,7 @@ PfFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::Sched
}
// remove obsolete info on allocation
m_allocationMaps.erase (m_allocationMaps.begin (), ++itMap);
m_allocationMaps.erase (itMap);
return;
}

View File

@@ -814,18 +814,22 @@ void
RrFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
{
NS_LOG_FUNCTION (this);
//NS_LOG_DEBUG (this << " RX UL CQI at " << params.m_sfnSf);
// NS_LOG_DEBUG (this << " RX SFNID " << params.m_sfnSf);
// correlate info on UL-CQIs with previous scheduling -> calculate m_sfnSf of transmission
uint32_t frameNo = (0x3FF & params.m_sfnSf) >> 4;
uint32_t frameNo = (0x3FF & (params.m_sfnSf >> 4));
uint32_t subframeNo = (0xF & params.m_sfnSf);
//NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
if (subframeNo - m_schedTtiDelay < 0)
if (subframeNo <= m_schedTtiDelay)
{
frameNo--;
subframeNo = (10 + subframeNo - m_schedTtiDelay) % 11;
}
else
{
subframeNo = (subframeNo - m_schedTtiDelay) % 11;
}
subframeNo = (subframeNo - m_schedTtiDelay) % 10;
//NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo);
uint16_t sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
// NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo << " sfnSf " << sfnSf);
// retrieve the allocation for this subframe
std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
std::map <uint16_t, std::vector <double> >::iterator itCqi;
@@ -874,7 +878,7 @@ RrFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::Sched
}
// remove obsolete info on allocation
m_allocationMaps.erase (m_allocationMaps.begin (), ++itMap);
m_allocationMaps.erase (itMap);
return;
}