From 79d77a4af8b5ed572b3664c3f741555cf3568068 Mon Sep 17 00:00:00 2001
From: "islam.galal" <igalal.ext@orange.com>
Date: Mon, 14 Aug 2017 18:43:49 +0200
Subject: [PATCH] debugging for SIB1-BR

---
 openair1/PHY/CODING/lte_rate_matching.c   |  2 +-
 openair1/PHY/LTE_TRANSPORT/defs.h         |  4 +-
 openair1/PHY/LTE_TRANSPORT/dlsch_coding.c | 20 ++---
 openair1/SCHED/phy_procedures_lte_eNb.c   | 96 ++++++++++++++---------
 openair2/LAYER2/MAC/eNB_scheduler_bch.c   | 52 ++++++------
 openair2/RRC/LITE/MESSAGES/asn1_msg.c     |  3 +-
 targets/RT/USER/lte-ru.c                  |  7 +-
 7 files changed, 109 insertions(+), 75 deletions(-)

diff --git a/openair1/PHY/CODING/lte_rate_matching.c b/openair1/PHY/CODING/lte_rate_matching.c
index a25dbe8b79..7d48021721 100644
--- a/openair1/PHY/CODING/lte_rate_matching.c
+++ b/openair1/PHY/CODING/lte_rate_matching.c
@@ -520,7 +520,7 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
   GpmodC = Gp%C;
 
 #ifdef RM_DEBUG
-  printf("lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",Ncb,3*(RTC<<5),Nir/C,rvidx, G, Qm,Nl,r);
+  LOG_D(PHY,"lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",Ncb,3*(RTC<<5),Nir/C,rvidx, G, Qm,Nl,r);
 #endif
 
   if (r < (C-(GpmodC)))
diff --git a/openair1/PHY/LTE_TRANSPORT/defs.h b/openair1/PHY/LTE_TRANSPORT/defs.h
index 9d3d9c2b40..e2be6810b2 100644
--- a/openair1/PHY/LTE_TRANSPORT/defs.h
+++ b/openair1/PHY/LTE_TRANSPORT/defs.h
@@ -291,7 +291,9 @@ typedef struct {
   int16_t sqrt_rho_a;
   /// amplitude of PDSCH (compared to RS) in symbols containing pilots
   int16_t sqrt_rho_b;
-
+#ifdef Rel14
+  uint8_t sib1_br_flag;
+#endif
 } LTE_eNB_DLSCH_t;
 
 #define PUSCH_x 2
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index 18df5c3b44..68f38398c7 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -145,7 +145,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_
     bzero(dlsch,sizeof(LTE_eNB_DLSCH_t));
     dlsch->Kmimo = Kmimo;
     dlsch->Mdlharq = Mdlharq;
