diff --git a/doc/Doxyfile b/doc/Doxyfile index 564c43bb3f..023fe84693 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -997,7 +997,6 @@ INPUT = \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/softmodem-common.h \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/nr-softmodem.c \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/nr-gnb.c \ -@CMAKE_CURRENT_SOURCE_DIR@/../executables/rt_profiling.h \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/nr-uesoftmodem.h \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/nr-uesoftmodem.c \ @CMAKE_CURRENT_SOURCE_DIR@/../executables/lte-softmodem.h \ diff --git a/executables/lte-enb.c b/executables/lte-enb.c index 477ff5cd68..39f72db86c 100644 --- a/executables/lte-enb.c +++ b/executables/lte-enb.c @@ -568,7 +568,7 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB, LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; int ret; LOG_D(PHY,"ENTERED wakeup_rxtx, %d.%d\n",ru_proc->frame_rx,ru_proc->tti_rx); - // wake up TX for subframe n+sl_ahead + // wake up TX for subframe n+sf_ahead // lock the TX mutex and make sure the thread is ready AssertFatal((ret=pthread_mutex_lock(&L1_proc->mutex)) == 0,"mutex_lock returns %d\n", ret); diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c index 3f306e99ee..f80c5f2e49 100644 --- a/executables/nr-gnb.c +++ b/executables/nr-gnb.c @@ -36,7 +36,6 @@ #include "assertions.h" #include #include -#include "rt_profiling.h" #include "PHY/types.h" @@ -91,12 +90,6 @@ static void tx_func(processingData_L1tx_t *info) int slot_tx = info->slot; int frame_rx = info->frame_rx; int slot_rx = info->slot_rx; - 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 %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); PHY_VARS_gNB *gNB = info->gNB; module_id_t module_id = gNB->Mod_id; @@ -134,8 +127,6 @@ static void tx_func(processingData_L1tx_t *info) if (tx_slot_type == NR_DOWNLINK_SLOT || tx_slot_type == NR_MIXED_SLOT || get_softmodem_params()->continuous_tx) { start_meas(&info->gNB->phy_proc_tx); phy_procedures_gNB_TX(info, frame_tx, slot_tx, 1); - const int rt_prof_idx = absslot_rx % RT_PROF_DEPTH; - clock_gettime(CLOCK_MONOTONIC, &info->gNB->rt_L1_profiling.return_L1_TX[rt_prof_idx]); PHY_VARS_gNB *gNB = info->gNB; processingData_RU_t syncMsgRU; @@ -187,15 +178,6 @@ static void rx_func(processingData_L1_t *info) int frame_rx = info->frame_rx; int slot_rx = info->slot_rx; nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config; - int cumul_samples = gNB->frame_parms.get_samples_per_slot(0, &gNB->frame_parms); - int i = 1; - 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; - 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]); // ******************************************************************* @@ -253,7 +235,6 @@ static void rx_func(processingData_L1_t *info) #endif } - clock_gettime(CLOCK_MONOTONIC, &info->gNB->rt_L1_profiling.return_L1_RX[rt_prof_idx]); } static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size_t outputlen) { diff --git a/executables/nr-ru.c b/executables/nr-ru.c index 90d7e235de..d87acf1bbe 100644 --- a/executables/nr-ru.c +++ b/executables/nr-ru.c @@ -33,7 +33,6 @@ #include "common/utils/assertions.h" #include "common/utils/system.h" #include "common/ran_context.h" -#include "rt_profiling.h" #include "radio/COMMON/common_lib.h" #include "radio/ETHERNET/ethernet_lib.h" @@ -69,7 +68,6 @@ static int DEFRUTPCORES[] = {-1,-1,-1,-1}; #include #include "executables/nr-softmodem-common.h" -int sl_ahead; static void NRRCconfig_RU(configmodule_interface_t *cfg); /*************************************************************/ @@ -1038,15 +1036,6 @@ void ru_tx_func(void *param) int print_frame = 8; char filename[40]; - int cumul_samples = fp->get_samples_per_slot(0, fp); - int i = 1; - for (; i < fp->slots_per_subframe / 2; i++) - cumul_samples += fp->get_samples_per_slot(i, fp); - int samples = cumul_samples / i; - 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) if (ru->feptx_prec) ru->feptx_prec(ru,frame_tx,slot_tx); @@ -1093,11 +1082,6 @@ void ru_tx_func(void *param) }//for (i=0; inb_tx; i++) }//if(frame_tx == print_frame) }//else emulate_rf - clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.return_RU_TX[rt_prof_idx]); - struct timespec *t0=&ru->rt_ru_profiling.start_RU_TX[rt_prof_idx]; - struct timespec *t1=&ru->rt_ru_profiling.return_RU_TX[rt_prof_idx]; - - LOG_D(PHY,"rt_prof_idx %d : RU_TX time %d\n",rt_prof_idx,(int)(1e9 * (t1->tv_sec - t0->tv_sec) + (t1->tv_nsec-t0->tv_nsec))); } void *ru_thread(void *param) @@ -1273,9 +1257,6 @@ 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; - 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", frame,slot, proc->frame_rx,proc->tti_rx, @@ -1321,7 +1302,6 @@ void *ru_thread(void *param) rx_tti_busy[proc->tti_rx % RU_RX_SLOT_DEPTH] = true; ru->feprx(ru,proc->tti_rx); LOG_D(NR_PHY, "Setting %d.%d (%d) to busy\n", proc->frame_rx, proc->tti_rx, proc->tti_rx % RU_RX_SLOT_DEPTH); - clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.return_RU_feprx[rt_prof_idx]); //LOG_M("rxdata.m","rxs",ru->common.rxdata[0],1228800,1,1); LOG_D(PHY,"RU proc: frame_rx = %d, tti_rx = %d\n", proc->frame_rx, proc->tti_rx); gNBscopeCopy(RC.gNB[0], @@ -1352,15 +1332,10 @@ void *ru_thread(void *param) proc->frame_rx, proc->tti_rx); } - clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.return_RU_prachrx[rt_prof_idx]); free_nr_ru_prach_entry(ru,prach_id); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_RU_PRACH_RX, 0); } // end if (prach_id > 0) } // end if (ru->feprx) - else { - memset(&ru->rt_ru_profiling.return_RU_feprx[rt_prof_idx],0,sizeof(struct timespec)); - memset(&ru->rt_ru_profiling.return_RU_prachrx[rt_prof_idx],0,sizeof(struct timespec)); - } } // end if (slot_type == NR_UPLINK_SLOT || slot_type == NR_MIXED_SLOT) { #endif diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index d5896bbffd..d3362a4851 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -99,7 +99,6 @@ nrUE_params_t nrUE_params = {0}; pthread_cond_t nfapi_sync_cond; pthread_mutex_t nfapi_sync_mutex; int nfapi_sync_var=-1; //!< protected by mutex \ref nfapi_sync_mutex -int sf_ahead = 6; //??? value ??? pthread_cond_t sync_cond; pthread_mutex_t sync_mutex; int sync_var=-1; //!< protected by mutex \ref sync_mutex. diff --git a/executables/rt_profiling.h b/executables/rt_profiling.h deleted file mode 100644 index 9b72a7091f..0000000000 --- a/executables/rt_profiling.h +++ /dev/null @@ -1,64 +0,0 @@ - -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file rt_profiling.h - * \brief Definitions for proflling real-time scheduling - * \author - * \date 2022 - * \version 0.1 - * \company Eurecom - * \email: - * \note - * \warning - */ -#ifndef TIME_PROFILING_H -#define TIME_PROFILING_H -#ifdef __cplusplus -extern "C" -{ -#endif - -// depth of trace in slots -#define RT_PROF_DEPTH 100 -typedef struct { - 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]; - struct timespec return_RU_pushL1[RT_PROF_DEPTH]; - struct timespec start_RU_TX[RT_PROF_DEPTH]; - struct timespec return_RU_TX[RT_PROF_DEPTH]; -} rt_ru_profiling_t; - -typedef struct { - 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]; - struct timespec return_L1_TX[RT_PROF_DEPTH]; - struct timespec return_L1_prachrx[RT_PROF_DEPTH]; - struct timespec return_L1_puschL1[RT_PROF_DEPTH]; -} rt_L1_profiling_t; -#ifdef __cplusplus -} -#endif -#endif diff --git a/executables/softmodem-common.h b/executables/softmodem-common.h index e593a78210..2e7aaacc21 100644 --- a/executables/softmodem-common.h +++ b/executables/softmodem-common.h @@ -352,7 +352,6 @@ void set_softmodem_sighandler(void); extern uint64_t downlink_frequency[MAX_NUM_CCs][4]; extern int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; extern int usrp_tx_thread; -extern int sl_ahead; extern int sf_ahead; extern int oai_exit; diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c index 4a4e6beaaf..757566b1fc 100644 --- a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c @@ -177,8 +177,6 @@ static int nrLDPC_prepare_TB_encoding(nrLDPC_slot_encoding_parameters_t *nrLDPC_ impp.toutput = nrLDPC_slot_encoding_parameters->toutput; impp.Kb = nrLDPC_TB_encoding_parameters->Kb; impp.Zc = nrLDPC_TB_encoding_parameters->Z; - NR_DL_gNB_HARQ_t harq; - impp.harq = &harq; impp.BG = nrLDPC_TB_encoding_parameters->BG; impp.output = nrLDPC_TB_encoding_parameters->segments->output; impp.K = nrLDPC_TB_encoding_parameters->K; diff --git a/openair1/PHY/CODING/nrLDPC_defs.h b/openair1/PHY/CODING/nrLDPC_defs.h index fe386ce6d7..3db41a0e29 100644 --- a/openair1/PHY/CODING/nrLDPC_defs.h +++ b/openair1/PHY/CODING/nrLDPC_defs.h @@ -66,7 +66,6 @@ typedef struct { uint32_t Zc; /// Number of "Filler" bits uint32_t F; - void *harq; /// Encoder BG uint8_t BG; /// Interleaver outputs diff --git a/openair1/PHY/defs_RU.h b/openair1/PHY/defs_RU.h index 1b0182bffd..167326e811 100644 --- a/openair1/PHY/defs_RU.h +++ b/openair1/PHY/defs_RU.h @@ -39,7 +39,6 @@ #include "time_meas.h" #include "defs_common.h" #include "nfapi_nr_interface_scf.h" -#include #include "common/utils/threadPool/task_ans.h" #include "common/utils/threadPool/thread-pool.h" @@ -663,8 +662,6 @@ typedef struct RU_t_s { int tpcores[16]; /// number of cores for RU ThreadPool int num_tpcores; - /// structure for analyzing high-level RT measurements - rt_ru_profiling_t rt_ru_profiling; void* scopeData; } RU_t; diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h index 154cc7a989..492c022da6 100644 --- a/openair1/PHY/defs_gNB.h +++ b/openair1/PHY/defs_gNB.h @@ -43,7 +43,6 @@ #include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h" #include "PHY/CODING/nrLDPC_extern.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h" -#include "executables/rt_profiling.h" #include "nfapi_nr_interface_scf.h" #include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h" @@ -560,8 +559,6 @@ typedef struct PHY_VARS_gNB_s { int L1_tx_thread_core; struct processingData_L1tx *msgDataTx; void *scopeData; - /// structure for analyzing high-level RT measurements - rt_L1_profiling_t rt_L1_profiling; } PHY_VARS_gNB; struct puschSymbolReqId { diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h index 5e04969e43..ae6bbbc2cd 100644 --- a/openair1/PHY/defs_nr_UE.h +++ b/openair1/PHY/defs_nr_UE.h @@ -627,8 +627,6 @@ typedef struct nr_rxtx_thread_data_s { PHY_VARS_NR_UE *UE; int writeBlockSize; nr_phy_data_t phy_data; - int tx_wait_for_dlsch; - int rx_offset; } nr_rxtx_thread_data_t; typedef struct LDPCDecode_ue_s { diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index 95a5b9ea64..236913d3f8 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -107,7 +107,6 @@ int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; double cpuf; char *uecap_file; -int sl_ahead = 0; //uint8_t nfapi_mode = 0; uint64_t downlink_frequency[MAX_NUM_CCs][4]; THREAD_STRUCT thread_struct; diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index 7e8ecced70..b5318f3ea6 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -83,7 +83,6 @@ openair0_config_t openair0_cfg[MAX_CARDS]; //uint8_t nfapi_mode=0; uint64_t downlink_frequency[MAX_NUM_CCs][4]; int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; -int sl_ahead = 0; uint32_t N_RB_DL = 106; NR_IF_Module_t *NR_IF_Module_init(int Mod_id) { return (NULL); } diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index ffc6690b42..301beb19f5 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -106,9 +106,6 @@ RAN_CONTEXT_t RC; char *uecap_file; int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; -int sf_ahead = 4; -int slot_ahead=6 ; -int sl_ahead = 0; double cpuf; //uint8_t nfapi_mode = 0; uint64_t downlink_frequency[MAX_NUM_CCs][4]; diff --git a/radio/ETHERNET/benetel/5g/benetel.c b/radio/ETHERNET/benetel/5g/benetel.c index 90fce2e206..996d568767 100644 --- a/radio/ETHERNET/benetel/5g/benetel.c +++ b/radio/ETHERNET/benetel/5g/benetel.c @@ -257,7 +257,6 @@ printf("rxdata in benetel_fh_if4p5_south_in %p\n", &ru->common.rxdataF[antenna][ //printf("BENETEL: %s (f.sf %d.%d)\n", __FUNCTION__, *frame, *slot); RU_proc_t *proc = &ru->proc; - extern int sl_ahead; int f = *frame; int sl = *slot; @@ -272,8 +271,8 @@ printf("rxdata in benetel_fh_if4p5_south_in %p\n", &ru->common.rxdataF[antenna][ if (get_nprocs()<=4) { // why? what if there are more? - proc->tti_tx = (sl+sl_ahead)%20; - proc->frame_tx = (sl>(19-sl_ahead)) ? (f+1)&1023 : f; + proc->tti_tx = (sl+ru->sl_ahead)%20; + proc->frame_tx = (sl>(19-ru->sl_ahead)) ? (f+1)&1023 : f; } } diff --git a/radio/fhi_72/oran_isolate.c b/radio/fhi_72/oran_isolate.c index f922df40bb..d3f4fa1796 100644 --- a/radio/fhi_72/oran_isolate.c +++ b/radio/fhi_72/oran_isolate.c @@ -203,7 +203,6 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) ru_info.prach_buf = ru->prach_rxsigF[0]; // index: [prach_oca][ant_id] RU_proc_t *proc = &ru->proc; - extern int sl_ahead; int f, sl; LOG_D(PHY, "Read rxdataF %p,%p\n", ru_info.rxdataF[0], ru_info.rxdataF[1]); start_meas(&ru->rx_fhaul); @@ -217,8 +216,8 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) int slots_per_frame = 10 << (ru->openair0_cfg.nr_scs_for_raster); proc->tti_rx = sl; proc->frame_rx = f; - proc->tti_tx = (sl + sl_ahead) % slots_per_frame; - proc->frame_tx = (sl > (slots_per_frame - 1 - sl_ahead)) ? (f + 1) & 1023 : f; + proc->tti_tx = (sl + ru->sl_ahead) % slots_per_frame; + proc->frame_tx = (sl > (slots_per_frame - 1 - ru->sl_ahead)) ? (f + 1) & 1023 : f; if (proc->first_rx == 0) { if (proc->tti_rx != *slot) {