o-du/phy
Intel O-RAN/X-RAN Generated Doxygen Documentation
Data Structures | Macros | Functions
xran_cp_api.c File Reference

This file provides the API functions to build Control Plane Messages for XRAN Front Haul layer as defined in XRAN-FH.CUS.0-v02.01. More...

#include <rte_branch_prediction.h>
#include "xran_common.h"
#include "xran_transport.h"
#include "xran_cp_api.h"
#include "xran_printf.h"
#include "xran_compression.h"
Include dependency graph for xran_cp_api.c:

Go to the source code of this file.

Data Structures

struct  xran_sectioninfo_db
 

Macros

#define CPLEN_TS   (30720000)
 

Functions

int xran_cp_init_sectiondb (void *pHandle)
 Initialize section database. Allocate required memory space to store section information. Each eAxC allocates dedicated storage and the entry size is the maximum number of sections. Total entry size : number of CC * number of antenna * max number of sections * 2(direction) More...
 
int xran_cp_free_sectiondb (void *pHandle)
 Release and free section database. More...
 
int xran_cp_add_section_info (void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, struct xran_section_info *info)
 Add a section information of C-Plane to dabase. More...
 
int xran_cp_add_multisection_info (void *pHandle, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, struct xran_cp_gen_params *gen_info)
 
struct xran_section_infoxran_cp_find_section_info (void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, uint16_t section_id)
 Find a section information of C-Plane from dabase by given information. More...
 
struct xran_section_infoxran_cp_iterate_section_info (void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, uint32_t *next)
 Iterate each section information of C-Plane from the database of eAxC by given information. More...
 
int32_t xran_cp_getsize_section_info (void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id)
 Get the size of stored entries for the database of eAxC by given information. More...
 
int xran_cp_reset_section_info (void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id)
 Reset a database of eAxC by given information. More...
 
int xran_dump_sectiondb (void)
 
int32_t xran_cp_populate_section_ext_1 (int8_t *p_ext1_dst, uint16_t ext1_dst_len, int16_t *p_bfw_iq_src, uint16_t rbNum, uint16_t bfwNumPerRb, uint8_t bfwiqWidth, uint8_t bfwCompMeth)
 
uint16_t xran_get_cplength (int CP_length)
 
int32_t xran_get_freqoffset (int32_t freqOffset, int32_t scs)
 
int xran_append_section_extensions (struct rte_mbuf *mbuf, struct xran_section_gen_info *params)
 add section extension to C-Plane packet More...
 
int xran_append_control_section (struct rte_mbuf *mbuf, struct xran_cp_gen_params *params)
 add sections to C-Plane packet Section type 1 and 3 are supported. More...
 
int xran_append_radioapp_header (struct rte_mbuf *mbuf, struct xran_cp_gen_params *params)
 add a radio application header in a C-Plane packet More...
 
int xran_prepare_ctrl_pkt (struct rte_mbuf *mbuf, struct xran_cp_gen_params *params, uint8_t CC_ID, uint8_t Ant_ID, uint8_t seq_id)
 Create a C-Plane packet Transport layer fragmentation is not supported. More...
 
int xran_parse_section_ext1 (void *ext, struct xran_sectionext1_info *extinfo)
 
int xran_parse_section_ext2 (void *ext, struct xran_sectionext2_info *extinfo)
 
int xran_parse_section_ext4 (void *ext, struct xran_sectionext4_info *extinfo)
 
int xran_parse_section_ext5 (void *ext, struct xran_sectionext5_info *extinfo)
 
int xran_parse_section_extension (struct rte_mbuf *mbuf, void *ext, struct xran_section_gen_info *section)
 
int xran_parse_cp_pkt (struct rte_mbuf *mbuf, struct xran_cp_gen_params *result, struct xran_recv_packet_info *pkt_info)
 Parse a C-Plane packet (for RU emulation) Transport layer fragmentation is not supported. More...
 

Detailed Description

This file provides the API functions to build Control Plane Messages for XRAN Front Haul layer as defined in XRAN-FH.CUS.0-v02.01.

Author
Intel Corporation

Definition in file xran_cp_api.c.

Macro Definition Documentation

◆ CPLEN_TS

#define CPLEN_TS   (30720000)

Definition at line 541 of file xran_cp_api.c.

Function Documentation

◆ xran_append_control_section()

int xran_append_control_section ( struct rte_mbuf *  mbuf,
struct xran_cp_gen_params params 
)

add sections to C-Plane packet Section type 1 and 3 are supported.

