Bug 2049

Summary: CQI feedback should always use the same calculation method
Product: ns-3 Reporter: Nicola Baldo <nicola>
Component: lteAssignee: Nicola Baldo <nicola>
Status: RESOLVED FIXED    
Severity: normal CC: gawlowicz.p, mmiozzo, ns-bugs, zorazeali
Priority: P5    
Version: ns-3-dev   
Hardware: PC   
OS: Linux   

Description Nicola Baldo 2015-01-28 08:17:33 UTC
When LteHelper::UsePdschForCqiGeneration == true, the mixed CQI calculation is used. As per the docs:
"CQI are generated from control channels as signal and data channels (if received) as interference. It there is no transmission in data channel, CQI is generated only from control channels, as in legacy solution"

this is inconsistent, as the ctrl channel CQI calculation will count all neighbours as interference, whereas if there is no tranmission in the data channel it means interference is zero.

In the code, what happens is:

if no PDSCH signal in a TTI
=> LteSpectrumPhy::StartRxData and LteSpectrumPhy::EndRxData are not called
=> m_interferenceData->endRx () is not called
=> LteUePhy::ReportDataInterference () is not called
=> when LteUePhy::GenerateCtrlCqi () is called, m_dataInterferencePowerUpdated is false, and the old calculation method is used.

this causes a weird behavior. E.g. when hard FR is used in a 3 cell setting, there is actually no interference on the RBs of your cell (thanks to FR). However, if neighbors are transmitted intermittently, when they are idle you actually see a lower CQI, as if there were interference, because the ctrl-based CQI calculation is used.


Proposed fix: 

  if (m_dataInterferencePowerUpdated)
    {
      SpectrumValue mixedSinr = m_rsReceivedPower / m_dataInterferencePower;
      GenerateMixedCqiReport (mixedSinr);
      m_dataInterferencePowerUpdated = false;
      return;
    }
  else
    {
     SpectrumValue mixedSinr = m_rsReceivedPower / m_noisePsd;
     GenerateMixedCqiReport (mixedSinr);
     return;
    }
Comment 1 Nicola Baldo 2015-01-29 10:52:22 UTC
This implements the proposed fix

changeset:   11178:852f39d83883
user:        Nicola Baldo <nbaldo@cttc.es>
date:        Thu Jan 29 16:35:33 2015 +0100
summary:     fixed Bug 2049 - CQI feedback should always use the same calculation method

I also did some minor refactoring of LteUePhy and LteHelper to improve readability and reduce some code duplication.

Feel free to reopen this if you think there is anything wrong with this approach.