Commit 30427be1 authored by Masayuki HARADA's avatar Masayuki HARADA

Fix problem of RF-IF on TDD system.

parent 2160f875
...@@ -112,7 +112,7 @@ void feptx0(RU_t *ru,int slot) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 ) { ...@@ -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 ) { ...@@ -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");
......
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