From b42d83beadfdd07774754d437602417725c70ea7 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Sun, 18 Feb 2018 12:19:31 +0100
Subject: [PATCH] memory allocation bugs for 2x2 transmission in dlsim

---
 openair1/PHY/INIT/defs.h            | 3 ++-
 openair1/PHY/INIT/lte_param_init.c  | 9 +++++----
 openair1/SIMULATION/LTE_PHY/dlsim.c | 6 ++++--
 openair1/SIMULATION/LTE_PHY/ulsim.c | 1 +
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/openair1/PHY/INIT/defs.h b/openair1/PHY/INIT/defs.h
index bb7fe72114..2c92503133 100644
--- a/openair1/PHY/INIT/defs.h
+++ b/openair1/PHY/INIT/defs.h
@@ -335,7 +335,8 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
 		    RU_t **rup,
 		    unsigned char N_tx_port_eNB, 
                     unsigned char N_tx_phy,
-		    unsigned char N_rx,
+		    unsigned char N_rx_ru,
+		    unsigned char N_rx_ue,
 		    unsigned char transmission_mode,
 		    uint8_t extended_prefix_flag,
 		    frame_t frame_type, 
diff --git a/openair1/PHY/INIT/lte_param_init.c b/openair1/PHY/INIT/lte_param_init.c
index d9b7b12249..c09652db93 100644
--- a/openair1/PHY/INIT/lte_param_init.c
+++ b/openair1/PHY/INIT/lte_param_init.c
@@ -39,7 +39,8 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
 		    RU_t **rup,
 		    unsigned char N_tx_port_eNB, 
                     unsigned char N_tx_phy,
-		    unsigned char N_rx,
+		    unsigned char N_rx_ru,
+                    unsigned char N_rx_ue,
 		    unsigned char transmission_mode,
 		    uint8_t extended_prefix_flag,
 		    frame_t frame_type, 
@@ -90,7 +91,7 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
   frame_parms->Nid_cell           = Nid_cell;
   frame_parms->nushift            = Nid_cell%6;
   frame_parms->nb_antennas_tx     = N_tx_phy;
-  frame_parms->nb_antennas_rx     = N_rx;
+  frame_parms->nb_antennas_rx     = N_rx_ru;
   frame_parms->nb_antenna_ports_eNB = N_tx_port_eNB;
   frame_parms->phich_config_common.phich_resource         = oneSixth;
   frame_parms->phich_config_common.phich_duration         = normal;
@@ -109,11 +110,11 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
 
   UE->is_secondary_ue = 0;
   UE->frame_parms = *frame_parms;
-  UE->frame_parms.nb_antennas_rx=1;
+  UE->frame_parms.nb_antennas_rx=N_rx_ue;
   //  eNB->frame_parms = *frame_parms;
   ru->frame_parms = *frame_parms;
   ru->nb_tx = N_tx_phy;
-  ru->nb_rx = N_rx;
+  ru->nb_rx = N_rx_ru;
   ru->if_south = LOCAL_RF;
 
   eNB->configured=1;
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index 57fa787142..2de1698450 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -242,7 +242,7 @@ void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR,
   sigma2 = pow(10,sigma2_dB/10);
 
   for (i=0; i<2*UE->frame_parms.samples_per_tti; i++) {
-    for (aa=0; aa<ru->frame_parms.nb_antennas_rx; aa++) {
+    for (aa=0; aa<UE->frame_parms.nb_antennas_rx; aa++) {
       //printf("s_re[0][%d]=> %f , r_re[0][%d]=> %f\n",i,s_re[aa][i],i,r_re[aa][i]);
       ((short*) UE->common_vars.rxdata[aa])[(2*subframe*UE->frame_parms.samples_per_tti)+2*i] =
 	(short) (r_re[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
@@ -1099,7 +1099,8 @@ int main(int argc, char **argv)
   lte_param_init(&eNB,&UE,&ru,
 		 n_tx_port,
 		 n_tx_phy,
-		 n_rx,
+		 1,
+                 n_rx,
 		 transmission_mode,
 		 extended_prefix_flag,
 		 frame_type,
@@ -1304,6 +1305,7 @@ int main(int argc, char **argv)
 
   UE->pdcch_vars[UE->current_thread_id[subframe]][0]->crnti = n_rnti;
 
+  printf("Allocating %dx%d eNB->UE channel descriptor\n",eNB->frame_parms.nb_antennas_tx,UE->frame_parms.nb_antennas_rx);
   eNB2UE[0] = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx,
                                    UE->frame_parms.nb_antennas_rx,
                                    channel_model,
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 4e31016b6b..8381553bb7 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -720,6 +720,7 @@ int main(int argc, char **argv)
 		 1,
 		 1,
 		 n_rx,
+                 1,
 		 1,
 		 extended_prefix_flag,
 		 frame_type,
-- 
2.26.2