adding tracer for tx fronthaul
This commit is contained in:
@@ -504,6 +504,7 @@ const char* eurecomFunctionsNames[] = {
|
|||||||
"pdcch_interleaving",
|
"pdcch_interleaving",
|
||||||
"pdcch_tx",
|
"pdcch_tx",
|
||||||
/*NR softmodem signal*/
|
/*NR softmodem signal*/
|
||||||
|
"wakeup_txfh"
|
||||||
"gNB_thread_rxtx0",
|
"gNB_thread_rxtx0",
|
||||||
"gNB_thread_rxtx1"
|
"gNB_thread_rxtx1"
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -496,6 +496,7 @@ typedef enum {
|
|||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCCH_TX,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCCH_TX,
|
||||||
|
|
||||||
/*NR softmodem signal*/
|
/*NR softmodem signal*/
|
||||||
|
VCD_SIGNAL_DUMPER_FUNCTIONS_WAKEUP_TXFH,
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0,
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1,
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ typedef struct {
|
|||||||
} T_cache_t;
|
} T_cache_t;
|
||||||
|
|
||||||
/* number of VCD functions (to be kept up to date! see in T_messages.txt) */
|
/* number of VCD functions (to be kept up to date! see in T_messages.txt) */
|
||||||
#define VCD_NUM_FUNCTIONS (238)
|
#define VCD_NUM_FUNCTIONS (239)
|
||||||
|
|
||||||
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
|
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
|
||||||
#define VCD_NUM_VARIABLES (186)
|
#define VCD_NUM_VARIABLES (186)
|
||||||
|
|||||||
@@ -3240,6 +3240,11 @@ ID = VCD_FUNCTION_PDCCH_TX
|
|||||||
VCD_NAME = pdcch_tx
|
VCD_NAME = pdcch_tx
|
||||||
|
|
||||||
#function for gNB
|
#function for gNB
|
||||||
|
ID = VCD_FUNCTION_WAKEUP_TXFH
|
||||||
|
DESC = VCD function WAKEUP_TXFH
|
||||||
|
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||||
|
FORMAT = int,value
|
||||||
|
VCD_NAME = wakeup_txfh
|
||||||
ID = VCD_FUNCTION_gNB_PROC_RXTX0
|
ID = VCD_FUNCTION_gNB_PROC_RXTX0
|
||||||
DESC = VCD function gNB_PROC_RXTX0
|
DESC = VCD function gNB_PROC_RXTX0
|
||||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||||
|
|||||||
@@ -288,6 +288,8 @@ static void *gNB_L1_thread_tx(void *param) {
|
|||||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_TX1_GNB,slot_tx);
|
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_TX1_GNB,slot_tx);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_GNB,frame_tx);
|
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_GNB,frame_tx);
|
||||||
phy_procedures_gNB_TX(gNB, frame_tx,slot_tx, 1);
|
phy_procedures_gNB_TX(gNB, frame_tx,slot_tx, 1);
|
||||||
|
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_WAKEUP_TXFH, 1 );
|
||||||
pthread_mutex_lock( &L1_proc_tx->mutex );
|
pthread_mutex_lock( &L1_proc_tx->mutex );
|
||||||
L1_proc_tx->instance_cnt = -1;
|
L1_proc_tx->instance_cnt = -1;
|
||||||
|
|
||||||
@@ -299,6 +301,7 @@ static void *gNB_L1_thread_tx(void *param) {
|
|||||||
pthread_mutex_unlock(&L1_proc_tx->mutex);
|
pthread_mutex_unlock(&L1_proc_tx->mutex);
|
||||||
|
|
||||||
wakeup_txfh(gNB,L1_proc_tx,frame_tx,slot_tx,timestamp_tx);
|
wakeup_txfh(gNB,L1_proc_tx,frame_tx,slot_tx,timestamp_tx);
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_WAKEUP_TXFH, 0 );
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, 0 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -680,9 +680,6 @@ void rx_rf(RU_t *ru,int *frame,int *slot) {
|
|||||||
proc->frame_rx = (proc->timestamp_rx / (fp->samples_per_slot*fp->slots_per_frame))&1023;
|
proc->frame_rx = (proc->timestamp_rx / (fp->samples_per_slot*fp->slots_per_frame))&1023;
|
||||||
proc->tti_rx = (proc->timestamp_rx / fp->samples_per_slot)%fp->slots_per_frame;
|
proc->tti_rx = (proc->timestamp_rx / fp->samples_per_slot)%fp->slots_per_frame;
|
||||||
// synchronize first reception to frame 0 subframe 0
|
// synchronize first reception to frame 0 subframe 0
|
||||||
proc->timestamp_tx = proc->timestamp_rx+(sl_ahead*fp->samples_per_slot);
|
|
||||||
proc->tti_tx = (proc->tti_rx+sl_ahead)%fp->slots_per_frame;
|
|
||||||
proc->frame_tx = (proc->tti_rx>(fp->slots_per_frame-1-sl_ahead)) ? (proc->frame_rx+1)&1023 : proc->frame_rx;
|
|
||||||
LOG_D(PHY,"RU %d/%d TS %llu (off %d), frame %d, slot %d.%d / %d\n",
|
LOG_D(PHY,"RU %d/%d TS %llu (off %d), frame %d, slot %d.%d / %d\n",
|
||||||
ru->idx,
|
ru->idx,
|
||||||
0,
|
0,
|
||||||
@@ -783,6 +780,7 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief The Asynchronous RX/TX FH thread of RAU/RCC/gNB/RRU.
|
* \brief The Asynchronous RX/TX FH thread of RAU/RCC/gNB/RRU.
|
||||||
* This handles the RX FH for an asynchronous RRU/UE
|
* This handles the RX FH for an asynchronous RRU/UE
|
||||||
|
|||||||
@@ -157,6 +157,10 @@ void nr_phy_free_RU(RU_t *ru)
|
|||||||
for (i = 0; i < ru->nb_rx; i++) free_and_zero(ru->common.rxdata_7_5kHz[i]);
|
for (i = 0; i < ru->nb_rx; i++) free_and_zero(ru->common.rxdata_7_5kHz[i]);
|
||||||
free_and_zero(ru->common.rxdata_7_5kHz);
|
free_and_zero(ru->common.rxdata_7_5kHz);
|
||||||
|
|
||||||
|
// free beamforming input buffers (TX)
|
||||||
|
for (i = 0; i < 15; i++) free_and_zero(ru->common.txdataF[i]);
|
||||||
|
free_and_zero(ru->common.txdataF);
|
||||||
|
|
||||||
// free IFFT input buffers (TX)
|
// free IFFT input buffers (TX)
|
||||||
for (i = 0; i < ru->nb_tx; i++) free_and_zero(ru->common.txdataF_BF[i]);
|
for (i = 0; i < ru->nb_tx; i++) free_and_zero(ru->common.txdataF_BF[i]);
|
||||||
free_and_zero(ru->common.txdataF_BF);
|
free_and_zero(ru->common.txdataF_BF);
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
|
|||||||
uint8_t Qm = rel15->modulation_order;
|
uint8_t Qm = rel15->modulation_order;
|
||||||
uint16_t encoded_length = nb_symbols*Qm;
|
uint16_t encoded_length = nb_symbols*Qm;
|
||||||
|
|
||||||
|
|
||||||
/// CRC, coding, interleaving and rate matching
|
/// CRC, coding, interleaving and rate matching
|
||||||
AssertFatal(harq->pdu!=NULL,"harq->pdu is null\n");
|
AssertFatal(harq->pdu!=NULL,"harq->pdu is null\n");
|
||||||
start_meas(dlsch_encoding_stats);
|
start_meas(dlsch_encoding_stats);
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ void nr_get_tbs(nfapi_nr_dl_config_dlsch_pdu *dlsch_pdu,
|
|||||||
dlsch_rel15->nb_re_dmrs = N_PRB_DMRS;
|
dlsch_rel15->nb_re_dmrs = N_PRB_DMRS;
|
||||||
dlsch_rel15->nb_mod_symbols = N_RE_prime*dlsch_rel15->n_prb*dlsch_rel15->nb_codewords;
|
dlsch_rel15->nb_mod_symbols = N_RE_prime*dlsch_rel15->n_prb*dlsch_rel15->nb_codewords;
|
||||||
|
|
||||||
|
|
||||||
LOG_D(MAC, "TBS %d : N_RE %d N_PRB_DMRS %d N_sh_symb %d N_PRB_oh %d Ninfo %d Ninfo_prime %d R %d Qm %d table %d scale %d nb_symbols %d\n",
|
LOG_D(MAC, "TBS %d : N_RE %d N_PRB_DMRS %d N_sh_symb %d N_PRB_oh %d Ninfo %d Ninfo_prime %d R %d Qm %d table %d scale %d nb_symbols %d\n",
|
||||||
TBS, N_RE, N_PRB_DMRS, N_sh_symb, N_PRB_oh, Ninfo, Ninfo_prime, R, Qm, table_idx, scale, dlsch_rel15->nb_mod_symbols);
|
TBS, N_RE, N_PRB_DMRS, N_sh_symb, N_PRB_oh, Ninfo, Ninfo_prime, R, Qm, table_idx, scale, dlsch_rel15->nb_mod_symbols);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ L1s = (
|
|||||||
RUs = (
|
RUs = (
|
||||||
{
|
{
|
||||||
local_rf = "yes"
|
local_rf = "yes"
|
||||||
nb_tx = 8
|
nb_tx = 1
|
||||||
nb_rx = 1
|
nb_rx = 1
|
||||||
att_tx = 0
|
att_tx = 0
|
||||||
att_rx = 0;
|
att_rx = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user