Merge remote-tracking branch 'origin/fapi-wls-integration' into integration_2025_w29 (!3346)
Add WLS as a transport option for VNF/PNF, refactor existing options This MR adds a new transport mechanism for the VNF and PNF split, using the Intel WLS library, which makes use of DPDK and shared memory to transport messages. This transport mechanism is what is used to interface with Radisys ODU, while also working with OAI VNF/PNF. The VNF and PNF have been refactored so that the transport-specific functions are isolated from the rest of the logic, and as such, interchangeable by means of function pointers. The same change is done for the packing/unpacking procedures, allowing to switch between FAPI and nFAPI encoding. This MR also reduces the amount of duplicated code, by refactoring the VNF with Aerial, which now only has the transport-relevant functions, as well as the ones that are unique to it ( for example, the unpacking procedures where a secondary data buffer is used for the message payloads ) Additionally a new callback is added to the VNF to process ERROR.indication messages, which currently only indicates which message originated the error, and which error occurred.
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
#include "SCHED_NR/fapi_nr_l1.h"
|
||||
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
|
||||
#include <string.h>
|
||||
#include "nfapi/open-nFAPI/fapi/inc/nr_fapi_p5_utils.h"
|
||||
|
||||
int l1_north_init_gNB()
|
||||
{
|
||||
@@ -363,7 +364,7 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config)
|
||||
NR_DL_FRAME_PARMS *fp = &RC.gNB[Mod_id]->frame_parms;
|
||||
nfapi_nr_config_request_scf_t *gNB_config = &RC.gNB[Mod_id]->gNB_config;
|
||||
|
||||
memcpy((void*)gNB_config,phy_config->cfg,sizeof(*phy_config->cfg));
|
||||
copy_config_request(phy_config->cfg, gNB_config);
|
||||
|
||||
uint64_t dl_bw_khz = (12*gNB_config->carrier_config.dl_grid_size[gNB_config->ssb_config.scs_common.value].value)*(15<<gNB_config->ssb_config.scs_common.value);
|
||||
fp->dl_CarrierFreq = ((dl_bw_khz>>1) + gNB_config->carrier_config.dl_frequency.value)*1000 ;
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
#include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h"
|
||||
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
|
||||
#include "openair1/PHY/LTE_TRANSPORT/transport_common.h"
|
||||
typedef struct pnf_t pnf_t;
|
||||
typedef struct pnf_p7_t pnf_p7_t;
|
||||
typedef struct vnf_t vnf_t;
|
||||
typedef struct vnf_p7_t vnf_p7_t;
|
||||
|
||||
void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
@@ -52,3 +56,80 @@ void install_nr_schedule_handlers(NR_IF_Module_t *if_inst){}
|
||||
|
||||
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *fp){}
|
||||
|
||||
bool vnf_nr_send_p5_msg(vnf_t *vnf, uint16_t p5_idx, nfapi_nr_p4_p5_message_header_t *msg, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool vnf_nr_send_p7_msg(vnf_p7_t *vnf_p7, nfapi_nr_p7_message_header_t *header)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void *vnf_nr_start_p7_thread(void *ptr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool pnf_nr_send_p5_message(pnf_t *pnf, nfapi_nr_p4_p5_message_header_t *msg, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool pnf_nr_send_p7_message(pnf_p7_t *pnf_p7, nfapi_nr_p7_message_header_t *header, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void *pnf_start_p5_thread(void *ptr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void vnf_start_p5_thread(void *ptr)
|
||||
{
|
||||
}
|
||||
|
||||
void *pnf_nr_p7_thread_start(void *ptr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool wls_vnf_nr_send_p7_message(vnf_p7_t *vnf_p7, nfapi_nr_p7_message_header_t *msg)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void wls_vnf_set_p7_config(void *p7_config)
|
||||
{
|
||||
}
|
||||
|
||||
bool wls_vnf_nr_send_p5_message(vnf_t *vnf,uint16_t p5_idx, nfapi_nr_p4_p5_message_header_t* msg, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void *wls_fapi_vnf_nr_start_thread(void *ptr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool wls_pnf_nr_send_p7_message(pnf_p7_t* pnf_p7,nfapi_nr_p7_message_header_t *msg, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool wls_pnf_nr_send_p5_message(pnf_t *pnf, nfapi_nr_p4_p5_message_header_t *msg, uint32_t msg_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void *wls_fapi_pnf_nr_start_thread(void *ptr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void wls_pnf_set_p7_config(void *p7_config)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#ifdef ENABLE_AERIAL
|
||||
#include "nfapi/oai_integration/aerial/fapi_vnf_p5.h"
|
||||
#endif
|
||||
#include "fapi_nr_l1.h"
|
||||
#include "common/ran_context.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
|
||||
|
||||
@@ -112,20 +112,20 @@ int32_t get_uldl_offset(int nr_bandP)
|
||||
void configure_nr_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port)
|
||||
{
|
||||
}
|
||||
void configure_nr_nfapi_vnf(char *vnf_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port)
|
||||
void configure_nr_nfapi_vnf(eth_params_t params)
|
||||
{
|
||||
}
|
||||
int nfapi_nr_p7_message_pack(void *pMessageBuf, void *pPackedBuf, uint32_t packedBufLen, nfapi_p7_codec_config_t *config)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int nfapi_nr_p7_message_unpack(void *pMessageBuf,
|
||||
bool nfapi_nr_p7_message_unpack(void *pMessageBuf,
|
||||
uint32_t messageBufLen,
|
||||
void *pUnpackedBuf,
|
||||
uint32_t unpackedBufLen,
|
||||
nfapi_p7_codec_config_t *config)
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
int nfapi_p7_message_header_unpack(void *pMessageBuf,
|
||||
uint32_t messageBufLen,
|
||||
|
||||
Reference in New Issue
Block a user