merge develop
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
#include "gnb_ind_vars.h"
|
||||
|
||||
queue_t gnb_rach_ind_queue;
|
||||
queue_t gnb_rx_ind_queue;
|
||||
queue_t gnb_crc_ind_queue;
|
||||
queue_t gnb_uci_ind_queue;
|
||||
queue_t gnb_slot_ind_queue;
|
||||
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "openair2/PHY_INTERFACE/queue_t.h"
|
||||
|
||||
extern queue_t gnb_rach_ind_queue;
|
||||
extern queue_t gnb_rx_ind_queue;
|
||||
extern queue_t gnb_crc_ind_queue;
|
||||
extern queue_t gnb_uci_ind_queue;
|
||||
extern queue_t gnb_slot_ind_queue;
|
||||
@@ -23,7 +23,15 @@
|
||||
#include <pthread.h>
|
||||
#include "nfapi/oai_integration/vendor_ext.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
static char nfapi_str_mode[6][24] = {"MONOLITHIC","PNF","VNF","UE_STUB_PNF","UE_STUB_OFFNET","<UNKNOWN NFAPI MODE>"};
|
||||
static const char *const nfapi_str_mode[] = {
|
||||
"MONOLITHIC",
|
||||
"PNF",
|
||||
"VNF",
|
||||
"UE_STUB_PNF",
|
||||
"UE_STUB_OFFNET",
|
||||
"STANDALONE_PNF",
|
||||
"<UNKNOWN NFAPI MODE>"
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
nfapi_mode_t nfapi_mode;
|
||||
@@ -32,15 +40,9 @@ typedef struct {
|
||||
static nfapi_params_t nfapi_params = {0};
|
||||
|
||||
void set_thread_priority(int priority) {
|
||||
//printf("%s(priority:%d)\n", __FUNCTION__, priority);
|
||||
set_priority(priority);
|
||||
|
||||
pthread_attr_t ptAttr;
|
||||
struct sched_param schedParam;
|
||||
schedParam.__sched_priority = priority; //79;
|
||||
|
||||
if(sched_setscheduler(0, SCHED_RR, &schedParam) != 0) {
|
||||
printf("Failed to set scheduler to SCHED_RR\n");
|
||||
}
|
||||
|
||||
if(pthread_attr_setschedpolicy(&ptAttr, SCHED_RR) != 0) {
|
||||
printf("Failed to set pthread sched policy SCHED_RR\n");
|
||||
}
|
||||
@@ -54,7 +56,7 @@ void set_thread_priority(int priority) {
|
||||
}
|
||||
}
|
||||
|
||||
char *nfapi_get_strmode(void) {
|
||||
const char *nfapi_get_strmode(void) {
|
||||
if (nfapi_params.nfapi_mode > NFAPI_MODE_UNKNOWN)
|
||||
return nfapi_str_mode[NFAPI_MODE_UNKNOWN];
|
||||
|
||||
|
||||
@@ -218,14 +218,9 @@ void pnf_nfapi_trace(nfapi_trace_level_t nfapi_level, const char *message, ...)
|
||||
}
|
||||
|
||||
void pnf_set_thread_priority(int priority) {
|
||||
set_priority(priority);
|
||||
|
||||
pthread_attr_t ptAttr;
|
||||
struct sched_param schedParam;
|
||||
schedParam.__sched_priority = priority;
|
||||
|
||||
if(sched_setscheduler(0, SCHED_RR, &schedParam) != 0) {
|
||||
printf("failed to set SCHED_RR\n");
|
||||
}
|
||||
|
||||
if(pthread_attr_setschedpolicy(&ptAttr, SCHED_RR) != 0) {
|
||||
printf("failed to set pthread SCHED_RR %d\n", errno);
|
||||
}
|
||||
@@ -248,7 +243,7 @@ void *pnf_p7_thread_start(void *ptr) {
|
||||
}
|
||||
|
||||
void *pnf_nr_p7_thread_start(void *ptr) {
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[PNF] P7 THREAD %s\n", __FUNCTION__);
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[NR_PNF] NR P7 THREAD %s\n", __FUNCTION__);
|
||||
pnf_set_thread_priority(79);
|
||||
nfapi_pnf_p7_config_t *config = (nfapi_pnf_p7_config_t *)ptr;
|
||||
nfapi_nr_pnf_p7_start(config);
|
||||
@@ -805,7 +800,7 @@ int config_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfap
|
||||
// to keep only the necessary just to keep the nfapi FSM rolling by sending a dummy response.
|
||||
LTE_DL_FRAME_PARMS *fp;
|
||||
|
||||
if (NFAPI_MODE!=NFAPI_UE_STUB_PNF) {
|
||||
if (NFAPI_MODE!=NFAPI_UE_STUB_PNF && NFAPI_MODE!=NFAPI_MODE_STANDALONE_PNF) {
|
||||
struct PHY_VARS_eNB_s *eNB = RC.eNB[0][0];
|
||||
fp = &eNB->frame_parms;
|
||||
} else {
|
||||
@@ -967,7 +962,7 @@ int config_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfap
|
||||
num_tlv++;
|
||||
}
|
||||
|
||||
if(NFAPI_MODE!=NFAPI_UE_STUB_PNF) {
|
||||
if(NFAPI_MODE!=NFAPI_UE_STUB_PNF && NFAPI_MODE!=NFAPI_MODE_STANDALONE_PNF) {
|
||||
printf("[PNF] CONFIG_REQUEST[num_tlv:%d] TLVs processed:%d\n", req->num_tlv, num_tlv);
|
||||
printf("[PNF] Simulating PHY CONFIG - DJP\n");
|
||||
PHY_Config_t phy_config;
|
||||
@@ -991,7 +986,7 @@ int config_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfap
|
||||
nfapi_pnf_config_resp(config, &nfapi_resp);
|
||||
printf("[PNF] Sent NFAPI_CONFIG_RESPONSE phy_id:%d\n", phy_info->id);
|
||||
|
||||
if(NFAPI_MODE==NFAPI_UE_STUB_PNF)
|
||||
if(NFAPI_MODE==NFAPI_UE_STUB_PNF || NFAPI_MODE==NFAPI_MODE_STANDALONE_PNF)
|
||||
free(fp);
|
||||
|
||||
return 0;
|
||||
@@ -1106,7 +1101,6 @@ void pnf_phy_deallocate_p7_vendor_ext(nfapi_p7_message_header_t *header) {
|
||||
|
||||
notifiedFIFO_elt_t *l1tx_message_extract(PHY_VARS_gNB *gNB, int frame, int slot) {
|
||||
notifiedFIFO_elt_t *res;
|
||||
notifiedFIFO_elt_t *freeRes = NULL;
|
||||
|
||||
//TODO: This needs to be reworked for nfapi to work
|
||||
res = pullTpool(gNB->L1_tx_free, gNB->threadPool);
|
||||
@@ -1196,15 +1190,15 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
|
||||
proc = &gNB->proc.L1_proc;
|
||||
nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdu_list = req->dl_tti_request_body.dl_tti_pdu_list;
|
||||
|
||||
//if (req->dl_tti_request_body.nPDUs)
|
||||
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() TX:%d/%d RX:%d/%d; sfn:%d, slot:%d, nGroup:%u, nPDUs: %u, nUE: %u, PduIdx: %u,\n",
|
||||
// __FUNCTION__, proc->frame_tx, proc->slot_tx, proc->frame_rx, proc->slot_rx, // TODO: change subframes to slot
|
||||
// req->SFN,
|
||||
// req->Slot,
|
||||
// req->dl_tti_request_body.nGroup,
|
||||
// req->dl_tti_request_body.nPDUs,
|
||||
// req->dl_tti_request_body.nUe,
|
||||
// req->dl_tti_request_body.PduIdx);
|
||||
if (req->dl_tti_request_body.nPDUs)
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() TX:%d/%d RX:%d/%d; sfn:%d, slot:%d, nGroup:%u, nPDUs: %u, nUE: %p, PduIdx: %p,\n",
|
||||
__FUNCTION__, proc->frame_tx, proc->slot_tx, proc->frame_rx, proc->slot_rx, // TODO: change subframes to slot
|
||||
req->SFN,
|
||||
req->Slot,
|
||||
req->dl_tti_request_body.nGroup,
|
||||
req->dl_tti_request_body.nPDUs,
|
||||
req->dl_tti_request_body.nUe,
|
||||
req->dl_tti_request_body.PduIdx);
|
||||
|
||||
for (int i=0; i<req->dl_tti_request_body.nPDUs; i++) {
|
||||
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() sfn/sf:%d PDU[%d] size:%d pdcch_vars->num_dci:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(req->sfn_sf), i, dl_config_pdu_list[i].pdu_size,pdcch_vars->num_dci);
|
||||
@@ -1220,10 +1214,10 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
|
||||
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() PDU:%d BCH: pdu_index:%u pdu_length:%d sdu_length:%d BCH_SDU:%x,%x,%x\n", __FUNCTION__, i, pdu_index, bch_pdu->bch_pdu_rel8.length, tx_request_pdu[sfn][sf][pdu_index]->segments[0].segment_length, sdu[0], sdu[1], sdu[2]);
|
||||
handle_nr_nfapi_ssb_pdu(msgTx, sfn, slot, &dl_tti_pdu_list[i]);
|
||||
gNB->pbch_configured=1;
|
||||
}
|
||||
}
|
||||
else if (dl_tti_pdu_list[i].PDUType == NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE) {
|
||||
nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu = &dl_tti_pdu_list[i].pdsch_pdu;
|
||||
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15_pdu = &pdsch_pdu->pdsch_pdu_rel15;
|
||||
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15_pdu = &pdsch_pdu->pdsch_pdu_rel15;
|
||||
nfapi_nr_pdu_t *tx_data = tx_data_request[sfn][slot][rel15_pdu->pduIndex];
|
||||
|
||||
if (tx_data != NULL) {
|
||||
@@ -1436,6 +1430,7 @@ int pnf_phy_ul_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
|
||||
switch (ul_tti_pdu_list[i].pdu_type) {
|
||||
case NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE:
|
||||
//LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PUSCH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
//curr_sfn = curr_sfn + 3; //Gokul
|
||||
nr_fill_ulsch(gNB,curr_sfn, curr_slot, &ul_tti_pdu_list[i].pusch_pdu);
|
||||
break;
|
||||
case NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE:
|
||||
@@ -1631,7 +1626,6 @@ nfapi_pnf_p7_subframe_buffer_t dummy_subframe;
|
||||
|
||||
int start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfapi_start_request_t *req) {
|
||||
printf("[PNF] Received NFAPI_START_REQ phy_id:%d\n", req->header.phy_id);
|
||||
nfapi_set_trace_level(NFAPI_TRACE_INFO);
|
||||
pnf_info *pnf = (pnf_info *)(config->user_data);
|
||||
phy_info *phy_info = pnf->phys;
|
||||
nfapi_pnf_p7_config_t *p7_config = nfapi_pnf_p7_config_create();
|
||||
@@ -1667,11 +1661,11 @@ int start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfapi
|
||||
p7_config->tx_req = &pnf_phy_tx_req;
|
||||
p7_config->lbt_dl_config_req = &pnf_phy_lbt_dl_config_req;
|
||||
p7_config->ue_release_req = &pnf_phy_ue_release_req;
|
||||
if (NFAPI_MODE==NFAPI_UE_STUB_PNF) {
|
||||
p7_config->dl_config_req = &memcpy_dl_config_req;
|
||||
p7_config->ul_config_req = &memcpy_ul_config_req;
|
||||
p7_config->hi_dci0_req = &memcpy_hi_dci0_req;
|
||||
p7_config->tx_req = &memcpy_tx_req;
|
||||
if (NFAPI_MODE==NFAPI_UE_STUB_PNF || NFAPI_MODE==NFAPI_MODE_STANDALONE_PNF) {
|
||||
p7_config->dl_config_req = NULL;
|
||||
p7_config->ul_config_req = NULL;
|
||||
p7_config->hi_dci0_req = NULL;
|
||||
p7_config->tx_req = NULL;
|
||||
} else {
|
||||
p7_config->dl_config_req = &pnf_phy_dl_config_req;
|
||||
p7_config->ul_config_req = &pnf_phy_ul_config_req;
|
||||
@@ -1724,7 +1718,7 @@ int start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfapi
|
||||
//phy_init_RU(RC.ru[0]);
|
||||
printf("[PNF] About to call init_eNB_afterRU()\n");
|
||||
|
||||
if (NFAPI_MODE!=NFAPI_UE_STUB_PNF) {
|
||||
if (NFAPI_MODE!=NFAPI_UE_STUB_PNF && NFAPI_MODE!=NFAPI_MODE_STANDALONE_PNF) {
|
||||
init_eNB_afterRU();
|
||||
}
|
||||
|
||||
@@ -1751,7 +1745,6 @@ int start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfapi
|
||||
|
||||
int nr_start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfapi_nr_start_request_scf_t *req) {
|
||||
printf("[PNF] Received NFAPI_START_REQ phy_id:%d\n", req->header.phy_id);
|
||||
nfapi_set_trace_level(NFAPI_TRACE_INFO);
|
||||
pnf_info *pnf = (pnf_info *)(config->user_data);
|
||||
phy_info *phy_info = pnf->phys;
|
||||
nfapi_pnf_p7_config_t *p7_config = nfapi_pnf_p7_config_create();
|
||||
@@ -1797,10 +1790,10 @@ int nr_start_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, n
|
||||
p7_config->lbt_dl_config_req = &pnf_phy_lbt_dl_config_req;
|
||||
p7_config->ue_release_req = &pnf_phy_ue_release_req;
|
||||
if (NFAPI_MODE==NFAPI_UE_STUB_PNF) {
|
||||
p7_config->dl_config_req = &memcpy_dl_config_req;
|
||||
p7_config->ul_config_req = &memcpy_ul_config_req;
|
||||
p7_config->hi_dci0_req = &memcpy_hi_dci0_req;
|
||||
p7_config->tx_req = &memcpy_tx_req;
|
||||
p7_config->dl_config_req = NULL;
|
||||
p7_config->ul_config_req = NULL;
|
||||
p7_config->hi_dci0_req = NULL;
|
||||
p7_config->tx_req = NULL;
|
||||
} else {
|
||||
p7_config->dl_config_req = &pnf_phy_dl_config_req;
|
||||
p7_config->ul_config_req = &pnf_phy_ul_config_req;
|
||||
@@ -2202,7 +2195,7 @@ void configure_nr_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_add
|
||||
void configure_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port) {
|
||||
printf("%s() PNF\n\n\n\n\n\n", __FUNCTION__);
|
||||
|
||||
if(NFAPI_MODE!=NFAPI_UE_STUB_PNF) {
|
||||
if(NFAPI_MODE!=NFAPI_UE_STUB_PNF && NFAPI_MODE!=NFAPI_MODE_STANDALONE_PNF) {
|
||||
nfapi_setmode(NFAPI_MODE_PNF); // PNF!
|
||||
}
|
||||
nfapi_pnf_config_t *config = nfapi_pnf_config_create();
|
||||
@@ -2256,15 +2249,13 @@ void oai_subframe_ind(uint16_t sfn, uint16_t sf) {
|
||||
uint16_t sfn_sf_tx = sfn<<4 | sf;
|
||||
|
||||
if ((sfn % 100 == 0) && sf==0) {
|
||||
struct timespec ts;
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[PNF] %s %d.%d (sfn:%u sf:%u) SFN/SF(TX):%u\n", __FUNCTION__, ts.tv_sec, ts.tv_nsec, sfn, sf, NFAPI_SFNSF2DEC(sfn_sf_tx));
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[PNF] (sfn:%u sf:%u) SFN/SF(TX):%u\n", sfn, sf, NFAPI_SFNSF2DEC(sfn_sf_tx));
|
||||
}
|
||||
|
||||
int subframe_ret = nfapi_pnf_p7_subframe_ind(p7_config_g, p7_config_g->phy_id, sfn_sf_tx);
|
||||
|
||||
if (subframe_ret) {
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[PNF] %s(frame:%u subframe:%u) SFN/SF(TX):%u - PROBLEM with pnf_p7_subframe_ind()\n", __FUNCTION__, sfn, sf, sfn_sf_tx, NFAPI_SFNSF2DEC(sfn_sf_tx));
|
||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "[PNF] (frame:%u subframe:%u) SFN/SF(TX):%u - PROBLEM with pnf_p7_subframe_ind()\n", sfn, sf, sfn_sf_tx);
|
||||
} else {
|
||||
//NFAPI_TRACE(NFAPI_TRACE_INFO, "***NFAPI subframe handler finished *** \n");
|
||||
}
|
||||
|
||||
+521
-298
File diff suppressed because it is too large
Load Diff
@@ -70,10 +70,11 @@ typedef enum {
|
||||
NFAPI_MODE_VNF,
|
||||
NFAPI_UE_STUB_PNF,
|
||||
NFAPI_UE_STUB_OFFNET,
|
||||
NFAPI_MODE_STANDALONE_PNF,
|
||||
NFAPI_MODE_UNKNOWN
|
||||
} nfapi_mode_t;
|
||||
|
||||
char *nfapi_get_strmode(void);
|
||||
const char *nfapi_get_strmode(void);
|
||||
void nfapi_logmode(void);
|
||||
nfapi_mode_t nfapi_getmode(void);
|
||||
void nfapi_setmode(nfapi_mode_t nfapi_mode);
|
||||
|
||||
Reference in New Issue
Block a user