Parameters
mbufA pointer to the packet buffer
paramsA porinter to the information to generate a C-Plane packet
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_INVALID_PARM if section type is not 1 or 3, or handler is NULL XRAN_STATUS_RESOURCE if failed to allocate the space to packet buffer

Definition at line 1169 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_append_radioapp_header()

int xran_append_radioapp_header ( struct rte_mbuf *  mbuf,
struct xran_cp_gen_params params 
)

add a radio application header in a C-Plane packet

Parameters
mbufA pointer to the packet buffer
paramsA porinter to the information to generate a C-Plane packet
Returns
The length of added section (>0) on success XRAN_STATUS_INVALID_PARM if section type is invalid, or handler is NULL XRAN_STATUS_RESOURCE if failed to allocate the space to packet buffer

Definition at line 1297 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_append_section_extensions()

int xran_append_section_extensions ( struct rte_mbuf *  mbuf,
struct xran_section_gen_info params 
)

add section extension to C-Plane packet

Parameters
mbufA pointer to the packet buffer
paramsA porinter to the information to generate a C-Plane packet
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_INVALID_PARM XRAN_STATUS_RESOURCE if failed to allocate the space to packet buffer

Definition at line 907 of file xran_cp_api.c.

◆ xran_cp_add_multisection_info()

int xran_cp_add_multisection_info ( void *  pHandle,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id,
struct xran_cp_gen_params gen_info 
)

Definition at line 187 of file xran_cp_api.c.

◆ xran_cp_add_section_info()

int xran_cp_add_section_info ( void *  pHandle,
uint8_t  dir,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id,
struct xran_section_info info 
)

Add a section information of C-Plane to dabase.

Parameters
pHandlehandle for xRAN interface, currently not being used
dirDirection of C-Plane message for the section to store
cc_idCC ID of C-Plane message for the section to store
ruport_idRU port ID of C-Plane message for the section to store
ctx_idContext index for the section database
infoThe information of this section to store
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_INVALID_PARAM, if direction, CC ID or RU port ID is incorrect XRAN_STATUS_RESOURCE, if no more space to add on database

Definition at line 160 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_cp_find_section_info()

struct xran_section_info* xran_cp_find_section_info ( void *  pHandle,
uint8_t  dir,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id,
uint16_t  section_id 
)

Find a section information of C-Plane from dabase by given information.

Parameters
pHandlehandle for xRAN interface, currently not being used
dirThe direction of the section to find
cc_idThe CC ID of the section to find
ruport_idRU port ID of the section to find
ctx_idContext index for the section database
section_idThe ID of section to find
Returns
The pointer of section information if matched section is found NULL if failed to find matched section

Definition at line 242 of file xran_cp_api.c.

◆ xran_cp_free_sectiondb()

int xran_cp_free_sectiondb ( void *  pHandle)

Release and free section database.

Parameters
pHandlehandle for xRAN interface, currently not being used
Returns
XRAN_STATUS_SUCCESS on success

Definition at line 89 of file xran_cp_api.c.

◆ xran_cp_getsize_section_info()

int32_t xran_cp_getsize_section_info ( void *  pHandle,
uint8_t  dir,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id 
)

Get the size of stored entries for the database of eAxC by given information.

Parameters
pHandlehandle for xRAN interface, currently not being used
dirThe direction of the section to find
cc_idThe CC ID of the section to find
ruport_idRU port ID of the section to find
ctx_idContext index for the section database
Returns
The size of stored entries -1 if failed to find matched database

Definition at line 334 of file xran_cp_api.c.

◆ xran_cp_init_sectiondb()

int xran_cp_init_sectiondb ( void *  pHandle)

Initialize section database. Allocate required memory space to store section information. Each eAxC allocates dedicated storage and the entry size is the maximum number of sections. Total entry size : number of CC * number of antenna * max number of sections * 2(direction)

Parameters
pHandlehandle for xRAN interface, currently not being used
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_RESOURCE, if memory is not enough to allocate database area

Definition at line 66 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_cp_iterate_section_info()

struct xran_section_info* xran_cp_iterate_section_info ( void *  pHandle,
uint8_t  dir,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id,
uint32_t *  next 
)

Iterate each section information of C-Plane from the database of eAxC by given information.

Parameters
pHandlehandle for xRAN interface, currently not being used
dirThe direction of the section to find
cc_idThe CC ID of the section to find
ruport_idRU port ID of the section to find
ctx_idContext index for the section database
nextThe pointer to store the position of next entry
Returns
The pointer of section information in the list NULL if reached at the end of the list

