X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fapi_5g%2Fsource%2Finclude%2Fnr5g_fapi_framework.h;h=479c5f09fb5bcb0965e47fb99d3c8cc93b86c6a3;hb=refs%2Fheads%2Fmaster;hp=fea31bf701574009bc88fbd80292f1cc75ca0c8e;hpb=9d66fca5c45c8b3e0d6eab6d51a90c8e9d2614dc;p=o-du%2Fphy.git diff --git a/fapi_5g/source/include/nr5g_fapi_framework.h b/fapi_5g/source/include/nr5g_fapi_framework.h index fea31bf..479c5f0 100644 --- a/fapi_5g/source/include/nr5g_fapi_framework.h +++ b/fapi_5g/source/include/nr5g_fapi_framework.h @@ -1,6 +1,6 @@ /****************************************************************************** * -* Copyright (c) 2019 Intel. +* Copyright (c) 2021 Intel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,9 +34,13 @@ // FAPI CONFIG.request parameters typedef struct _nr5g_fapi_phy_config { - uint8_t n_nr_of_rx_ant; uint16_t phy_cell_id; -} nr5g_fapi_phy_config_t, *pnr5g_fapi_phy_config_t; + uint8_t n_nr_of_rx_ant; + uint8_t use_vendor_EpreXSSB; + uint8_t sub_c_common; + uint8_t pad[3]; +} nr5g_fapi_phy_config_t, +*pnr5g_fapi_phy_config_t; typedef struct _nr5g_fapi_rach_info { uint16_t phy_cell_id; @@ -62,6 +66,7 @@ typedef struct _nr5g_fapi_ul_slot_info { uint16_t cookie; //set this to frame_no at UL_TTI.Request and compare the //same during uplink indications. uint8_t slot_no; + uint8_t symbol_no; uint8_t num_ulsch; uint8_t num_ulcch; uint8_t num_srs; @@ -177,22 +182,34 @@ typedef struct _nr5g_fapi_phy_instance { nr5g_fapi_phy_config_t phy_config; // place holder to store, // parameters from config request nr5g_fapi_stats_t stats; - nr5g_fapi_ul_slot_info_t ul_slot_info[MAX_UL_SLOT_INFO_COUNT]; -} nr5g_fapi_phy_instance_t, *p_nr5g_fapi_phy_instance_t; + nr5g_fapi_ul_slot_info_t ul_slot_info[FAPI_MAX_SLOT_INFO_URLLC][MAX_UL_SLOT_INFO_COUNT][MAX_UL_SYMBOL_INFO_COUNT]; +} nr5g_fapi_phy_instance_t, +*p_nr5g_fapi_phy_instance_t; + +typedef struct _nr5g_fapi_urllc_thread_params_t { + void *p_urllc_list_elem; + pthread_mutex_t lock; + sem_t urllc_sem_process; + sem_t urllc_sem_done; +} nr5g_fapi_urllc_thread_params_t; // Phy Context typedef struct _nr5g_fapi_phy_context { uint8_t num_phy_instance; uint8_t mac2phy_worker_core_id; uint8_t phy2mac_worker_core_id; - pthread_t phy2mac_tid; - pthread_t mac2phy_tid; - uint64_t process_exit; + uint8_t urllc_mac2phy_worker_core_id; + uint8_t urllc_phy2mac_worker_core_id; + nr5g_fapi_urllc_thread_params_t urllc_mac2phy_params; + nr5g_fapi_urllc_thread_params_t urllc_phy2mac_params; + bool is_urllc_enabled; + volatile uint64_t process_exit; nr5g_fapi_phy_instance_t phy_instance[FAPI_MAX_PHY_INSTANCES]; -} nr5g_fapi_phy_ctx_t, *p_nr5g_fapi_phy_ctx_t; +} nr5g_fapi_phy_ctx_t, +*p_nr5g_fapi_phy_ctx_t; // Function Declarations -inline p_nr5g_fapi_phy_ctx_t nr5g_fapi_get_nr5g_fapi_phy_ctx( +p_nr5g_fapi_phy_ctx_t nr5g_fapi_get_nr5g_fapi_phy_ctx( ); uint8_t nr5g_fapi_framework_init( ); @@ -208,12 +225,25 @@ void *nr5g_fapi_phy2mac_thread_func( void *config); void *nr5g_fapi_mac2phy_thread_func( void *config); +void *nr5g_fapi_urllc_mac2phy_thread_func( + void *config); +void *nr5g_fapi_urllc_phy2mac_thread_func( + void *config); nr5g_fapi_ul_slot_info_t *nr5g_fapi_get_ul_slot_info( + bool is_urllc, uint16_t frame_no, - uint8_t slot_no, + uint16_t slot_no, + uint8_t symbol_no, p_nr5g_fapi_phy_instance_t p_phy_instance); void nr5g_fapi_set_ul_slot_info( uint16_t frame_no, - uint8_t slot_no, + uint16_t slot_no, + uint8_t symbol_no, nr5g_fapi_ul_slot_info_t * p_ul_slot_info); +void nr5g_fapi_init_thread(uint8_t worker_core_id); +void nr5g_fapi_urllc_thread_callback( + void *p_list_elem, + nr5g_fapi_urllc_thread_params_t* urllc_params); +void nr5g_fapi_clean( + p_nr5g_fapi_phy_instance_t p_phy_instance); #endif // _NR5G_FAPI_FRAMEWORK_H_