Fix problem of RF-IF on TDD system.
This commit is contained in:
@@ -112,7 +112,7 @@ void feptx0(RU_t *ru,int slot) {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// TDD: turn on tx switch N_TA_offset before by setting buffer in these samples to 0
|
// TDD: turn on tx switch N_TA_offset before by setting buffer in these samples to 0
|
||||||
if ((slot == 0) &&
|
/* if ((slot == 0) &&
|
||||||
(fp->frame_type == TDD) &&
|
(fp->frame_type == TDD) &&
|
||||||
((fp->tdd_config==0) ||
|
((fp->tdd_config==0) ||
|
||||||
(fp->tdd_config==1) ||
|
(fp->tdd_config==1) ||
|
||||||
@@ -129,7 +129,7 @@ void feptx0(RU_t *ru,int slot) {
|
|||||||
|
|
||||||
ru->common.txdata[aa][tx_offset] = 0x00000000;
|
ru->common.txdata[aa][tx_offset] = 0x00000000;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+slot , 0);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+slot , 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -817,7 +817,7 @@ void tx_rf(RU_t *ru) {
|
|||||||
(prevSF_type == SF_UL) &&
|
(prevSF_type == SF_UL) &&
|
||||||
(nextSF_type == SF_DL)) {
|
(nextSF_type == SF_DL)) {
|
||||||
flags = 2; // start of burst
|
flags = 2; // start of burst
|
||||||
sf_extension = ru->N_TA_offset<<1;
|
sf_extension = ru->N_TA_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fp->frame_type == TDD) &&
|
if ((fp->frame_type == TDD) &&
|
||||||
@@ -825,9 +825,18 @@ void tx_rf(RU_t *ru) {
|
|||||||
(prevSF_type == SF_UL) &&
|
(prevSF_type == SF_UL) &&
|
||||||
(nextSF_type == SF_UL)) {
|
(nextSF_type == SF_UL)) {
|
||||||
flags = 4; // start of burst and end of burst (only one DL SF between two UL)
|
flags = 4; // start of burst and end of burst (only one DL SF between two UL)
|
||||||
sf_extension = ru->N_TA_offset<<1;
|
sf_extension = ru->N_TA_offset;
|
||||||
}
|
}
|
||||||
|
#if defined(__x86_64) || defined(__i386__)
|
||||||
|
#ifdef __AVX2__
|
||||||
|
sf_extension = (sf_extension)&0xfffffff8;
|
||||||
|
#else
|
||||||
|
sf_extension = (sf_extension)&0xfffffffc;
|
||||||
|
#endif
|
||||||
|
#elif defined(__arm__)
|
||||||
|
sf_extension = (sf_extension)&0xfffffffc;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i=0; i<ru->nb_tx; i++)
|
for (i=0; i<ru->nb_tx; i++)
|
||||||
txp[i] = (void*)&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_tti)-sf_extension];
|
txp[i] = (void*)&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_tti)-sf_extension];
|
||||||
/* add fail safe for late command */
|
/* add fail safe for late command */
|
||||||
@@ -1799,9 +1808,6 @@ static void* eNB_thread_phy_tx( void* param ) {
|
|||||||
proc_rxtx.subframe_tx = proc->subframe_phy_tx;
|
proc_rxtx.subframe_tx = proc->subframe_phy_tx;
|
||||||
proc_rxtx.frame_tx = proc->frame_phy_tx;
|
proc_rxtx.frame_tx = proc->frame_phy_tx;
|
||||||
phy_procedures_eNB_TX(eNB_list[0], &proc_rxtx, no_relay, NULL, 1);
|
phy_procedures_eNB_TX(eNB_list[0], &proc_rxtx, no_relay, NULL, 1);
|
||||||
ru->proc.frame_tx = proc->frame_phy_tx;
|
|
||||||
ru->proc.subframe_tx = proc->subframe_phy_tx;
|
|
||||||
ru->proc.timestamp_tx = proc->timestamp_phy_tx;
|
|
||||||
phy_tx_txdataF_end = 1;
|
phy_tx_txdataF_end = 1;
|
||||||
if(pthread_mutex_lock(&ru->proc.mutex_rf_tx) != 0){
|
if(pthread_mutex_lock(&ru->proc.mutex_rf_tx) != 0){
|
||||||
LOG_E( PHY, "[RU] ERROR pthread_mutex_lock for rf tx thread (IC %d)\n", ru->proc.instance_cnt_rf_tx);
|
LOG_E( PHY, "[RU] ERROR pthread_mutex_lock for rf tx thread (IC %d)\n", ru->proc.instance_cnt_rf_tx);
|
||||||
@@ -1809,6 +1815,9 @@ static void* eNB_thread_phy_tx( void* param ) {
|
|||||||
}
|
}
|
||||||
if (ru->proc.instance_cnt_rf_tx==-1) {
|
if (ru->proc.instance_cnt_rf_tx==-1) {
|
||||||
++ru->proc.instance_cnt_rf_tx;
|
++ru->proc.instance_cnt_rf_tx;
|
||||||
|
ru->proc.frame_tx = proc->frame_phy_tx;
|
||||||
|
ru->proc.subframe_tx = proc->subframe_phy_tx;
|
||||||
|
ru->proc.timestamp_tx = proc->timestamp_phy_tx;
|
||||||
|
|
||||||
// the thread can now be woken up
|
// the thread can now be woken up
|
||||||
AssertFatal(pthread_cond_signal(&ru->proc.cond_rf_tx) == 0, "ERROR pthread_cond_signal for rf_tx thread\n");
|
AssertFatal(pthread_cond_signal(&ru->proc.cond_rf_tx) == 0, "ERROR pthread_cond_signal for rf_tx thread\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user