From f1e041ad98ecfef28f4571557ca47ce114a1e432 Mon Sep 17 00:00:00 2001
From: WANG Tsu-Han <wangts@eurecom.fr>
Date: Tue, 21 Aug 2018 15:18:05 +0200
Subject: [PATCH] bug fix for 25RBs with new modulation scheme and add config
 for 5 & 10 MHz with phy-test

---
 openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c |  7 ++++---
 openair2/LAYER2/MAC/eNB_scheduler_phytest.c   | 15 ++++++++++++++-
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
index 6f1913ff91..0bd28b6827 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
@@ -2423,7 +2423,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
        * with above code that needs to be analyzed and fixed. In the
        * meantime, let's use the generic function.
        */
-      allocate_REs = allocate_REs_in_RB;
+      //allocate_REs = allocate_REs_in_RB;
       break;
 
     }
@@ -2432,7 +2432,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
      * previous version. Some more work/validation is needed before
      * we switch to the new version.
      */
-    allocate_REs = allocate_REs_in_RB;
+    //allocate_REs = allocate_REs_in_RB;
 
     switch (mod_order1) {
     case 2:
@@ -2485,7 +2485,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
 
       skip_half = check_skiphalf(rb,subframe_offset,frame_parms,l,nsymb);
       skip_dc   = check_skip_dc(rb,frame_parms);
-
+      if(skip_half>0)
+        allocate_REs = allocate_REs_in_RB;
 
 
      if (dlsch0) {
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
index 49cc68b06a..71449e3cd4 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
@@ -202,7 +202,8 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
   int32_t           normalized_rx_power;
   int32_t           target_rx_power= 178;
   int               CC_id = 0;
-  int               nb_rb = 96;
+  int               nb_rb;
+  int               N_RB_UL;
   eNB_MAC_INST      *mac = RC.mac[module_idP];
   COMMON_channels_t *cc  = &mac->common_channels[0];
   UE_list_t         *UE_list=&mac->UE_list;
@@ -222,6 +223,18 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
   //nfapi_ul_config_request_pdu_t  *ul_config_pdu = &ul_req->ul_config_pdu_list[0];;
   nfapi_ul_config_request_body_t *ul_req       = &mac->UL_req[CC_id].ul_config_request_body;
 
+  N_RB_UL         = to_prb(cc->mib->message.dl_Bandwidth);
+  switch(N_RB_UL){
+  case 100:
+    nb_rb = 96;
+    break;
+  case 50:
+    nb_rb = 48;
+    break;
+  case 25:
+    nb_rb = 24;
+    break;
+  }
 
   mac->UL_req[CC_id].sfn_sf   = (sched_frame<<4) + sched_subframe;
   hi_dci0_req->sfn_sf = (frameP << 4) + subframeP;
-- 
GitLab