Merge remote-tracking branch 'origin/GPS_time_stamp_sync' into integration_2024_w17
This commit is contained in:
@@ -115,10 +115,10 @@ static void tx_func(void *param)
|
||||
int slot_tx = info->slot;
|
||||
int frame_rx = info->frame_rx;
|
||||
int slot_rx = info->slot_rx;
|
||||
int absslot_tx = info->timestamp_tx / info->gNB->frame_parms.get_samples_per_slot(slot_tx, &info->gNB->frame_parms);
|
||||
int absslot_rx = absslot_tx - info->gNB->RU_list[0]->sl_ahead;
|
||||
int64_t absslot_tx = info->timestamp_tx / info->gNB->frame_parms.get_samples_per_slot(slot_tx, &info->gNB->frame_parms);
|
||||
int64_t absslot_rx = absslot_tx - info->gNB->RU_list[0]->sl_ahead;
|
||||
if (absslot_rx < 0) {
|
||||
LOG_W(NR_PHY, "Slot ahead %d is larger than absslot_tx %d. Cannot start TX yet.\n", info->gNB->RU_list[0]->sl_ahead, absslot_tx);
|
||||
LOG_W(NR_PHY, "Slot ahead %d is larger than absslot_tx %ld. Cannot start TX yet.\n", info->gNB->RU_list[0]->sl_ahead, absslot_tx);
|
||||
return;
|
||||
}
|
||||
LOG_D(NR_PHY, "%d.%d running tx_func\n", frame_tx, slot_tx);
|
||||
@@ -218,8 +218,8 @@ void rx_func(void *param)
|
||||
for (; i < gNB->frame_parms.slots_per_subframe / 2; i++)
|
||||
cumul_samples += gNB->frame_parms.get_samples_per_slot(i, &gNB->frame_parms);
|
||||
int samples = cumul_samples / i;
|
||||
int absslot_tx = info->timestamp_tx / samples;
|
||||
int absslot_rx = absslot_tx - gNB->RU_list[0]->sl_ahead;
|
||||
int64_t absslot_tx = info->timestamp_tx / samples;
|
||||
int64_t absslot_rx = absslot_tx - gNB->RU_list[0]->sl_ahead;
|
||||
int rt_prof_idx = absslot_rx % RT_PROF_DEPTH;
|
||||
clock_gettime(CLOCK_MONOTONIC,&info->gNB->rt_L1_profiling.start_L1_RX[rt_prof_idx]);
|
||||
start_meas(&softmodem_stats_rxtx_sf);
|
||||
|
||||
+3
-3
@@ -1108,8 +1108,8 @@ void ru_tx_func(void *param) {
|
||||
for (; i < fp->slots_per_subframe / 2; i++)
|
||||
cumul_samples += fp->get_samples_per_slot(i, fp);
|
||||
int samples = cumul_samples / i;
|
||||
int absslot_tx = info->timestamp_tx / samples;
|
||||
int absslot_rx = absslot_tx - ru->sl_ahead;
|
||||
int64_t absslot_tx = info->timestamp_tx / samples;
|
||||
int64_t absslot_rx = absslot_tx - ru->sl_ahead;
|
||||
int rt_prof_idx = absslot_rx % RT_PROF_DEPTH;
|
||||
clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.start_RU_TX[rt_prof_idx]);
|
||||
// do TX front-end processing if needed (precoding and/or IDFTs)
|
||||
@@ -1335,7 +1335,7 @@ void *ru_thread( void *param ) {
|
||||
proc->timestamp_tx += fp->get_samples_per_slot(i % fp->slots_per_frame, fp);
|
||||
proc->tti_tx = (proc->tti_rx + ru->sl_ahead) % fp->slots_per_frame;
|
||||
proc->frame_tx = proc->tti_rx > proc->tti_tx ? (proc->frame_rx + 1) & 1023 : proc->frame_rx;
|
||||
int absslot_rx = proc->timestamp_rx/fp->get_samples_per_slot(proc->tti_rx,fp);
|
||||
int64_t absslot_rx = proc->timestamp_rx/fp->get_samples_per_slot(proc->tti_rx,fp);
|
||||
int rt_prof_idx = absslot_rx % RT_PROF_DEPTH;
|
||||
clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.return_RU_south_in[rt_prof_idx]);
|
||||
LOG_D(PHY,"AFTER fh_south_in - SFN/SL:%d%d RU->proc[RX:%d.%d TX:%d.%d] RC.gNB[0]:[RX:%d%d TX(SFN):%d]\n",
|
||||
|
||||
@@ -40,7 +40,7 @@ extern "C"
|
||||
// depth of trace in slots
|
||||
#define RT_PROF_DEPTH 100
|
||||
typedef struct {
|
||||
int absslot_rx[RT_PROF_DEPTH];
|
||||
int64_t absslot_rx[RT_PROF_DEPTH];
|
||||
struct timespec return_RU_south_in[RT_PROF_DEPTH];
|
||||
struct timespec return_RU_feprx[RT_PROF_DEPTH];
|
||||
struct timespec return_RU_prachrx[RT_PROF_DEPTH];
|
||||
@@ -50,7 +50,7 @@ typedef struct {
|
||||
} rt_ru_profiling_t;
|
||||
|
||||
typedef struct {
|
||||
int absslot_ux[RT_PROF_DEPTH];
|
||||
int64_t absslot_ux[RT_PROF_DEPTH];
|
||||
struct timespec start_L1_RX[RT_PROF_DEPTH];
|
||||
struct timespec return_L1_RX[RT_PROF_DEPTH];
|
||||
struct timespec start_L1_TX[RT_PROF_DEPTH];
|
||||
|
||||
Reference in New Issue
Block a user