Commit c6f1c2ce authored by Xiwen JIANG's avatar Xiwen JIANG

undo UE spec pilot allocation bug fix and undo TDD workaround

parent 04029ab0
...@@ -400,7 +400,7 @@ void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *eNB) ...@@ -400,7 +400,7 @@ void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *eNB)
physicalConfigDedicated = eNB->physicalConfigDedicated[UE_id]; physicalConfigDedicated = eNB->physicalConfigDedicated[UE_id];
if (physicalConfigDedicated != NULL) { if (physicalConfigDedicated != NULL) {
LOG_I(PHY,"[eNB %d] Frame %d: Sent physicalConfigDedicated=%p for UE %d\n",eNB->Mod_id,physicalConfigDedicated,UE_id); LOG_I(PHY,"[eNB %d] Frame %d: Sent physicalConfigDedicated=%p for UE %d\n",eNB->Mod_id,eNB->proc.proc_rxtx[0].frame_tx,physicalConfigDedicated,UE_id);
LOG_D(PHY,"------------------------------------------------------------------------\n"); LOG_D(PHY,"------------------------------------------------------------------------\n");
if (physicalConfigDedicated->pdsch_ConfigDedicated) { if (physicalConfigDedicated->pdsch_ConfigDedicated) {
...@@ -1362,7 +1362,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1362,7 +1362,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
if (eNB->node_function != NGFI_RCC_IF4p5) { if (eNB->node_function != NGFI_RCC_IF4p5) {
common_vars->rxdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); common_vars->rxdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
common_vars->rxdata_7_5kHz[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); common_vars->rxdata_7_5kHz[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
common_vars->rxdata_1_4fs[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); //TDD workaround for EXMIMO2 card
} }
common_vars->rxdataF[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); common_vars->rxdataF[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
...@@ -1370,11 +1369,9 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1370,11 +1369,9 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
if (eNB->node_function != NGFI_RCC_IF4p5) { if (eNB->node_function != NGFI_RCC_IF4p5) {
common_vars->rxdata[eNB_id][i] = (int32_t*)malloc16_clear( fp->samples_per_tti*10*sizeof(int32_t) ); common_vars->rxdata[eNB_id][i] = (int32_t*)malloc16_clear( fp->samples_per_tti*10*sizeof(int32_t) );
common_vars->rxdata_7_5kHz[eNB_id][i] = (int32_t*)malloc16_clear( fp->samples_per_tti*sizeof(int32_t) ); common_vars->rxdata_7_5kHz[eNB_id][i] = (int32_t*)malloc16_clear( fp->samples_per_tti*sizeof(int32_t) );
common_vars->rxdata_1_4fs[eNB_id][i] = (int32_t*)malloc16_clear( fp->samples_per_tti*sizeof(int32_t) );
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
printf("[openair][LTE_PHY][INIT] common_vars->rxdata[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata[eNB_id][i]); printf("[openair][LTE_PHY][INIT] common_vars->rxdata[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata[eNB_id][i]);
printf("[openair][LTE_PHY][INIT] common_vars->rxdata_7_5kHz[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata_7_5kHz[eNB_id][i]); printf("[openair][LTE_PHY][INIT] common_vars->rxdata_7_5kHz[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata_7_5kHz[eNB_id][i]);
printf("[openair][LTE_PHY][INIT] common_vars->rxdata_1_4fs[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata_1_4fs[eNB_id][i]);
#endif #endif
} }
common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(sizeof(int32_t)*(fp->ofdm_symbol_size*fp->symbols_per_tti) ); common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(sizeof(int32_t)*(fp->ofdm_symbol_size*fp->symbols_per_tti) );
......
...@@ -2161,6 +2161,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB, ...@@ -2161,6 +2161,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
P1_SHIFT, P1_SHIFT,
P2_SHIFT); P2_SHIFT);
// Problem observed in subframe 0 in rodez and schwaz FSQ TM7 software, since for PBCH, the UE spec pilot index
// should increase as well; To check again
if ((mimo_mode == TM7) && (lprime>=0)) if ((mimo_mode == TM7) && (lprime>=0))
mprime += 3 + frame_parms->Ncp; mprime += 3 + frame_parms->Ncp;
......
...@@ -38,7 +38,7 @@ short conjugate14_2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1} ; ...@@ -38,7 +38,7 @@ short conjugate14_2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1} ;
void remove_1_4_fs(PHY_VARS_eNB *eNB,uint8_t slot) void remove_1_4_fs(PHY_VARS_eNB *eNB,uint8_t slot)
{ {
int32_t **rxdata=eNB->common_vars.rxdata[0]; int32_t **rxdata=eNB->common_vars.rxdata[0];
int32_t **rxdata_1_4fs=eNB->common_vars.rxdata_1_4fs[0]; int32_t **rxdata_1_4fs=eNB->common_vars.rxdata_7_5kHz[0];
uint16_t len; uint16_t len;
uint32_t *fs1_4ptr; uint32_t *fs1_4ptr;
#if defined(__x86_64__) || defined(__i386__) #if defined(__x86_64__) || defined(__i386__)
......
...@@ -1352,7 +1352,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1352,7 +1352,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
UE_id = i; UE_id = i;
if (UE_id<0) { // should not happen, log an error and exit, this is a fatal error if (UE_id<0) { // should not happen, log an error and exit, this is a fatal error
LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown UE_id for rnti %"PRIx16"\n",eNB->Mod_id,frame,dci_alloc->rnti); LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown_Access UE_id for rnti %"PRIx16"\n",eNB->Mod_id,frame,dci_alloc->rnti);
mac_xface->macphy_exit("FATAL\n"); mac_xface->macphy_exit("FATAL\n");
} }
generate_eNB_ulsch_params(eNB,proc,dci_alloc,UE_id); generate_eNB_ulsch_params(eNB,proc,dci_alloc,UE_id);
...@@ -1432,11 +1432,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1432,11 +1432,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
#endif #endif
LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA),Msg3 frame %"PRIu32", Msg3 subframe %"PRIu8"\n", LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA, Msg3)\n",
eNB->Mod_id, eNB->Mod_id,
frame, subframe, frame, subframe);
eNB->ulsch[(uint32_t)UE_id]->Msg3_frame, //eNB->ulsch[(uint32_t)UE_id]->Msg3_frame,
eNB->ulsch[(uint32_t)UE_id]->Msg3_subframe); //eNB->ulsch[(uint32_t)UE_id]->Msg3_subframe);
pdsch_procedures(eNB,proc,eNB->dlsch_ra,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,1,num_pdcch_symbols); pdsch_procedures(eNB,proc,eNB->dlsch_ra,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,1,num_pdcch_symbols);
...@@ -2583,9 +2583,6 @@ void fep0(PHY_VARS_eNB *eNB,int slot) { ...@@ -2583,9 +2583,6 @@ void fep0(PHY_VARS_eNB *eNB,int slot) {
int l; int l;
// printf("fep0: slot %d\n",slot); // printf("fep0: slot %d\n",slot);
if ((eNB->rfdevice.type == EXMIMO_DEV) && (fp->frame_type == TDD))
remove_1_4_fs(eNB,(slot&1)+(proc->subframe_rx<<1)); // TDD workaround for EXMIMO2 card
else
remove_7_5_kHz(eNB,(slot&1)+(proc->subframe_rx<<1)); remove_7_5_kHz(eNB,(slot&1)+(proc->subframe_rx<<1));
for (l=0; l<fp->symbols_per_tti/2; l++) { for (l=0; l<fp->symbols_per_tti/2; l++) {
slot_fep_ul(fp, slot_fep_ul(fp,
...@@ -2727,13 +2724,9 @@ void eNB_fep_full(PHY_VARS_eNB *eNB) { ...@@ -2727,13 +2724,9 @@ void eNB_fep_full(PHY_VARS_eNB *eNB) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP,1); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP,1);
start_meas(&eNB->ofdm_demod_stats); start_meas(&eNB->ofdm_demod_stats);
if ((eNB->rfdevice.type == EXMIMO_DEV) && (fp->frame_type == TDD)) {
remove_1_4_fs(eNB,proc->subframe_rx<<1); // TDD workaround for EXMIMO2 card
remove_1_4_fs(eNB,1+(proc->subframe_rx<<1));
} else {
remove_7_5_kHz(eNB,proc->subframe_rx<<1); remove_7_5_kHz(eNB,proc->subframe_rx<<1);
remove_7_5_kHz(eNB,1+(proc->subframe_rx<<1)); remove_7_5_kHz(eNB,1+(proc->subframe_rx<<1));
}
for (l=0; l<fp->symbols_per_tti/2; l++) { for (l=0; l<fp->symbols_per_tti/2; l++) {
slot_fep_ul(fp, slot_fep_ul(fp,
&eNB->common_vars, &eNB->common_vars,
...@@ -2997,7 +2990,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const ...@@ -2997,7 +2990,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
// TDD reciprocity DL CSIT estimation based on calibraton // TDD reciprocity DL CSIT estimation based on calibraton
start_meas(&eNB->dl_ch_calib_stats); start_meas(&eNB->dl_ch_calib_stats);
if ((fp->frame_type == TDD) && /* if ((fp->frame_type == TDD) &&
(((fp->tdd_config == 0) && ((subframe == 4) || (subframe == 9))) || (((fp->tdd_config == 0) && ((subframe == 4) || (subframe == 9))) ||
((fp->tdd_config == 1) && ((subframe == 3) || (subframe == 8))) || ((fp->tdd_config == 1) && ((subframe == 3) || (subframe == 8))) ||
((fp->tdd_config == 2) && ((subframe == 2) || (subframe == 7))) || ((fp->tdd_config == 2) && ((subframe == 2) || (subframe == 7))) ||
...@@ -3020,7 +3013,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const ...@@ -3020,7 +3013,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
MRT, MRT,
fp); fp);
} } */
stop_meas(&eNB->dl_ch_calib_stats); stop_meas(&eNB->dl_ch_calib_stats);
start_meas(&eNB->ulsch_decoding_stats); start_meas(&eNB->ulsch_decoding_stats);
......
...@@ -825,19 +825,31 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag) ...@@ -825,19 +825,31 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
if (openair0_cfg[card].sample_rate==30.72e6) { if (openair0_cfg[card].sample_rate==30.72e6) {
resampling_factor = 0; resampling_factor = 0;
if (openair0_cfg[card].duplex_mode==duplex_mode_TDD) {
printf("Warning: TDD workaround may not work for bw 20");
}
rx_filter = RXLPF10; rx_filter = RXLPF10;
tx_filter = TXLPF10; tx_filter = TXLPF10;
} else if (openair0_cfg[card].sample_rate==15.36e6) { } else if (openair0_cfg[card].sample_rate==15.36e6) {
resampling_factor = 1; resampling_factor = 1;
if (openair0_cfg[card].duplex_mode==duplex_mode_TDD)
rx_filter = RXLPF10;
else
rx_filter = RXLPF5; rx_filter = RXLPF5;
tx_filter = TXLPF5; tx_filter = TXLPF5;
} else if (openair0_cfg[card].sample_rate==7.68e6) { } else if (openair0_cfg[card].sample_rate==7.68e6) {
resampling_factor = 2; resampling_factor = 2;
//if (openair0_cfg[card].duplex_mode==duplex_mode_TDD) // TDD workaround for EXMIMO
// rx_filter = RXLPF5;
//else
rx_filter = RXLPF25; rx_filter = RXLPF25;
tx_filter = TXLPF25; tx_filter = TXLPF25;
} else { } else {
printf("Sampling rate not supported, using default 7.68MHz"); printf("Sampling rate not supported, using default 7.68MHz");
resampling_factor = 2; resampling_factor = 2;
if (openair0_cfg[card].duplex_mode==duplex_mode_TDD)
rx_filter = RXLPF5;
else
rx_filter = RXLPF25; rx_filter = RXLPF25;
tx_filter = TXLPF25; tx_filter = TXLPF25;
...@@ -886,6 +898,10 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag) ...@@ -886,6 +898,10 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
p_exmimo_config->rf.rf_mode[ant] += (RXEN + DMAMODE_RX + RXLPFNORM + RXLPFEN + rx_filter); p_exmimo_config->rf.rf_mode[ant] += (RXEN + DMAMODE_RX + RXLPFNORM + RXLPFEN + rx_filter);
p_exmimo_config->rf.rf_freq_rx[ant] = (unsigned int)openair0_cfg[card].rx_freq[ant]; p_exmimo_config->rf.rf_freq_rx[ant] = (unsigned int)openair0_cfg[card].rx_freq[ant];
// TDD workaround
//if (openair0_cfg[card].duplex_mode==duplex_mode_TDD)
// p_exmimo_config->rf.rf_freq_rx[ant] += openair0_cfg[card].sample_rate/4;
switch (openair0_cfg[card].rxg_mode[ant]) { switch (openair0_cfg[card].rxg_mode[ant]) {
default: default:
case max_gain: case max_gain:
...@@ -948,7 +964,9 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag) ...@@ -948,7 +964,9 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
printf("!!!!!setting FDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config); printf("!!!!!setting FDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config);
} }
else { else {
p_exmimo_config->framing.tdd_config = DUPLEXMODE_TDD + TXRXSWITCH_LSB + ACTIVE_RF; // TDD workaround
//p_exmimo_config->framing.tdd_config = DUPLEXMODE_TDD + TXRXSWITCH_LSB + ACTIVE_RF;
p_exmimo_config->framing.tdd_config = DUPLEXMODE_FDD + TXRXSWITCH_LSB;
printf("!!!!!setting TDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config); printf("!!!!!setting TDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config);
} }
......
...@@ -326,7 +326,7 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB) ...@@ -326,7 +326,7 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
}*/ }*/
/*for (aa=0; aa<phy_vars_eNB->frame_parms.nb_antennas_tx; aa++) { for (aa=0; aa<phy_vars_eNB->frame_parms.nb_antennas_tx; aa++) {
do_OFDM_mod_symbol(&phy_vars_eNB->common_vars, do_OFDM_mod_symbol(&phy_vars_eNB->common_vars,
0, 0,
subframe<<1, subframe<<1,
...@@ -341,23 +341,24 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB) ...@@ -341,23 +341,24 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
&phy_vars_eNB->frame_parms, &phy_vars_eNB->frame_parms,
aa); aa);
} }
}*/ }
/*
phy_vars_eNB->pool->next_slot = subframe<<1; phy_vars_eNB->pool->next_slot = subframe<<1;
/* start all threads */ // start all threads
thread_pool_start(phy_vars_eNB->pool); thread_pool_start(phy_vars_eNB->pool);
/* wait all threads finishes */ // wait all threads finishes
thread_pool_join(phy_vars_eNB->pool); thread_pool_join(phy_vars_eNB->pool);
if (subframe_select(&phy_vars_eNB->frame_parms,subframe) == SF_DL) { if (subframe_select(&phy_vars_eNB->frame_parms,subframe) == SF_DL) {
/* set next_slot */ // set next_slot
phy_vars_eNB->pool->next_slot++; phy_vars_eNB->pool->next_slot++;
/* start all threads */ // start all threads
thread_pool_start(phy_vars_eNB->pool); thread_pool_start(phy_vars_eNB->pool);
/* wait all threads finishes */ // wait all threads finishes
thread_pool_join(phy_vars_eNB->pool); thread_pool_join(phy_vars_eNB->pool);
} }
*/
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION,0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION,0);
...@@ -571,7 +572,13 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam ...@@ -571,7 +572,13 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
start_meas(&softmodem_stats_rxtx_sf); start_meas(&softmodem_stats_rxtx_sf);
// **************************************** // ****************************************
// TDD workaround
//if ((eNB->rfdevice.type == EXMIMO_DEV) && (eNB->frame_parms.frame_type == TDD)) {
// remove_1_4_fs(eNB,proc->subframe_rx<<1); // TDD workaround for EXMIMO2 card
// remove_1_4_fs(eNB,1+(proc->subframe_rx<<1));
//}
// Common RX procedures subframe n // Common RX procedures subframe n
phy_procedures_eNB_common_RX(eNB); phy_procedures_eNB_common_RX(eNB);
......
...@@ -1310,8 +1310,7 @@ void init_openair0() { ...@@ -1310,8 +1310,7 @@ void init_openair0() {
} }
if (frame_parms[0]->frame_type==TDD) if (frame_parms[0]->frame_type==TDD)
//openair0_cfg[card].duplex_mode = duplex_mode_TDD; openair0_cfg[card].duplex_mode = duplex_mode_TDD;
openair0_cfg[card].duplex_mode = duplex_mode_FDD;
else //FDD else //FDD
openair0_cfg[card].duplex_mode = duplex_mode_FDD; openair0_cfg[card].duplex_mode = duplex_mode_FDD;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment