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)
physicalConfigDedicated = eNB->physicalConfigDedicated[UE_id];
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");
if (physicalConfigDedicated->pdsch_ConfigDedicated) {
......@@ -1362,7 +1362,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
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_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*) );
......@@ -1370,11 +1369,9 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
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_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
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_1_4fs[%d][%d] = %p\n",eNB_id,i,common_vars->rxdata_1_4fs[eNB_id][i]);
#endif
}
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,
P1_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))
mprime += 3 + frame_parms->Ncp;
......
......@@ -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)
{
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;
uint32_t *fs1_4ptr;
#if defined(__x86_64__) || defined(__i386__)
......
......@@ -1352,7 +1352,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
UE_id = i;
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");
}
generate_eNB_ulsch_params(eNB,proc,dci_alloc,UE_id);
......@@ -1432,11 +1432,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
#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,
frame, subframe,
eNB->ulsch[(uint32_t)UE_id]->Msg3_frame,
eNB->ulsch[(uint32_t)UE_id]->Msg3_subframe);
frame, subframe);
//eNB->ulsch[(uint32_t)UE_id]->Msg3_frame,
//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);
......@@ -2583,10 +2583,7 @@ void fep0(PHY_VARS_eNB *eNB,int slot) {
int l;
// 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++) {
slot_fep_ul(fp,
&eNB->common_vars,
......@@ -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);
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,1+(proc->subframe_rx<<1));
}
remove_7_5_kHz(eNB,proc->subframe_rx<<1);
remove_7_5_kHz(eNB,1+(proc->subframe_rx<<1));
for (l=0; l<fp->symbols_per_tti/2; l++) {
slot_fep_ul(fp,
&eNB->common_vars,
......@@ -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
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 == 1) && ((subframe == 3) || (subframe == 8))) ||
((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
MRT,
fp);
}
} */
stop_meas(&eNB->dl_ch_calib_stats);
start_meas(&eNB->ulsch_decoding_stats);
......
......@@ -825,20 +825,32 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
if (openair0_cfg[card].sample_rate==30.72e6) {
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;
tx_filter = TXLPF10;
} else if (openair0_cfg[card].sample_rate==15.36e6) {
resampling_factor = 1;
rx_filter = RXLPF5;
if (openair0_cfg[card].duplex_mode==duplex_mode_TDD)
rx_filter = RXLPF10;
else
rx_filter = RXLPF5;
tx_filter = TXLPF5;
} else if (openair0_cfg[card].sample_rate==7.68e6) {
resampling_factor = 2;
rx_filter = RXLPF25;
//if (openair0_cfg[card].duplex_mode==duplex_mode_TDD) // TDD workaround for EXMIMO
// rx_filter = RXLPF5;
//else
rx_filter = RXLPF25;
tx_filter = TXLPF25;
} else {
printf("Sampling rate not supported, using default 7.68MHz");
resampling_factor = 2;
rx_filter = RXLPF25;
if (openair0_cfg[card].duplex_mode==duplex_mode_TDD)
rx_filter = RXLPF5;
else
rx_filter = RXLPF25;
tx_filter = TXLPF25;
}
......@@ -885,6 +897,10 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
if (openair0_cfg[card].rx_freq[ant]>0) {
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];
// 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]) {
default:
......@@ -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);
}
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);
}
......
......@@ -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,
0,
subframe<<1,
......@@ -341,23 +341,24 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
&phy_vars_eNB->frame_parms,
aa);
}
}*/
}
/*
phy_vars_eNB->pool->next_slot = subframe<<1;
/* start all threads */
// start all threads
thread_pool_start(phy_vars_eNB->pool);
/* wait all threads finishes */
// wait all threads finishes
thread_pool_join(phy_vars_eNB->pool);
if (subframe_select(&phy_vars_eNB->frame_parms,subframe) == SF_DL) {
/* set next_slot */
// set next_slot
phy_vars_eNB->pool->next_slot++;
/* start all threads */
// start all threads
thread_pool_start(phy_vars_eNB->pool);
/* wait all threads finishes */
// wait all threads finishes
thread_pool_join(phy_vars_eNB->pool);
}
*/
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION,0);
......@@ -398,7 +399,7 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
phy_vars_eNB->common_vars.txdata[0][aa][tx_offset++] = 0x00010001;
}
}
if ((((phy_vars_eNB->frame_parms.tdd_config==0) ||
(phy_vars_eNB->frame_parms.tdd_config==1) ||
(phy_vars_eNB->frame_parms.tdd_config==2) ||
......@@ -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);
// ****************************************
// ****************************************
// 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
phy_procedures_eNB_common_RX(eNB);
......
......@@ -1310,8 +1310,7 @@ void init_openair0() {
}
if (frame_parms[0]->frame_type==TDD)
//openair0_cfg[card].duplex_mode = duplex_mode_TDD;
openair0_cfg[card].duplex_mode = duplex_mode_FDD;
openair0_cfg[card].duplex_mode = duplex_mode_TDD;
else //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