Bug 2049 - CQI feedback should always use the same calculation method
CQI feedback should always use the same calculation method
Status: RESOLVED FIXED
Product: ns-3
Classification: Unclassified
Component: lte
ns-3-dev
PC Linux
: P5 normal
Assigned To: Nicola Baldo
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2015-01-28 08:17 UTC by Nicola Baldo
Modified: 2015-01-29 10:52 UTC (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.