-    dlsch->Mlimit = 4;
+    dlsch->Mlimit = 8;
     dlsch->Nsoft = Nsoft;
     
     for (layer=0; layer<4; layer++) {
@@ -597,19 +597,19 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
     beamforming_mode = 8;
   else if(dlsch->harq_processes[harq_pid]->mimo_mode == TM9_10)
     beamforming_mode = 9;
-  G = get_G(frame_parms,nb_rb,dlsch->harq_processes[harq_pid]->rb_alloc,mod_order,dlsch->harq_processes[harq_pid]->Nl,num_pdcch_symbols,frame,subframe,beamforming_mode);
+  G = get_G(frame_parms,
+	    nb_rb,
+	    dlsch->harq_processes[harq_pid]->rb_alloc,
+	    mod_order,
+	    dlsch->harq_processes[harq_pid]->Nl,
+	    num_pdcch_symbols,
+	    frame,
+	    subframe,
+	    beamforming_mode);
 
 
-  //  if (dlsch->harq_processes[harq_pid]->Ndi == 1) {  // this is a new packet
   if (dlsch->harq_processes[harq_pid]->round == 0) {  // this is a new packet
 
-    /*
-    int i;
-    printf("dlsch (tx): \n");
-    for (i=0;i<(A>>3);i++)
-      printf("%02x.",a[i]);
-    printf("\n");
-    */
     // Add 24-bit crc (polynomial A) to payload
     crc = crc24a(a,
                  A)>>8;
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 514e7894cc..80789c2e8d 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -715,43 +715,48 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   int i;
 
-  LOG_D(PHY,
-	"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", G %d, nb_rb %"PRIu16", mcs %"PRIu8", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n",
-	eNB->Mod_id, dlsch->rnti,harq_pid,
-	frame, subframe, input_buffer_length,
-	get_G(fp,
-	      dlsch_harq->nb_rb,
-	      dlsch_harq->rb_alloc,
-	      get_Qm(dlsch_harq->mcs),
-	      dlsch_harq->Nl,
-	      num_pdcch_symbols,
-	      frame,
-	      subframe,
-	      dlsch_harq->mimo_mode==TM7?7:0),
-	dlsch_harq->nb_rb,
-	dlsch_harq->mcs,
-	pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
-	dlsch_harq->rvidx,
+  if (frame < 20) {
+    LOG_I(PHY,
+	  "[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", num_pdcch_symbols %d, G %d, nb_rb %"PRIu16", rb0 %x, rb1 %x, TBS %"PRIu16", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n",
+	  eNB->Mod_id, dlsch->rnti,harq_pid,
+	  frame, subframe, input_buffer_length, num_pdcch_symbols,
+	  get_G(fp,
+		dlsch_harq->nb_rb,
+		dlsch_harq->rb_alloc,
+		dlsch_harq->Qm,
+		dlsch_harq->Nl,
+		num_pdcch_symbols,
+		frame,
+		subframe,
+		dlsch_harq->mimo_mode==TM7?7:0),
+	  dlsch_harq->nb_rb,
+	  dlsch_harq->rb_alloc[0],
+	  dlsch_harq->rb_alloc[1],
+	  dlsch_harq->TBS,
+	  pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
+	  dlsch_harq->rvidx,
 	dlsch_harq->round);
-
+    for (i=0;i<dlsch_harq->TBS>>3;i++) printf("%x.",dlsch_harq->pdu[i]);
+    printf("\n");
+  }
 #if defined(MESSAGE_CHART_GENERATOR_PHY)
   MSC_LOG_TX_MESSAGE(
 		     MSC_PHY_ENB,MSC_PHY_UE,
 		     NULL,0,
-		     "%05u:%02u PDSCH/DLSCH input size = %"PRIu16", G %d, nb_rb %"PRIu16", mcs %"PRIu8", pmi_alloc %"PRIx16", rv %"PRIu8" (round %"PRIu8")",
+		     "%05u:%02u PDSCH/DLSCH input size = %"PRIu16", G %d, nb_rb %"PRIu16", TBS %"PRIu16", pmi_alloc %"PRIx16", rv %"PRIu8" (round %"PRIu8")",
 		     frame, subframe,
 		     input_buffer_length,
 		     get_G(fp,
 			   dlsch_harq->nb_rb,
 			   dlsch_harq->rb_alloc,
-			   get_Qm(dlsch_harq->mcs),
+			   dlsch_harq->Qm,
 			   dlsch_harq->Nl,
 			   num_pdcch_symbols,
 			   frame,
 			   subframe,
 			   dlsch_harq->mimo_mode==TM7?7:0),
 		     dlsch_harq->nb_rb,
-		     dlsch_harq->mcs,
+		     dlsch_harq->TBS,
 		     pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
 		     dlsch_harq->rvidx,
 		     dlsch_harq->round);
@@ -868,7 +873,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
 		   get_G(fp,
 			 dlsch_harq->nb_rb,
 			 dlsch_harq->rb_alloc,
-			 get_Qm(dlsch_harq->mcs),
+			 dlsch_harq->Qm,
 			 dlsch_harq->Nl,
 			 num_pdcch_symbols,
 			 frame,subframe,
@@ -1003,7 +1008,7 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
   dlsch1 = eNB->dlsch[UE_id][1];
 
 #ifdef Rel14
-  if ((rel13->pdsch_payload_type == 0) && (rel13->ue_type>0)) dlsch0->harq_ids[proc->subframe_tx] = 0;
+  if ((rel13->pdsch_payload_type < 2) && (rel13->ue_type>0)) dlsch0->harq_ids[proc->subframe_tx] = 0;
 #endif
 
   harq_pid        = dlsch0->harq_ids[proc->subframe_tx];
@@ -1018,7 +1023,15 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
   else                     dlsch1_harq->pdu                    = sdu;
 
 #ifdef Rel14
+  dlsch0->sib1_br_flag=0;
   if ((rel13->pdsch_payload_type <2) && (rel13->ue_type>0)) { // this is a BR/CE UE and SIB1-BR/SI-BR
+    dlsch0->rnti    = 0xFFFF;
+    dlsch0->Kmimo   = 1;
+    dlsch0->Mdlharq = 4; 
+    dlsch0->Nsoft   = 25344;
+
+    if (rel13->pdsch_payload_type == 0) dlsch0->sib1_br_flag=1;
+
     // configure PDSCH
     switch (eNB->frame_parms.N_RB_DL) {
     case 6:
@@ -1055,7 +1068,8 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
     dlsch0_harq->round              = 0;
     dlsch0_harq->status             = ACTIVE;
     dlsch0_harq->TBS                = rel8->length<<3;
-
+    dlsch0_harq->Qm                 = rel8->modulation;
+    dlsch0_harq->codeword           = 0;
 
 
   }
@@ -1437,34 +1451,42 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0);
 
   // Now scan UE specific DLSCH
+  LTE_eNB_DLSCH_t *dlsch0,*dlsch1;
   for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++)
     {
-      if ((eNB->dlsch[(uint8_t)UE_id][0])&&
-	  (eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&&
-	  (eNB->dlsch[(uint8_t)UE_id][0]->active == 1)) {
+      dlsch0 = eNB->dlsch[(uint8_t)UE_id][0]; 
+      dlsch1 = eNB->dlsch[(uint8_t)UE_id][1]; 
+      if ((dlsch0)&&
+	  (dlsch0->rnti>0)&&
+	  (dlsch0->active == 1)) {
 
 	// get harq_pid
-	harq_pid = eNB->dlsch[(uint8_t)UE_id][0]->harq_ids[subframe];
+	harq_pid = dlsch0->harq_ids[subframe];
 	AssertFatal(harq_pid>=0,"harq_pid is negative\n");
 	// generate pdsch
 	pdsch_procedures(eNB,
 			 proc,
 			 harq_pid,
-			 eNB->dlsch[(uint8_t)UE_id][0],
-			 eNB->dlsch[(uint8_t)UE_id][1],
+			 dlsch0,
+			 dlsch1,
 			 &eNB->UE_stats[(uint32_t)UE_id],
 			 0,
-			 num_pdcch_symbols);
+#ifdef Rel14
+			 dlsch0->sib1_br_flag==0 ? num_pdcch_symbols : 3
+#else
+			 num_pdcch_symbols
+#endif
+);
 
 
       }
 
-      else if ((eNB->dlsch[(uint8_t)UE_id][0])&&
-	       (eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&&
-	       (eNB->dlsch[(uint8_t)UE_id][0]->active == 0)) {
+      else if ((dlsch0)&&
+	       (dlsch0->rnti>0)&&
+	       (dlsch0->active == 0)) {
 
 	// clear subframe TX flag since UE is not scheduled for PDSCH in this subframe (so that we don't look for PUCCH later)
-	eNB->dlsch[(uint8_t)UE_id][0]->subframe_tx[subframe]=0;
+	dlsch0->subframe_tx[subframe]=0;
       }
     }
 
@@ -1676,7 +1698,6 @@ void process_HARQ_feedback(uint8_t UE_id,
     dl_subframe = ul_ACK_subframe2_dl_subframe(fp,
 					       subframe,
 					       m);
-
     if (dlsch->subframe_tx[dl_subframe]==1) {
       if (pusch_flag == 1)
         mp++;
@@ -1696,10 +1717,9 @@ void process_HARQ_feedback(uint8_t UE_id,
       if (dl_harq_pid[m]<dlsch->Mdlharq) {
         dlsch_harq_proc = dlsch->harq_processes[dl_harq_pid[m]];
 #ifdef DEBUG_PHY_PROC
-        LOG_D(PHY,"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (mcs %d, rv %d, TBS %d)\n",eNB->Mod_id,
+        LOG_D(PHY,"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (rv %d, TBS %d)\n",eNB->Mod_id,
               dlsch->rnti,dl_harq_pid[m],dl_subframe,
               dlsch_harq_proc->status,dlsch_harq_proc->round,
-              dlsch->harq_processes[dl_harq_pid[m]]->mcs,
               dlsch->harq_processes[dl_harq_pid[m]]->rvidx,
               dlsch->harq_processes[dl_harq_pid[m]]->TBS);
 
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_bch.c b/openair2/LAYER2/MAC/eNB_scheduler_bch.c
index 2a7023e3ab..1cace89799 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_bch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_bch.c
@@ -121,16 +121,16 @@ schedule_SIB1_BR(
 	  break;
 	case 1: // repetition 8
 	  k = frameP&3;
-	  AssertFatal(N_RB_DL<=15,"SIB1-BR repetition 8 not allowed for N_RB_DL= %d\n",N_RB_DL);
+	  AssertFatal(N_RB_DL>15,"SIB1-BR repetition 8 not allowed for N_RB_DL= %d\n",N_RB_DL);
 	  if      ((foffset==0) && (subframeP!=(4+sfoffset))) continue;
 	  else if ((foffset==1) && (subframeP!=((9+sfoffset)%10))) continue;
 	  break;
 	case 2: // repetition 16
 	  k = ((10*frameP) + subframeP)&3;
-	  AssertFatal(N_RB_DL<=15,"SIB1-BR repetition 16 not allowed for N_RB_DL= %d\n",N_RB_DL);
+	  AssertFatal(N_RB_DL>15,"SIB1-BR repetition 16 not allowed for N_RB_DL= %d\n",N_RB_DL);
 	  if      ((sfoffset == 1) && ((subframeP!=0)||(subframeP!=5))) continue;
-	  else if ((sfoffset == 0) && (foffset==0) && ((subframeP!=4) || (subframeP!=9))) continue;
-	  else if ((sfoffset == 0) && (foffset==1) && ((subframeP!=0) || (subframeP!=9))) continue;
+	  else if ((sfoffset == 0) && (foffset==0) && (subframeP!=4) && (subframeP!=9)) continue;
+	  else if ((sfoffset == 0) && (foffset==1) && (subframeP!=0) && (subframeP!=9)) continue;
 	  break;
       }
     // if we get here we have to schedule SIB1_BR in this frame/subframe
@@ -170,14 +170,13 @@ schedule_SIB1_BR(
       Sj = Sj100;
       break;
     }
-
+    // Note: definition of k above and rvidx from 36.321 section 5.3.1
     rvidx = (((3*k)>>1) + (k&1))&3;
     
     i = cc->SIB1_BR_cnt & (m-1);
     
     n_NB =  Sj[((cc->physCellId % N_S_NB) + (i*N_S_NB/m))%N_S_NB];
 
-    if ((frameP%1000) < 40) LOG_D(MAC,"[eNB %d] Frame %d, subframe %d : BCCH_BR->DLSCH (SIB1) CC_id %d\n",module_idP,frameP,subframeP,CC_id);
     
     bcch_sdu_length = mac_rrc_data_req(module_idP,
                                        CC_id,
@@ -197,11 +196,11 @@ schedule_SIB1_BR(
 
     AssertFatal(bcch_sdu_length <= TBS, "length returned by RRC %d is not compatible with the TBS %d from MIB\n",bcch_sdu_length,TBS);
 
-    LOG_D(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH CC_id %d, Received %d bytes \n",module_idP,frameP,CC_id,bcch_sdu_length);
+    if ((frameP&1023) < 200) LOG_I(MAC,"[eNB %d] Frame %d Subframe %d: SIB1_BR->DLSCH CC_id %d, Received %d bytes, scheduling on NB %d (i %d,m %d,N_S_NB %d)  rvidx %d\n",module_idP,frameP,subframeP,CC_id,bcch_sdu_length,n_NB,i,m,N_S_NB,rvidx);
     
     // allocate all 6 PRBs in narrowband for SIB1_BR
     first_rb = n_NB*6;
-    vrb_map[first_rb] = 1;
+    vrb_map[first_rb]   = 1;
     vrb_map[first_rb+1] = 1;
     vrb_map[first_rb+2] = 1;
     vrb_map[first_rb+3] = 1;
@@ -341,7 +340,10 @@ schedule_SI_BR(
 		  "si_WindowLength_BR_r13 %d > %d\n",
 		  (int)cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_WindowLength_BR_r13,
 		  SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_WindowLength_BR_r13_ms200);
-		  
+
+      // check that SI frequency-hopping is disabled
+      AssertFatal(cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_HoppingConfigCommon_r13==SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_HoppingConfigCommon_r13_off,
+		  "Deactivate SI_HoppingConfigCommon_r13 in configuration file, not supported for now\n");
       long si_WindowLength_BR_r13   = si_WindowLength_BR_r13tab[cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_WindowLength_BR_r13];
 
       long si_RepetitionPattern_r13 = cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_RepetitionPattern_r13;
@@ -359,14 +361,10 @@ schedule_SI_BR(
 	// check if the SI is to be scheduled now
 	int period_in_sf              = 80<<si_Periodicity; // 2^i * 80 subframes, note: si_Periodicity is 2^i * 80ms
 	int sf_mod_period             = ((frameP*10)+subframeP)%period_in_sf;
-
+	int k                         = sf_mod_period&3;
+	// Note: definition of k and rvidx from 36.321 section 5.3.1
+	rvidx = (((3*k)>>1) + (k&1))&3;
 	
-	rvidx = (((3*sf_mod_period)>>1) + (sf_mod_period&1))&3;
-	
-	if ((frameP%1000) < 200) LOG_I(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d\n",
-				       module_idP,frameP,CC_id,si_Narrowband_r13,rvidx,
-				       sf_mod_period,si_WindowLength_BR_r13,si_RepetitionPattern_r13);	    
-
         if ((sf_mod_period < si_WindowLength_BR_r13) &&
 	    ((frameP&(((1<<si_RepetitionPattern_r13)-1)))==0)) { // this SIB is to be scheduled
 
@@ -385,18 +383,26 @@ schedule_SI_BR(
 	    AssertFatal(bcch_sdu_length <= (si_TBS_r13>>3),
 			"RRC provided bcch with length %d > %d (si_TBS_r13 %d)\n",
 			bcch_sdu_length,(int)(si_TBS_r13>>3),(int)schedulingInfoList_BR_r13->list.array[i]->si_TBS_r13);
-	    LOG_D(MAC,"[eNB %d] Frame %d : BCCH_BR %d->DLSCH CC_id %d, Received %d bytes \n",module_idP,frameP,i,CC_id,bcch_sdu_length);
-
-	    if ((frameP%1000) < 200) LOG_I(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, Received %d bytes for NB %d/rvidx %d\n",module_idP,frameP,CC_id,bcch_sdu_length,si_Narrowband_r13,rvidx);	    
 
 	    // allocate all 6 PRBs in narrowband for SIB1_BR
-	    first_rb = si_Narrowband_r13*6;
+	    first_rb = (si_Narrowband_r13-1)*6;
+
+	    // check that SIB1 didn't take this narrowband
+	    if (vrb_map[first_rb] > 0) continue;
+
 	    vrb_map[first_rb]   = 1;
 	    vrb_map[first_rb+1] = 1;
 	    vrb_map[first_rb+2] = 1;
-	    vrb_map[first_rb+3] = 1;
 	    vrb_map[first_rb+4] = 1;
 	    vrb_map[first_rb+5] = 1;
+
+	    if ((frameP%1000) < 200) LOG_D(MAC,"[eNB %d] Frame %d Subframe %d: SI_BR->DLSCH CC_id %d, Narrowband %d rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d) bcch_sdu_length %d\n",
+					   module_idP,frameP,subframeP,CC_id,si_Narrowband_r13-1,rvidx,
+					   sf_mod_period,si_WindowLength_BR_r13,si_RepetitionPattern_r13,
+					   bcch_sdu_length);	    
+
+
+
 	    
 	    dl_config_pdu                                                                  = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; 
 	    memset((void*)dl_config_pdu,0,sizeof(nfapi_dl_config_request_pdu_t));
@@ -512,7 +518,7 @@ void schedule_mib(module_id_t   module_idP,
       LOG_D(MAC,"Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)\n",
 	    frameP,subframeP,dl_req->number_pdu,mib_sdu_length);
 
-      if ((frameP&1023) < 40) LOG_I(MAC,"[eNB %d] Frame %d : MIB->BCH  CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)\n",module_idP,frameP,CC_id,mib_sdu_length,cc->mib->message.schedulingInfoSIB1_BR_r13);
+      if ((frameP&1023) < 40) LOG_D(MAC,"[eNB %d] Frame %d : MIB->BCH  CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)\n",module_idP,frameP,CC_id,mib_sdu_length,cc->mib->message.schedulingInfoSIB1_BR_r13);
 
       dl_config_pdu                                                         = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; 
       memset((void*)dl_config_pdu,0,sizeof(nfapi_dl_config_request_pdu_t));
@@ -749,7 +755,7 @@ schedule_SI(
 
 #ifdef Rel14
   schedule_SIB1_BR(module_idP,frameP,subframeP);
-  schedule_SI_BR(module_idP,frameP,subframeP);
+  //  schedule_SI_BR(module_idP,frameP,subframeP);
 #endif
 
   stop_meas(&eNB->schedule_si);
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
index f4ed3ca44d..1a2bf04f73 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -511,7 +511,8 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 
   ////Rel1310
 #if defined(ENABLE_ITTI)
-  if (configuration->schedulingInfoSIB1_BR_r13[CC_id] != 0)
+  if ((configuration->schedulingInfoSIB1_BR_r13[CC_id] != 0) &&
+      (brOption==TRUE))
   {
       sib1_1250->nonCriticalExtension = calloc(1, sizeof(SystemInformationBlockType1_v1310_IEs_t));
       memset(sib1_1250->nonCriticalExtension, 0, sizeof(SystemInformationBlockType1_v1310_IEs_t));
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index ee7d73263a..d449790a56 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -822,7 +822,12 @@ void tx_rf(RU_t *ru) {
     if (txs !=  fp->samples_per_tti) {
       LOG_E(PHY,"TX : Timeout (sent %d/%d)\n",txs, fp->samples_per_tti);
       exit_fun( "problem transmitting samples" );
-    }	
+    }
+    /*
+    if ((proc->subframe_tx == 4) && (proc->frame_tx == 10)) {
+      write_output("ru_tx_sf4.m","txs",(void*)&ru->common.txdata[0][4*fp->samples_per_tti],fp->samples_per_tti,1,1);
+      exit(-1);
+      }*/
   }
 }
 
-- 
2.26.2