RB Bitmap in LTE DL scheduling

58 views
Skip to first unread message

Ramakrishnan

unread,
Jan 2, 2018, 12:13:58 AM1/2/18
to ns-3-users
Hi, 

I am interested in knowing what is the set of PRBs and RBGs allocated for each UE by the LTE eNB Downlink scheduler. 
I looked through the code and find that the the values could be printed before calling "m_dlScheduling(dlSchedulingCallbackInfo);" in lte-enb-mac.cc

I tried to simulate multiple UE environment and tried switching the scheduler between PF and RR and I see the rbBitmap changing. 
" RGBMAP "    << (uint32_t)ind.m_buildDataList.at(i).m_dci.m_rbBitmap

Just wanted to confirm if this is the correct location to pick this info? 
Also is there a reference that could be used to derive "Coding rate" from allocated TBSize ?

Thanks, 
Rama

*********************************
File: lte-enb-mac.cc
Function: LteEnbMac::DoSchedDlConfigInd (FfMacSchedSapUser::SchedDlConfigIndParameters ind)

  for (  uint32_t i  = 0; i < ind.m_buildDataList.size (); i++ )
    {
      // Only one TB used
      if (ind.m_buildDataList.at (i).m_dci.m_tbsSize.size () == 1)
        {
          DlSchedulingCallbackInfo dlSchedulingCallbackInfo;
          dlSchedulingCallbackInfo.frameNo = m_frameNo;
          dlSchedulingCallbackInfo.subframeNo = m_subframeNo;
          dlSchedulingCallbackInfo.rnti = ind.m_buildDataList.at (i).m_dci.m_rnti;
          dlSchedulingCallbackInfo.mcsTb1=ind.m_buildDataList.at (i).m_dci.m_mcs.at (0);
          dlSchedulingCallbackInfo.sizeTb1 = ind.m_buildDataList.at (i).m_dci.m_tbsSize.at (0);
          dlSchedulingCallbackInfo.mcsTb2 = 0;
          dlSchedulingCallbackInfo.sizeTb2 = 0;
          dlSchedulingCallbackInfo.componentCarrierId = m_componentCarrierId;
          m_dlScheduling(dlSchedulingCallbackInfo);
        }
      // Two TBs used
      else if (ind.m_buildDataList.at (i).m_dci.m_tbsSize.size () == 2)
        {
          DlSchedulingCallbackInfo dlSchedulingCallbackInfo;
          dlSchedulingCallbackInfo.frameNo = m_frameNo;
          dlSchedulingCallbackInfo.subframeNo = m_subframeNo;
          dlSchedulingCallbackInfo.rnti = ind.m_buildDataList.at (i).m_dci.m_rnti;
          dlSchedulingCallbackInfo.mcsTb1=ind.m_buildDataList.at (i).m_dci.m_mcs.at (0);
          dlSchedulingCallbackInfo.sizeTb1 = ind.m_buildDataList.at (i).m_dci.m_tbsSize.at (0);
          dlSchedulingCallbackInfo.mcsTb2 = ind.m_buildDataList.at (i).m_dci.m_mcs.at (1);
          dlSchedulingCallbackInfo.sizeTb2 = ind.m_buildDataList.at (i).m_dci.m_tbsSize.at (1);
          dlSchedulingCallbackInfo.componentCarrierId = m_componentCarrierId;
          m_dlScheduling(dlSchedulingCallbackInfo);
        }
      else
        {
          NS_FATAL_ERROR ("Found element with more than two transport blocks");
        }

Ramakrishnan

unread,
Jan 3, 2018, 12:54:25 AM1/3/18
to ns-3-users
Just wanted to update - for the query "a reference that could be used to derive "Coding rate" from allocated TBSize",  I came across 3GPP TDoc R1-081483 in the NS3 references (https://www.nsnam.org/docs/models/html/lte-references.html#R1-081483)  that addresses this. 

regards
Rama
Reply all
Reply to author
Forward
0 new messages