From e84a00174babe2095b9e6491373befb7f1718d1c Mon Sep 17 00:00:00 2001
From: Florian Kaltenberger <florian.kaltenberger@eurecom.fr>
Date: Sat, 21 Jan 2017 16:20:10 +0100
Subject: [PATCH] choosing the right version of the unresolved merge conflict
 in beamforming.c changed the memory allocation of txdataF and beam_weigths

---
 openair1/PHY/INIT/lte_init.c          | 52 ++++++++++++++-------------
 openair1/PHY/MODULATION/beamforming.c | 32 +----------------
 targets/RT/USER/lte-enb.c             |  1 -
 3 files changed, 29 insertions(+), 56 deletions(-)

diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c
index bc74c3610e5..710527ab3f1 100644
--- a/openair1/PHY/INIT/lte_init.c
+++ b/openair1/PHY/INIT/lte_init.c
@@ -1306,13 +1306,15 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
       common_vars->txdataF_BF[eNB_id] = (int32_t **)malloc16(fp->nb_antennas_tx*sizeof(int32_t*));
 
       if (eNB->node_function != NGFI_RRU_IF5) {
-	for (i=0; i<((eNB->do_precoding==0)?fp->nb_antennas_tx:14); i++) {
-	  common_vars->txdataF[eNB_id][i] = (int32_t*)malloc16_clear(fp->ofdm_symbol_size*fp->symbols_per_tti*10*sizeof(int32_t) );
+	for (i=0; i<NB_ANTENNA_PORTS_ENB; i++) {
+	  if (i<fp->nb_antenna_ports_eNB || i==5) {
+	    common_vars->txdataF[eNB_id][i] = (int32_t*)malloc16_clear(fp->ofdm_symbol_size*fp->symbols_per_tti*10*sizeof(int32_t) );
 #ifdef DEBUG_PHY
-	  printf("[openair][LTE_PHY][INIT] common_vars->txdataF[%d][%d] = %p (%lu bytes)\n",
-	      eNB_id,i,common_vars->txdataF[eNB_id][i],
-	      fp->ofdm_symbol_size*fp->symbols_per_tti*10*sizeof(int32_t));
+	    printf("[openair][LTE_PHY][INIT] common_vars->txdataF[%d][%d] = %p (%lu bytes)\n",
+		   eNB_id,i,common_vars->txdataF[eNB_id][i],
+		   fp->ofdm_symbol_size*fp->symbols_per_tti*10*sizeof(int32_t));
 #endif
+	  }
 	}
       }
       for (i=0; i<fp->nb_antennas_tx; i++) {
@@ -1328,27 +1330,29 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
 #endif
       }
       
-      for (i=0; i<NB_ANTENNA_PORTS_ENB; i++) { 
-        common_vars->beam_weights[eNB_id][i] = (int32_t **)malloc16_clear(fp->nb_antennas_tx*sizeof(int32_t*));
-        for (j=0; j<fp->nb_antennas_tx; j++) {
-          common_vars->beam_weights[eNB_id][i][j] = (int32_t *)malloc16_clear(fp->ofdm_symbol_size*sizeof(int32_t));
-	  // antenna ports 0-3 are mapped on antennas 0-3
-	  // antenna port 4 is mapped on antenna 0
-	  // antenna ports 5-14 are mapped on all antennas 
-	  if (((i<4) && (i==j)) || ((i==4) && (j==0))) {
-	    for (re=0; re<fp->ofdm_symbol_size; re++) 
-	      common_vars->beam_weights[eNB_id][i][j][re] = 0x00007fff; 
-	  }
-	  else if (i>4) {
-	    for (re=0; re<fp->ofdm_symbol_size; re++) 
-	      common_vars->beam_weights[eNB_id][i][j][re] = 0x00007fff/fp->nb_antennas_tx; 
-	  }  
+      for (i=0; i<NB_ANTENNA_PORTS_ENB; i++) {
+	if (i<fp->nb_antenna_ports_eNB || i==5) {
+	  common_vars->beam_weights[eNB_id][i] = (int32_t **)malloc16_clear(fp->nb_antennas_tx*sizeof(int32_t*));
+	  for (j=0; j<fp->nb_antennas_tx; j++) {
+	    common_vars->beam_weights[eNB_id][i][j] = (int32_t *)malloc16_clear(fp->ofdm_symbol_size*sizeof(int32_t));
+	    // antenna ports 0-3 are mapped on antennas 0-3
+	    // antenna port 4 is mapped on antenna 0
+	    // antenna ports 5-14 are mapped on all antennas 
+	    if (((i<4) && (i==j)) || ((i==4) && (j==0))) {
+	      for (re=0; re<fp->ofdm_symbol_size; re++) 
+		common_vars->beam_weights[eNB_id][i][j][re] = 0x00007fff; 
+	    }
+	    else if (i>4) {
+	      for (re=0; re<fp->ofdm_symbol_size; re++) 
+		common_vars->beam_weights[eNB_id][i][j][re] = 0x00007fff/fp->nb_antennas_tx; 
+	    }  
 #ifdef DEBUG_PHY
-	  msg("[openair][LTE_PHY][INIT] lte_common_vars->beam_weights[%d][%d][%d] = %p (%d bytes)\n",
-	      eNB_id,i,j,common_vars->beam_weights[eNB_id][i][j],
-              fp->ofdm_symbol_size*sizeof(int32_t)); 
+	    msg("[openair][LTE_PHY][INIT] lte_common_vars->beam_weights[%d][%d][%d] = %p (%d bytes)\n",
+		eNB_id,i,j,common_vars->beam_weights[eNB_id][i][j],
+		fp->ofdm_symbol_size*sizeof(int32_t)); 
 #endif
-        }
+	  }
+	}
       }
 
       // RX vars
diff --git a/openair1/PHY/MODULATION/beamforming.c b/openair1/PHY/MODULATION/beamforming.c
index 038517f692f..88ac12b0a71 100644
--- a/openair1/PHY/MODULATION/beamforming.c
+++ b/openair1/PHY/MODULATION/beamforming.c
@@ -63,35 +63,8 @@ int beam_precoding(int32_t **txdataF,
   // clear txdata_BF[aa][re] for each call of ue_spec_beamforming
   memset(txdataF_BF[aa],0,sizeof(int32_t)*(frame_parms->ofdm_symbol_size));
 
-#if 0
-/* TODO: to be resolved */
-<<<<<<< HEAD
-  for (p=0; p<14; p++) {
-    //if (p==0 || p==1 || p==5 || p>7)
-    //  mult_cpx_conj_vector((int16_t*)txdataF[p], (int16_t*)beam_weights[p][aa], (int16_t*)txdataF_BF[aa], frame_parms->ofdm_symbol_size, 15);
-    if (txdataF[p]) {//[slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re]!=0) {
-
-      for (re=0;re<frame_parms->ofdm_symbol_size;re++) {
-        ((int16_t*)&txdataF_BF[aa][re])[0] += (int16_t)((((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[0]*((int16_t*)&beam_weights[p][aa][re])[0])>>15);
-        ((int16_t*)&txdataF_BF[aa][re])[0] -= (int16_t)((((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[1]*((int16_t*)&beam_weights[p][aa][re])[1])>>15);
-        ((int16_t*)&txdataF_BF[aa][re])[1] += (int16_t)((((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[0]*((int16_t*)&beam_weights[p][aa][re])[1])>>15);
-        ((int16_t*)&txdataF_BF[aa][re])[1] += (int16_t)((((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[1]*((int16_t*)&beam_weights[p][aa][re])[0])>>15);
-	
-	/*
-          printf("beamforming.c:txdataF[%d][%d]=%d+j%d, beam_weights[%d][%d][%d]=%d+j%d,txdata_BF[%d][%d]=%d+j%d\n",
-	  p,slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re,
-	  ((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[0],
-	  ((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size+re])[1],
-	  p,aa,re,
-	  ((int16_t*)&beam_weights[p][aa][re])[0],((int16_t*)&beam_weights[p][aa][re])[1],
-	  aa,re,
-	  ((int16_t*)&txdataF_BF[aa][re])[0],
-	  ((int16_t*)&txdataF_BF[aa][re])[1]); 
-	*/
-      } 
-=======
   for (p=0; p<NB_ANTENNA_PORTS_ENB; p++) {
-    if (p==0 || p==1 || p==5) {
+    if (p<frame_parms->nb_antenna_ports_eNB || p==5) {
       multadd_cpx_vector((int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size],(int16_t*)beam_weights[p][aa], (int16_t*)txdataF_BF[aa], 0, frame_parms->ofdm_symbol_size, 15);
       //mult_cpx_conj_vector((int16_t*)beam_weights[p][aa], (int16_t*)&txdataF[p][slot_offset_F+symbol*frame_parms->ofdm_symbol_size], (int16_t*)txdataF_BF[aa], frame_parms->ofdm_symbol_size, 15, 1);
 
@@ -114,10 +87,7 @@ int beam_precoding(int32_t **txdataF,
                    ((int16_t*)&txdataF_BF[aa][re])[1]);
         }
       }*/
->>>>>>> enhancement-192-beamforming
-
     }
   }
-#endif
   return 0;
 }
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 02a64172e30..0605dff2ab5 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -2002,7 +2002,6 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
 	eNB->do_prach             = NULL;
 	eNB->do_precoding         = 0;
 	eNB->fep                  = eNB_fep_rru_if5;
-	eNB->do_precoding         = 0;
 	eNB->td                   = NULL;
 	eNB->te                   = NULL;
 	eNB->proc_uespec_rx       = NULL;
-- 
GitLab