Commit 989cc7ad authored by thamizhselvan.k's avatar thamizhselvan.k Committed by Manish

OAI and XRAN Patches

parent 2fc90204
From 600acce33fb9fefbd6fbd1f546404b55d19c51fa Mon Sep 17 00:00:00 2001
From: "rajeshwari.p" <rajeshwari.p@vvdntech.in>
Date: Fri, 19 Aug 2022 17:18:12 +0530
Subject: [PATCH] changes to compile libxran using gcc and disable avx512
Signed-off-by: rajeshwari.p <rajeshwari.p@vvdntech.in>
---
fhi_lib/build.sh | 6 +++---
fhi_lib/lib/Makefile | 23 ++++++++++++-----------
2 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/fhi_lib/build.sh b/fhi_lib/build.sh
index 22859b5..e24e46f 100755
--- a/fhi_lib/build.sh
+++ b/fhi_lib/build.sh
@@ -72,9 +72,9 @@ echo "MLOG = ${MLOG}"
cd $XRAN_FH_LIB_DIR
make $COMMAND_LINE MLOG=${MLOG} LIBXRANSO=${LIBXRANSO} #DEBUG=1 VERBOSE=1
-echo 'Building xRAN Test Application'
-cd $XRAN_FH_APP_DIR
-make $COMMAND_LINE MLOG=${MLOG} #DEBUG=1 VERBOSE=1
+#echo 'Building xRAN Test Application'
+#cd $XRAN_FH_APP_DIR
+#make $COMMAND_LINE MLOG=${MLOG} #DEBUG=1 VERBOSE=1
if [ -z ${GTEST_ROOT+x} ];
then
diff --git a/fhi_lib/lib/Makefile b/fhi_lib/lib/Makefile
index 579a0c6..c553fda 100644
--- a/fhi_lib/lib/Makefile
+++ b/fhi_lib/lib/Makefile
@@ -23,11 +23,11 @@ MYCUSTOMSPACE1='------------------------------------------------------------'
##############################################################
# Tools configuration
##############################################################
-CC := icc
-CPP := icpc
+CC := gcc
+#CPP := icpc
AS := as
AR := ar
-LD := icc
+LD := gcc
OBJDUMP := objdump
ifeq ($(SHELL),cmd.exe)
@@ -95,9 +95,10 @@ CC_FLAGS += -std=gnu11 -Wall -Wno-deprecated-declarations \
-fPIC \
-Wall \
-Wimplicit-function-declaration \
- -g -O3 -wd1786
+ -g -O3 -mssse3 \
+ -march=native
-CPP_FLAGS := -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_GNU_SOURCE -D_REENTRANT -pipe -no-prec-div \
+#CPP_FLAGS := -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_GNU_SOURCE -D_REENTRANT -pipe -no-prec-div \
-no-prec-div -fp-model fast=2 -fPIC \
-no-prec-sqrt -falign-functions=16 -fast-transcendentals \
-Werror -Wno-unused-variable -std=c++11 -mcmodel=large
@@ -121,14 +122,14 @@ PROJECT_OBJ_DIR := build/obj
CC_OBJS := $(patsubst %.c,%.o,$(CC_SRC))
CPP_OBJS := $(patsubst %.cpp,%.o,$(CPP_SRC))
AS_OBJS := $(patsubst %.s,%.o,$(AS_SRC))
-OBJS := $(CC_OBJS) $(CPP_OBJS) $(AS_OBJS) $(LIBS)
+OBJS := $(CC_OBJS) $(AS_OBJS) $(LIBS)
DIRLIST := $(addprefix $(PROJECT_OBJ_DIR)/,$(sort $(dir $(OBJS))))
CC_OBJTARGETS := $(addprefix $(PROJECT_OBJ_DIR)/,$(CC_OBJS))
CPP_OBJTARGETS := $(addprefix $(PROJECT_OBJ_DIR)/,$(CPP_OBJS))
AS_OBJTARGETS := $(addprefix $(PROJECT_OBJ_DIR)/,$(AS_OBJS))
-CPP_COMP := -O3 -xcore-avx512 -restrict -g -fasm-blocks
+CPP_COMP := -O3 -xcore-avx512 -restrict -g
CC_FLAGS_FULL := $(CC_FLAGS) $(INC) $(DEF)
CPP_FLAGS_FULL := $(CPP_FLAGS) $(CPP_COMP) $(INC) $(DEF)
@@ -160,7 +161,7 @@ $(CPP_DEPS) :
@$(CPP) -MM $(subst __up__,../,$(subst __dep__,,$@)) -MT $(PROJECT_OBJ_DIR)/$(patsubst %.cpp,%.o,$(subst __up__,../,$(subst __dep__,,$@))) $(CPP_FLAGS_FULL) >> $(PROJECT_DEP_FILE)
.PHONY : generate_deps
-generate_deps : clear_dep $(CC_DEPS) $(CPP_DEPS)
+generate_deps : clear_dep $(CC_DEPS)
.PHONY : echo_start_build
@@ -211,10 +212,10 @@ welcome_line :
debug : all
release : all
-$(PROJECT_BINARY) : $(DIRLIST) echo_start_build $(GENERATE_DEPS) $(PRE_BUILD) $(CC_OBJTARGETS) $(CPP_OBJTARGETS) $(AS_OBJTARGETS)
+$(PROJECT_BINARY) : $(DIRLIST) echo_start_build $(GENERATE_DEPS) $(PRE_BUILD) $(CC_OBJTARGETS) $(AS_OBJTARGETS)
@echo [AR] $(subst $(BUILDDIR)/,,$@)
ifeq ($(XRAN_LIB_SO),)
- @$(AR) $(AR_FLAGS) $@ $(CC_OBJTARGETS) $(CPP_OBJTARGETS) $(AS_OBJTARGETS)
+ @$(AR) $(AR_FLAGS) $@ $(CC_OBJTARGETS) $(AS_OBJTARGETS)
else
- @$(CC) $(CC_OBJTARGETS) $(CPP_OBJTARGETS) $(AS_OBJTARGETS) -shared -fPIC -o $@
+ @$(CC) $(CC_OBJTARGETS) $(AS_OBJTARGETS) -shared -fPIC -o $@
endif
--
2.25.1
From 75895e33a3f11e98caadeebf052896937f9c231d Mon Sep 17 00:00:00 2001
From: "thamizhselvan.k" <thamizhselvan.k@vvdntech.in>
Date: Wed, 17 Aug 2022 00:29:24 +0530
Subject: [PATCH] changes to schedule PRACH msg2 before the mixed slot
Signed-off-by: thamizhselvan.k <thamizhselvan.k@vvdntech.in>
---
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c | 7 ++++---
openair2/RRC/NR/nr_rrc_config.c | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
index 745fc1ae2b..6516fe254f 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
@@ -419,6 +419,7 @@ void nr_schedule_msg2(uint16_t rach_frame, uint16_t rach_slot,
if (tdd) {
last_dl_slot_period = tdd->nrofDownlinkSymbols == 0? (tdd->nrofDownlinkSlots-1) : tdd->nrofDownlinkSlots;
tdd_period_slot = n_slots_frame/get_nb_periods_per_frame(tdd->dl_UL_TransmissionPeriodicity);
+ last_dl_slot_period = last_dl_slot_period - 1;
}
else{
if(frame_type == TDD)
@@ -892,7 +893,7 @@ void nr_get_Msg3alloc(module_id_t module_id,
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
const int n_slots_frame = nr_slots_per_frame[mu];
uint8_t k2 = 0;
- if (frame_type == TDD) {
+ if (0) {
int nb_periods_per_frame = get_nb_periods_per_frame(scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity);
int nb_slots_per_period = ((1<<mu)*10)/nb_periods_per_frame;
for (int i=0; i<pusch_TimeDomainAllocationList->list.count; i++) {
@@ -920,8 +921,8 @@ void nr_get_Msg3alloc(module_id_t module_id,
AssertFatal(ra->Msg3_tda_id < 16, "Couldn't find an appropriate TD allocation for Msg3\n");
}
else {
- ra->Msg3_tda_id = 0;
- k2 = *pusch_TimeDomainAllocationList->list.array[0]->k2;
+ ra->Msg3_tda_id = 2;
+ k2 = *pusch_TimeDomainAllocationList->list.array[2]->k2;
temp_slot = current_slot + k2 + DELTA[mu]; // msg3 slot according to 8.3 in 38.213
ra->Msg3_slot = temp_slot%nr_slots_per_frame[mu];
}
diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c
index f67fb93c23..18468f607f 100644
--- a/openair2/RRC/NR/nr_rrc_config.c
+++ b/openair2/RRC/NR/nr_rrc_config.c
@@ -568,7 +568,7 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay){
int nb_slots_per_period = ((1<<mu) * 10)/nb_periods_per_frame;
struct NR_PUSCH_TimeDomainResourceAllocation *pusch_timedomainresourceallocation_msg3 = CALLOC(1,sizeof(struct NR_PUSCH_TimeDomainResourceAllocation));
pusch_timedomainresourceallocation_msg3->k2 = CALLOC(1,sizeof(long));
- *pusch_timedomainresourceallocation_msg3->k2 = nb_slots_per_period - DELTA[mu];
+ *pusch_timedomainresourceallocation_msg3->k2 = nb_slots_per_period - DELTA[mu] + 2;
if(*pusch_timedomainresourceallocation_msg3->k2 < min_fb_delay)
*pusch_timedomainresourceallocation_msg3->k2 += nb_slots_per_period;
AssertFatal(*pusch_timedomainresourceallocation_msg3->k2<33,"Computed k2 for msg3 %ld is larger than the range allowed by RRC (0..32)\n",
--
2.25.1
From 6f9c9298c9130fdf4905fa1971c561a869f413bf Mon Sep 17 00:00:00 2001
From: "thamizhselvan.k" <thamizhselvan.k@vvdntech.in>
Date: Wed, 17 Aug 2022 10:11:41 +0530
Subject: [PATCH 2/8] returning proper slot_id
Signed-off-by: thamizhselvan.k <thamizhselvan.k@vvdntech.in>
---
fhi_lib/lib/src/xran_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fhi_lib/lib/src/xran_main.c b/fhi_lib/lib/src/xran_main.c
index 17acc2a..8f5705e 100644
--- a/fhi_lib/lib/src/xran_main.c
+++ b/fhi_lib/lib/src/xran_main.c
@@ -609,6 +609,7 @@ static inline int8_t xran_check_updl_seqid(void *pHandle, uint8_t cc_id, uint8_t
uint32_t xran_slotid_convert(uint16_t slot_id, uint16_t dir) //dir = 0, from PHY slotid to xran spec slotid as defined in 5.3.2, dir=1, from xran slotid to phy slotid
{
+ return slot_id;
#ifdef FCN_ADAPT
return slot_id;
#endif
--
2.25.1
From 729d8b701c1391aecf933443eeb21fcfb0a745ec Mon Sep 17 00:00:00 2001
From: "thamizhselvan.k" <thamizhselvan.k@vvdntech.in>
Date: Wed, 17 Aug 2022 16:26:49 +0530
Subject: [PATCH 3/8] commenting the pkt validate at process_mbuf to avoid
prach packet dropping
Signed-off-by: thamizhselvan.k <thamizhselvan.k@vvdntech.in>
---
fhi_lib/lib/src/xran_common.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fhi_lib/lib/src/xran_common.c b/fhi_lib/lib/src/xran_common.c
index c4cb3fb..5bbacf7 100644
--- a/fhi_lib/lib/src/xran_common.c
+++ b/fhi_lib/lib/src/xran_common.c
@@ -192,6 +192,7 @@ int process_mbuf(struct rte_mbuf *pkt)
return MBUF_FREE;
}
+#if 0
valid_res = xran_pkt_validate(NULL,
pkt,
iq_samp_buf,
@@ -213,6 +214,7 @@ int process_mbuf(struct rte_mbuf *pkt)
print_dbg("valid_res is wrong [%d] ant %u (%u : %u : %u : %u) seq %u num_bytes %d\n", valid_res, Ant_ID, frame_id, subframe_id, slot_id, symb_id, seq.seq_id, num_bytes);
return MBUF_FREE;
}
+#endif
if (Ant_ID >= p_x_ctx->srs_cfg.eAxC_offset && p_x_ctx->fh_init.srsEnable) {
/* SRS packet has ruportid = 2*num_eAxc + ant_id */
--
2.25.1
From 71e1584ab1e09ecaf36e18fdda5cbf94ff3a5ae4 Mon Sep 17 00:00:00 2001
From: "thamizhselvan.k" <thamizhselvan.k@vvdntech.in>
Date: Wed, 17 Aug 2022 17:14:20 +0530
Subject: [PATCH 4/8] WA for timer handler not getting called after certain
iteration
---
fhi_lib/lib/src/xran_main.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/fhi_lib/lib/src/xran_main.c b/fhi_lib/lib/src/xran_main.c
index 8f5705e..3b187fc 100644
--- a/fhi_lib/lib/src/xran_main.c
+++ b/fhi_lib/lib/src/xran_main.c
@@ -780,7 +780,8 @@ void tti_ota_cb(struct rte_timer *tim, void *arg)
}
p_xran_dev_ctx->phy_tti_cb_done = 0;
- xran_timer_arm_ex(&tti_to_phy_timer[xran_lib_ota_tti % 10], tti_to_phy_cb, (void*)pTCtx, tim_lcore);
+ //xran_timer_arm_ex(&tti_to_phy_timer[xran_lib_ota_tti % 10], tti_to_phy_cb, (void*)pTCtx, tim_lcore);
+ tti_to_phy_cb(&tti_to_phy_timer[xran_lib_ota_tti % 10],(void*)pTCtx);
//slot index is increased to next slot at the beginning of current OTA slot
xran_lib_ota_tti++;
@@ -795,11 +796,14 @@ void xran_timer_arm(struct rte_timer *tim, void* arg)
{
struct xran_device_ctx * p_xran_dev_ctx = xran_dev_get_ctx();
uint64_t t3 = MLogTick();
+ void (*func)(void*,void *);
+ func = arg;
if (xran_if_current_state == XRAN_RUNNING){
- rte_timer_cb_t fct = (rte_timer_cb_t)arg;
- rte_timer_init(tim);
- rte_timer_reset_sync(tim, 0, SINGLE, p_xran_dev_ctx->fh_init.io_cfg.timing_core, fct, &timer_ctx[0]);
+ //rte_timer_cb_t fct = (rte_timer_cb_t)arg;
+ //rte_timer_init(tim);
+ //rte_timer_reset_sync(tim, 0, SINGLE, p_xran_dev_ctx->fh_init.io_cfg.timing_core, fct, &timer_ctx[0]);
+ func(NULL,&timer_ctx[0]);
}
MLogTask(PID_TIME_ARM_TIMER, t3, MLogTick());
}
@@ -811,6 +815,8 @@ void xran_timer_arm_for_deadline(struct rte_timer *tim, void* arg)
static int timer_cnt = 0;
unsigned tim_lcore = (p_xran_dev_ctx->fh_init.io_cfg.pkt_proc_core) ? p_xran_dev_ctx->pkt_proc_core_id :
p_xran_dev_ctx->fh_init.io_cfg.timing_core;
+ void (*func)(void*,void *);
+ func = arg;
int32_t rx_tti;
int32_t cc_id;
@@ -828,9 +834,10 @@ void xran_timer_arm_for_deadline(struct rte_timer *tim, void* arg)
cb_timer_ctx[timer_cnt].tti_to_process = rx_tti;
if (xran_if_current_state == XRAN_RUNNING){
- rte_timer_cb_t fct = (rte_timer_cb_t)arg;
- rte_timer_init(tim);
- rte_timer_reset_sync(tim, 0, SINGLE, tim_lcore, fct, &cb_timer_ctx[timer_cnt++]);
+ //rte_timer_cb_t fct = (rte_timer_cb_t)arg;
+ //rte_timer_init(tim);
+ //rte_timer_reset_sync(tim, 0, SINGLE, tim_lcore, fct, &cb_timer_ctx[timer_cnt++]);
+ func(NULL,&cb_timer_ctx[timer_cnt++]);
if (timer_cnt >= 10*MAX_NUM_OF_XRAN_CTX)
timer_cnt = 0;
}
--
2.25.1
From 2868d676342c2adcf55c3c0ce988f68a79e84b0c Mon Sep 17 00:00:00 2001
From: "thamizhselvan.k" <thamizhselvan.k@vvdntech.in>
Date: Wed, 17 Aug 2022 18:28:03 +0530
Subject: [PATCH 5/8] ant_id changes in tx/rx path to handle prach from ru
Signed-off-by: thamizhselvan.k <thamizhselvan.k@vvdntech.in>
---
fhi_lib/lib/src/xran_common.c | 3 ++-
fhi_lib/lib/src/xran_main.c | 8 +++++---
fhi_lib/lib/src/xran_up_api.c | 5 +++--
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/fhi_lib/lib/src/xran_common.c b/fhi_lib/lib/src/xran_common.c
index 5bbacf7..270ee17 100644
--- a/fhi_lib/lib/src/xran_common.c
+++ b/fhi_lib/lib/src/xran_common.c
@@ -256,8 +256,9 @@ int process_mbuf(struct rte_mbuf *pkt)
print_dbg("Transport layer fragmentation (eCPRI) is not supported\n");
}
- } else if (Ant_ID >= p_x_ctx->PrachCPConfig.eAxC_offset && p_x_ctx->fh_init.prachEnable) {
+ } else if (Ant_ID+1 >= p_x_ctx->PrachCPConfig.eAxC_offset && p_x_ctx->fh_init.prachEnable) {
/* PRACH packet has ruportid = num_eAxc + ant_id */
+ Ant_ID = Ant_ID + 1;
Ant_ID -= p_x_ctx->PrachCPConfig.eAxC_offset;
symbol_total_bytes += num_bytes;
if (seq.e_bit == 1) {
diff --git a/fhi_lib/lib/src/xran_main.c b/fhi_lib/lib/src/xran_main.c
index 3b187fc..ef423d7 100644
--- a/fhi_lib/lib/src/xran_main.c
+++ b/fhi_lib/lib/src/xran_main.c
@@ -412,7 +412,8 @@ int xran_init_prach(struct xran_fh_config* pConf, struct xran_device_ctx * p_xra
printf("PRACH start symbol %u lastsymbol %u\n", p_xran_dev_ctx->prach_start_symbol[0], p_xran_dev_ctx->prach_last_symbol[0]);
}
- pPrachCPConfig->eAxC_offset = xran_get_num_eAxc(NULL);
+ //pPrachCPConfig->eAxC_offset = xran_get_num_eAxc(NULL);
+ pPrachCPConfig->eAxC_offset = 5;
print_dbg("PRACH eAxC_offset %d\n", pPrachCPConfig->eAxC_offset);
return (XRAN_STATUS_SUCCESS);
@@ -1036,7 +1037,7 @@ int xran_cp_create_and_send_section(void *pHandle, uint8_t ru_port_id, int dir,
params.numSections = 1;//nsection;
params.sections = sect_geninfo;
- ret = xran_prepare_ctrl_pkt(mbuf, &params, cc_id, ru_port_id, seq_id);
+ ret = xran_prepare_ctrl_pkt(mbuf, &params, cc_id, ru_port_id+1, seq_id);
if(ret < 0) {
print_err("Fail to build control plane packet - [%d:%d:%d] dir=%d\n",
frame_id, subframe_id, slot_id, dir);
@@ -1269,7 +1270,8 @@ void tx_cp_ul_cb(struct rte_timer *tim, void *arg)
struct xran_cp_gen_params params;
struct xran_section_gen_info sect_geninfo[8];
struct rte_mbuf *mbuf = xran_ethdi_mbuf_alloc();
- prach_port_id = ant_id + num_eAxc;
+ //prach_port_id = ant_id + num_eAxc;
+ prach_port_id = 5;
/* start new section information list */
xran_cp_reset_section_info(pHandle, XRAN_DIR_UL, cc_id, prach_port_id, ctx_id);
diff --git a/fhi_lib/lib/src/xran_up_api.c b/fhi_lib/lib/src/xran_up_api.c
index a69712f..3fcea46 100644
--- a/fhi_lib/lib/src/xran_up_api.c
+++ b/fhi_lib/lib/src/xran_up_api.c
@@ -131,7 +131,8 @@ static int xran_build_ecpri_hdr_ex(struct rte_mbuf *mbuf,
ecpri_hdr->cmnhdr.ecpri_payl_size = rte_cpu_to_be_16(ecpri_payl_size);
/* one to one lls-CU to RU only and band sector is the same */
- ecpri_hdr->ecpri_xtc_id = xran_compose_cid(0, 0, CC_ID, Ant_ID);
+ //ecpri_hdr->ecpri_xtc_id = xran_compose_cid(0, 0, CC_ID, Ant_ID);
+ ecpri_hdr->ecpri_xtc_id = xran_compose_cid(0, 0, CC_ID, 1);
ecpri_hdr->ecpri_seq_id.seq_id = seq_id;
@@ -362,7 +363,7 @@ int32_t xran_extract_iq_samples(struct rte_mbuf *mbuf,
xran_decompose_cid((uint16_t)ecpri_hdr->ecpri_xtc_id, &result);
*CC_ID = result.ccId;
- *Ant_ID = result.ruPortId;
+ *Ant_ID = result.ruPortId - 1;
/* Process radio header. */
struct radio_app_common_hdr *radio_hdr =
--
2.25.1
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