Merge branch 'nr_pdsch' of https://gitlab.eurecom.fr/oai/openairinterface5g into nr_pdsch
Conflicts: openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -32,6 +32,7 @@
|
|||||||
#ifndef __NR_TRANSPORT_PROTO_UE__H__
|
#ifndef __NR_TRANSPORT_PROTO_UE__H__
|
||||||
#define __NR_TRANSPORT_PROTO_UE__H__
|
#define __NR_TRANSPORT_PROTO_UE__H__
|
||||||
#include "PHY/defs_nr_UE.h"
|
#include "PHY/defs_nr_UE.h"
|
||||||
|
#include "SCHED_NR_UE/defs.h"
|
||||||
//#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
|
//#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "nfapi_interface.h"
|
#include "nfapi_interface.h"
|
||||||
@@ -1005,6 +1006,23 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
uint8_t is_crnti,
|
uint8_t is_crnti,
|
||||||
uint8_t llr8_flag);
|
uint8_t llr8_flag);
|
||||||
|
|
||||||
|
uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
|
||||||
|
UE_nr_rxtx_proc_t *proc,
|
||||||
|
int eNB_id,
|
||||||
|
short *dlsch_llr,
|
||||||
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
|
NR_UE_DLSCH_t *dlsch,
|
||||||
|
NR_DL_UE_HARQ_t *harq_process,
|
||||||
|
uint32_t frame,
|
||||||
|
uint8_t nr_tti_rx,
|
||||||
|
uint8_t harq_pid,
|
||||||
|
uint8_t is_crnti,
|
||||||
|
uint8_t llr8_flag);
|
||||||
|
|
||||||
|
void *nr_dlsch_decoding_2thread0(void *arg);
|
||||||
|
|
||||||
|
void *nr_dlsch_decoding_2thread1(void *arg);
|
||||||
|
|
||||||
void nr_dlsch_unscrambling(int16_t* llr,
|
void nr_dlsch_unscrambling(int16_t* llr,
|
||||||
uint32_t size,
|
uint32_t size,
|
||||||
uint8_t q,
|
uint8_t q,
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ int phy_procedures_RN_UE_RX(unsigned char last_slot, unsigned char next_slot, re
|
|||||||
@param mode calib/normal mode
|
@param mode calib/normal mode
|
||||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||||
*/
|
*/
|
||||||
void phy_procedures_UE_TX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type);
|
void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type);
|
||||||
/*! \brief Scheduling for UE RX procedures in normal subframes.
|
/*! \brief Scheduling for UE RX procedures in normal subframes.
|
||||||
@param last_slot Index of last slot (0-19)
|
@param last_slot Index of last slot (0-19)
|
||||||
@param phy_vars_ue Pointer to UE variables on which to act
|
@param phy_vars_ue Pointer to UE variables on which to act
|
||||||
@@ -124,7 +124,7 @@ void phy_procedures_UE_TX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB
|
|||||||
@param phy_vars_rn pointer to RN variables
|
@param phy_vars_rn pointer to RN variables
|
||||||
*/
|
*/
|
||||||
int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,relaying_type_t r_type);
|
int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,relaying_type_t r_type);
|
||||||
int phy_procedures_slot_parallelization_UE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,relaying_type_t r_type);
|
int phy_procedures_slot_parallelization_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,relaying_type_t r_type);
|
||||||
|
|
||||||
#ifdef UE_SLOT_PARALLELISATION
|
#ifdef UE_SLOT_PARALLELISATION
|
||||||
void *UE_thread_slot1_dl_processing(void *arg);
|
void *UE_thread_slot1_dl_processing(void *arg);
|
||||||
@@ -136,7 +136,7 @@ void *UE_thread_slot1_dl_processing(void *arg);
|
|||||||
@param abstraction_flag Indicator of PHY abstraction
|
@param abstraction_flag Indicator of PHY abstraction
|
||||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||||
*/
|
*/
|
||||||
void phy_procedures_UE_S_TX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag,relaying_type_t r_type);
|
//void phy_procedures_UE_S_TX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag,relaying_type_t r_type);
|
||||||
|
|
||||||
/*! \brief Scheduling for UE RX procedures in TDD S-subframes.
|
/*! \brief Scheduling for UE RX procedures in TDD S-subframes.
|
||||||
@param phy_vars_ue Pointer to UE variables on which to act
|
@param phy_vars_ue Pointer to UE variables on which to act
|
||||||
@@ -144,7 +144,7 @@ void phy_procedures_UE_S_TX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstractio
|
|||||||
@param abstraction_flag Indicator of PHY abstraction
|
@param abstraction_flag Indicator of PHY abstraction
|
||||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||||
*/
|
*/
|
||||||
void phy_procedures_UE_S_RX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag, relaying_type_t r_type);
|
//void phy_procedures_UE_S_RX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag, relaying_type_t r_type);
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index.
|
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index.
|
||||||
@@ -154,7 +154,7 @@ void phy_procedures_UE_S_RX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstractio
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
nr_subframe_t nr_subframe_select(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe);
|
//nr_subframe_t nr_subframe_select(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe);
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index. Same as nr_subframe_select, except that it uses the Mod_id and is provided as a service to the MAC scheduler.
|
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index. Same as nr_subframe_select, except that it uses the Mod_id and is provided as a service to the MAC scheduler.
|
||||||
|
|||||||
@@ -2907,14 +2907,15 @@ void restart_phy(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t eNB_id,uint
|
|||||||
//ue->bitrate[eNB_id] = 0;
|
//ue->bitrate[eNB_id] = 0;
|
||||||
//ue->total_received_bits[eNB_id] = 0;
|
//ue->total_received_bits[eNB_id] = 0;
|
||||||
}
|
}
|
||||||
|
#endif //(0)
|
||||||
|
|
||||||
|
void nr_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t abstraction_flag)
|
||||||
void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t abstraction_flag)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
// int i;
|
// int i;
|
||||||
int pbch_tx_ant=0;
|
//int pbch_tx_ant=0;
|
||||||
uint8_t pbch_phase;
|
//uint8_t pbch_phase;
|
||||||
|
int ret = 0;
|
||||||
uint16_t frame_tx;
|
uint16_t frame_tx;
|
||||||
static uint8_t first_run = 1;
|
static uint8_t first_run = 1;
|
||||||
uint8_t pbch_trials = 0;
|
uint8_t pbch_trials = 0;
|
||||||
@@ -2926,49 +2927,36 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_IN);
|
||||||
|
|
||||||
pbch_phase=(frame_rx%4);
|
/*pbch_phase=(frame_rx%4);
|
||||||
|
|
||||||
if (pbch_phase>=4)
|
if (pbch_phase>=4)
|
||||||
pbch_phase=0;
|
pbch_phase=0;*/
|
||||||
|
|
||||||
for (pbch_trials=0; pbch_trials<4; pbch_trials++) {
|
for (pbch_trials=0; pbch_trials<4; pbch_trials++) {
|
||||||
//for (pbch_phase=0;pbch_phase<4;pbch_phase++) {
|
//for (pbch_phase=0;pbch_phase<4;pbch_phase++) {
|
||||||
//LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id);
|
//LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id);
|
||||||
if (abstraction_flag == 0) {
|
if (abstraction_flag == 0) {
|
||||||
pbch_tx_ant = rx_pbch(ue, proc,
|
ret = nr_rx_pbch(ue, proc,
|
||||||
ue->pbch_vars[eNB_id],
|
ue->pbch_vars[eNB_id],
|
||||||
&ue->frame_parms,
|
&ue->frame_parms,
|
||||||
eNB_id,
|
eNB_id,
|
||||||
ue->frame_parms.mode1_flag==1?SISO:ALAMOUTI,
|
SISO,
|
||||||
ue->high_speed_flag,
|
ue->high_speed_flag);
|
||||||
pbch_phase);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PHY_ABSTRACTION
|
if (ret==0) {
|
||||||
else {
|
|
||||||
pbch_tx_ant = rx_pbch_emul(ue,
|
|
||||||
eNB_id,
|
|
||||||
pbch_phase);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((pbch_tx_ant>0) && (pbch_tx_ant<=4)) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
pbch_phase++;
|
/*pbch_phase++;
|
||||||
|
|
||||||
if (pbch_phase>=4)
|
if (pbch_phase>=4)
|
||||||
pbch_phase=0;
|
pbch_phase=0;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ((pbch_tx_ant>0) && (pbch_tx_ant<=4)) {
|
if (ret==0) {
|
||||||
|
|
||||||
if (opt_enabled) {
|
if (opt_enabled) {
|
||||||
static uint8_t dummy[3];
|
static uint8_t dummy[3];
|
||||||
@@ -2981,17 +2969,10 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
ue->Mod_id, nr_tti_rx);
|
ue->Mod_id, nr_tti_rx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pbch_tx_ant>2) {
|
|
||||||
LOG_W(PHY,"[openair][SCHED][SYNCH] PBCH decoding: pbch_tx_ant>2 not supported\n");
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0;
|
ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0;
|
||||||
frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8);
|
/*frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8);
|
||||||
frame_tx += ((int)(ue->pbch_vars[eNB_id]->decoded_output[1]&0xfc));
|
frame_tx += ((int)(ue->pbch_vars[eNB_id]->decoded_output[1]&0xfc));
|
||||||
frame_tx += pbch_phase;
|
frame_tx += pbch_phase;*/
|
||||||
|
|
||||||
//if (ue->mac_enabled==1) {
|
//if (ue->mac_enabled==1) {
|
||||||
//mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id,first_run);
|
//mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id,first_run);
|
||||||
@@ -3012,13 +2993,11 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
ue->proc.proc_rxtx[th_id].frame_rx = proc->frame_rx;
|
ue->proc.proc_rxtx[th_id].frame_rx = proc->frame_rx;
|
||||||
ue->proc.proc_rxtx[th_id].frame_tx = proc->frame_tx;
|
ue->proc.proc_rxtx[th_id].frame_tx = proc->frame_tx;
|
||||||
|
|
||||||
printf("[UE %d] frame %d, nr_tti_rx %d: Adjusting frame counter (PBCH ant_tx=%d, frame_tx=%d, phase %d, rx_offset %d) => new frame %d\n",
|
printf("[UE %d] frame %d, nr_tti_rx %d: Adjusting frame counter (PBCH frame_tx=%d, rx_offset %d) => new frame %d\n",
|
||||||
ue->Mod_id,
|
ue->Mod_id,
|
||||||
ue->proc.proc_rxtx[th_id].frame_rx,
|
ue->proc.proc_rxtx[th_id].frame_rx,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
pbch_tx_ant,
|
|
||||||
frame_tx,
|
frame_tx,
|
||||||
pbch_phase,
|
|
||||||
ue->rx_offset,
|
ue->rx_offset,
|
||||||
proc->frame_rx);
|
proc->frame_rx);
|
||||||
}
|
}
|
||||||
@@ -3028,14 +3007,12 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
|
|
||||||
} else if (((frame_tx & 0x03FF) != (proc->frame_rx & 0x03FF))) {
|
} else if (((frame_tx & 0x03FF) != (proc->frame_rx & 0x03FF))) {
|
||||||
//(pbch_tx_ant != ue->frame_parms.nb_antennas_tx)) {
|
//(pbch_tx_ant != ue->frame_parms.nb_antennas_tx)) {
|
||||||
LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d: Re-adjusting frame counter (PBCH ant_tx=%d, frame_rx=%d, frame%%1024=%d, phase %d).\n",
|
LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d: Re-adjusting frame counter (PBCH frame_rx=%d, frame%%1024=%d).\n",
|
||||||
ue->Mod_id,
|
ue->Mod_id,
|
||||||
proc->frame_rx,
|
proc->frame_rx,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
pbch_tx_ant,
|
|
||||||
frame_tx,
|
frame_tx,
|
||||||
frame_rx & 0x03FF,
|
frame_rx & 0x03FF);
|
||||||
pbch_phase);
|
|
||||||
|
|
||||||
proc->frame_rx = (proc->frame_rx & 0xFFFFFC00) | (frame_tx & 0x000003FF);
|
proc->frame_rx = (proc->frame_rx & 0xFFFFFC00) | (frame_tx & 0x000003FF);
|
||||||
proc->frame_tx = proc->frame_rx;
|
proc->frame_tx = proc->frame_rx;
|
||||||
@@ -3050,16 +3027,12 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_PHY_PROC
|
#ifdef DEBUG_PHY_PROC
|
||||||
LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d, Received PBCH (MIB): mode1_flag %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n",
|
LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d, Received PBCH (MIB): frame_tx %d. N_RB_DL %d\n",
|
||||||
ue->Mod_id,
|
ue->Mod_id,
|
||||||
frame_rx,
|
frame_rx,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
ue->frame_parms.mode1_flag,
|
|
||||||
pbch_tx_ant,
|
|
||||||
frame_tx,
|
frame_tx,
|
||||||
ue->frame_parms.N_RB_DL,
|
ue->frame_parms.N_RB_DL);
|
||||||
ue->frame_parms.phich_config_common.phich_duration,
|
|
||||||
ue->frame_parms.phich_config_common.phich_resource);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -3110,7 +3083,6 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif //(0)
|
|
||||||
|
|
||||||
unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb)
|
unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb)
|
||||||
{
|
{
|
||||||
@@ -3529,7 +3501,7 @@ void ue_pmch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc,int eNB_id,i
|
|||||||
ue->pdsch_vars_MCH[0]->llr[0],0,nr_tti_rx<<1);
|
ue->pdsch_vars_MCH[0]->llr[0],0,nr_tti_rx<<1);
|
||||||
|
|
||||||
#ifdef UE_DLSCH_PARALLELISATION
|
#ifdef UE_DLSCH_PARALLELISATION
|
||||||
ret = dlsch_decoding_mthread(ue,proc, eNB_id,
|
ret = nr_dlsch_decoding_mthread(ue,proc, eNB_id,
|
||||||
ue->pdsch_vars_MCH[0]->llr[0],
|
ue->pdsch_vars_MCH[0]->llr[0],
|
||||||
&ue->frame_parms,
|
&ue->frame_parms,
|
||||||
ue->dlsch_MCH[0],
|
ue->dlsch_MCH[0],
|
||||||
@@ -3539,7 +3511,7 @@ void ue_pmch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc,int eNB_id,i
|
|||||||
0,
|
0,
|
||||||
0,1);
|
0,1);
|
||||||
#else
|
#else
|
||||||
ret = dlsch_decoding(ue,
|
ret = nr_dlsch_decoding(ue,
|
||||||
ue->pdsch_vars_MCH[0]->llr[0],
|
ue->pdsch_vars_MCH[0]->llr[0],
|
||||||
&ue->frame_parms,
|
&ue->frame_parms,
|
||||||
ue->dlsch_MCH[0],
|
ue->dlsch_MCH[0],
|
||||||
@@ -3963,7 +3935,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UE_DLSCH_PARALLELISATION
|
#ifdef UE_DLSCH_PARALLELISATION
|
||||||
ret = dlsch_decoding_mthread(ue,proc,eNB_id,
|
ret = nr_dlsch_decoding_mthread(ue,proc,eNB_id,
|
||||||
pdsch_vars->llr[0],
|
pdsch_vars->llr[0],
|
||||||
&ue->frame_parms,
|
&ue->frame_parms,
|
||||||
dlsch0,
|
dlsch0,
|
||||||
@@ -4039,7 +4011,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UE_DLSCH_PARALLELISATION
|
#ifdef UE_DLSCH_PARALLELISATION
|
||||||
ret1 = dlsch_decoding_mthread(ue,proc, eNB_id,
|
ret1 = nr_dlsch_decoding_mthread(ue,proc, eNB_id,
|
||||||
pdsch_vars->llr[1],
|
pdsch_vars->llr[1],
|
||||||
&ue->frame_parms,
|
&ue->frame_parms,
|
||||||
dlsch1,
|
dlsch1,
|
||||||
@@ -4551,7 +4523,7 @@ void *UE_thread_slot1_dl_processing(void *arg) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UE_SLOT_PARALLELISATION
|
#ifdef UE_SLOT_PARALLELISATION
|
||||||
int phy_procedures_slot_parallelization_UE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,
|
int phy_procedures_slot_parallelization_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,
|
||||||
uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,
|
uint8_t abstraction_flag,uint8_t do_pdcch_flag,runmode_t mode,
|
||||||
relaying_type_t r_type) {
|
relaying_type_t r_type) {
|
||||||
|
|
||||||
@@ -5408,10 +5380,19 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
|
|
||||||
//LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
//LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
||||||
|
|
||||||
/*if ( (nr_tti_rx == 0) && (ue->decode_MIB == 1))
|
if ( (nr_tti_rx == 0) && (ue->decode_MIB == 1))
|
||||||
{
|
{
|
||||||
ue_pbch_procedures(eNB_id,ue,proc,abstraction_flag);
|
for (int i=0; i<3; i++)
|
||||||
}*/
|
nr_slot_fep(ue,
|
||||||
|
(5+i), //mu=1 case B
|
||||||
|
nr_tti_rx,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
NR_PBCH_EST);
|
||||||
|
|
||||||
|
nr_ue_pbch_procedures(eNB_id,ue,proc,abstraction_flag);
|
||||||
|
}
|
||||||
|
|
||||||
// do procedures for C-RNTI
|
// do procedures for C-RNTI
|
||||||
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
||||||
|
|||||||
@@ -682,7 +682,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
|||||||
//clean previous FAPI MESSAGE
|
//clean previous FAPI MESSAGE
|
||||||
|
|
||||||
#ifdef UE_SLOT_PARALLELISATION
|
#ifdef UE_SLOT_PARALLELISATION
|
||||||
phy_procedures_slot_parallelization_UE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL );
|
phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL );
|
||||||
#else
|
#else
|
||||||
phy_procedures_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay);
|
phy_procedures_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay);
|
||||||
//printf(">>> nr_ue_pdcch_procedures ended\n");
|
//printf(">>> nr_ue_pdcch_procedures ended\n");
|
||||||
@@ -1189,11 +1189,11 @@ void init_UE_threads(PHY_VARS_NR_UE *UE) {
|
|||||||
#ifdef UE_DLSCH_PARALLELISATION
|
#ifdef UE_DLSCH_PARALLELISATION
|
||||||
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_dlsch_td,NULL);
|
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_dlsch_td,NULL);
|
||||||
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_dlsch_td,NULL);
|
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_dlsch_td,NULL);
|
||||||
pthread_create(&UE->proc.proc_rxtx[i].pthread_dlsch_td,NULL,dlsch_decoding_2thread0, rtd);
|
pthread_create(&UE->proc.proc_rxtx[i].pthread_dlsch_td,NULL,nr_dlsch_decoding_2thread0, rtd);
|
||||||
//thread 2
|
//thread 2
|
||||||
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_dlsch_td1,NULL);
|
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_dlsch_td1,NULL);
|
||||||
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_dlsch_td1,NULL);
|
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_dlsch_td1,NULL);
|
||||||
pthread_create(&UE->proc.proc_rxtx[i].pthread_dlsch_td1,NULL,dlsch_decoding_2thread1, rtd);
|
pthread_create(&UE->proc.proc_rxtx[i].pthread_dlsch_td1,NULL,nr_dlsch_decoding_2thread1, rtd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UE_SLOT_PARALLELISATION
|
#ifdef UE_SLOT_PARALLELISATION
|
||||||
|
|||||||
Reference in New Issue
Block a user