Definition at line 291 of file xran_cp_api.c.

◆ xran_cp_populate_section_ext_1()

int32_t xran_cp_populate_section_ext_1 ( int8_t *  p_ext1_dst,
uint16_t  ext1_dst_len,
int16_t *  p_bfw_iq_src,
uint16_t  rbNumber,
uint16_t  bfwNumber,
uint8_t  bfwiqWidth,
uint8_t  bfwCompMeth 
)

compression method

populate one extType=1 section with BFW for 1 RB

Parameters
p_ext1_dstdestination buffer
ext1_dst_lendest buffer size
p_bfw_iq_srcsource buffer of IQs
rbNumnumber RBs to ext1 chain
bfwNumPerRbnumber of bf weights in this set of sections
bfwiqWidthbit size of IQs

Definition at line 387 of file xran_cp_api.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_cp_reset_section_info()

int xran_cp_reset_section_info ( void *  pHandle,
uint8_t  dir,
uint8_t  cc_id,
uint8_t  ruport_id,
uint8_t  ctx_id 
)

Reset a database of eAxC by given information.

Parameters
pHandlehandle for xRAN interface, currently not being used
dirThe direction of the section to find
cc_idThe CC ID of the section to find
ruport_idRU port ID of the section to find
ctx_idContext index for the section database
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_INVALID_PARM if failed to find matched database

Definition at line 366 of file xran_cp_api.c.

◆ xran_dump_sectiondb()

int xran_dump_sectiondb ( void  )

Definition at line 381 of file xran_cp_api.c.

◆ xran_get_cplength()

uint16_t xran_get_cplength ( int  CP_length)
inline

Definition at line 542 of file xran_cp_api.c.

◆ xran_get_freqoffset()

int32_t xran_get_freqoffset ( int32_t  freqOffset,
int32_t  scs 
)
inline

Definition at line 550 of file xran_cp_api.c.

◆ xran_parse_cp_pkt()

int xran_parse_cp_pkt ( struct rte_mbuf *  mbuf,
struct xran_cp_gen_params result,
struct xran_recv_packet_info pkt_info 
)

Parse a C-Plane packet (for RU emulation) Transport layer fragmentation is not supported.

Parameters
mbufThe pointer of the packet buffer to be parsed
paramsThe pointer of structure to store the information of parsed packet
eaxcThe pointer of sturcture to store the decomposed information of ecpriRtcid/ecpriPcid
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_INVALID_PACKET if failed to parse the packet

Definition at line 1749 of file xran_cp_api.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_parse_section_ext1()

int xran_parse_section_ext1 ( void *  ext,
struct xran_sectionext1_info extinfo 
)

Definition at line 1416 of file xran_cp_api.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_parse_section_ext2()

int xran_parse_section_ext2 ( void *  ext,
struct xran_sectionext2_info extinfo 
)

Definition at line 1497 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_parse_section_ext4()

int xran_parse_section_ext4 ( void *  ext,
struct xran_sectionext4_info extinfo 
)

Definition at line 1579 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_parse_section_ext5()

int xran_parse_section_ext5 ( void *  ext,
struct xran_sectionext5_info extinfo 
)

Definition at line 1606 of file xran_cp_api.c.

Here is the caller graph for this function:

◆ xran_parse_section_extension()

int xran_parse_section_extension ( struct rte_mbuf *  mbuf,
void *  ext,
struct xran_section_gen_info section 
)

Definition at line 1668 of file xran_cp_api.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_prepare_ctrl_pkt()

int xran_prepare_ctrl_pkt ( struct rte_mbuf *  mbuf,
struct xran_cp_gen_params params,
uint8_t  CC_ID,
uint8_t  Ant_ID,
uint8_t  seq_id 
)

Create a C-Plane packet Transport layer fragmentation is not supported.

Parameters
mbufA pointer to the packet buffer
paramsA porinter to the information to generate a C-Plane packet
CC_IDComponent Carrier ID for this C-Plane message
Ant_IDAntenna ID(RU Port ID) for this C-Plane message
seq_idSequence ID for this C-Plane message
Returns
XRAN_STATUS_SUCCESS on success XRAN_STATUS_RESOURCE if failed to allocate the space to packet buffer XRAN_STATUS_INVALID_PARM if section type is invalid

Definition at line 1381 of file xran_cp_api.c.

Here is the call graph for this function:
Here is the caller graph for this function: