develop&-nr current as of 22.7.19 & OAI fully ready for testing
This commit is contained in:
@@ -35,15 +35,15 @@
|
||||
#include "common/config/config_paramdesc.h"
|
||||
#include "RRC_paramsvalues.h"
|
||||
|
||||
#define ENB_CONFIG_STRING_CC_NODE_FUNCTION "node_function"
|
||||
#define ENB_CONFIG_STRING_CC_NODE_TIMING "node_timing"
|
||||
#define ENB_CONFIG_STRING_CC_NODE_SYNCH_REF "node_synch_ref"
|
||||
#define ENB_CONFIG_STRING_CC_NODE_FUNCTION "node_function"
|
||||
#define ENB_CONFIG_STRING_CC_NODE_TIMING "node_timing"
|
||||
#define ENB_CONFIG_STRING_CC_NODE_SYNCH_REF "node_synch_ref"
|
||||
|
||||
// OTG config per ENB-UE DL
|
||||
#define ENB_CONF_STRING_OTG_CONFIG "otg_config"
|
||||
#define ENB_CONF_STRING_OTG_UE_ID "ue_id"
|
||||
#define ENB_CONF_STRING_OTG_APP_TYPE "app_type"
|
||||
#define ENB_CONF_STRING_OTG_BG_TRAFFIC "bg_traffic"
|
||||
#define ENB_CONF_STRING_OTG_CONFIG "otg_config"
|
||||
#define ENB_CONF_STRING_OTG_UE_ID "ue_id"
|
||||
#define ENB_CONF_STRING_OTG_APP_TYPE "app_type"
|
||||
#define ENB_CONF_STRING_OTG_BG_TRAFFIC "bg_traffic"
|
||||
|
||||
#ifdef LIBCONFIG_LONG
|
||||
#define libconfig_int long
|
||||
@@ -92,6 +92,7 @@ typedef enum {
|
||||
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
|
||||
#define CONFIG_STRING_RU_SF_EXTENSION "sf_extension"
|
||||
#define CONFIG_STRING_RU_END_OF_BURST_DELAY "end_of_burst_delay"
|
||||
#define CONFIG_STRING_RU_OTA_SYNC_ENABLE "ota_sync_enabled"
|
||||
|
||||
#define RU_LOCAL_IF_NAME_IDX 0
|
||||
#define RU_LOCAL_ADDRESS_IDX 1
|
||||
@@ -116,6 +117,7 @@ typedef enum {
|
||||
#define RU_SDR_CLK_SRC 20
|
||||
#define RU_SF_EXTENSION_IDX 21
|
||||
#define RU_END_OF_BURST_DELAY_IDX 22
|
||||
#define RU_OTA_SYNC_ENABLE_IDX 23
|
||||
|
||||
|
||||
|
||||
@@ -147,6 +149,7 @@ typedef enum {
|
||||
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_RU_OTA_SYNC_ENABLE, NULL, 0, strptr:NULL, defstrval:"no", TYPE_STRING, 0}, \
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -83,36 +83,36 @@ typedef struct band_info_s {
|
||||
|
||||
|
||||
static const eutra_bandentry_t eutra_bandtable[] = {
|
||||
{1, 19200, 19800, 21100, 21700, 0},
|
||||
{2, 18500, 19100, 19300, 19900, 6000},
|
||||
{3, 17100, 17850, 18050, 18800, 12000},
|
||||
{4, 17100, 17550, 21100, 21550, 19500},
|
||||
{5, 8240, 8490, 8690, 8940, 24000},
|
||||
{6, 8300, 8400, 8750, 8850, 26500},
|
||||
{7, 25000, 25700, 26200, 26900, 27500},
|
||||
{8, 8800, 9150, 9250, 9600, 34500},
|
||||
{9, 17499, 17849, 18449, 18799, 38000},
|
||||
{1, 19200, 19800, 21100, 21700, 0 },
|
||||
{2, 18500, 19100, 19300, 19900, 6000 },
|
||||
{3, 17100, 17850, 18050, 18800, 12000},
|
||||
{4, 17100, 17550, 21100, 21550, 19500},
|
||||
{5, 8240, 8490, 8690, 8940, 24000},
|
||||
{6, 8300, 8400, 8750, 8850, 26500},
|
||||
{7, 25000, 25700, 26200, 26900, 27500},
|
||||
{8, 8800, 9150, 9250, 9600, 34500},
|
||||
{9, 17499, 17849, 18449, 18799, 38000},
|
||||
{10, 17100, 17700, 21100, 21700, 41500},
|
||||
{11, 14279, 14529, 14759, 15009, 47500},
|
||||
{12, 6980, 7160, 7280, 7460, 50100},
|
||||
{13, 7770, 7870, 7460, 7560, 51800},
|
||||
{14, 7880, 7980, 7580, 7680, 52800},
|
||||
{17, 7040, 7160, 7340, 7460, 57300},
|
||||
{18, 8150, 9650, 8600, 10100, 58500},
|
||||
{19, 8300, 8450, 8750, 8900, 60000},
|
||||
{20, 8320, 8620, 7910, 8210, 61500},
|
||||
{12, 6980, 7160, 7280, 7460, 50100},
|
||||
{13, 7770, 7870, 7460, 7560, 51800},
|
||||
{14, 7880, 7980, 7580, 7680, 52800},
|
||||
{17, 7040, 7160, 7340, 7460, 57300},
|
||||
{18, 8150, 9650, 8600, 10100, 58500},
|
||||
{19, 8300, 8450, 8750, 8900, 60000},
|
||||
{20, 8320, 8620, 7910, 8210, 61500},
|
||||
{21, 14479, 14629, 14959, 15109, 64500},
|
||||
{22, 34100, 34900, 35100, 35900, 66000},
|
||||
{23, 20000, 20200, 21800, 22000, 75000},
|
||||
{24, 16126, 16605, 15250, 15590, 77000},
|
||||
{25, 18500, 19150, 19300, 19950, 80400},
|
||||
{26, 8140, 8490, 8590, 8940, 86900},
|
||||
{27, 8070, 8240, 8520, 8690, 90400},
|
||||
{28, 7030, 7580, 7580, 8130, 92100},
|
||||
{29, 0, 0, 7170, 7280, 96600},
|
||||
{26, 8140, 8490, 8590, 8940, 86900},
|
||||
{27, 8070, 8240, 8520, 8690, 90400},
|
||||
{28, 7030, 7580, 7580, 8130, 92100},
|
||||
{29, 0, 0, 7170, 7280, 96600},
|
||||
{30, 23050, 23250, 23500, 23600, 97700},
|
||||
{31, 45250, 34900, 46250, 35900, 98700},
|
||||
{32, 0, 0, 14520, 14960, 99200},
|
||||
{32, 0, 0, 14520, 14960, 99200},
|
||||
{33, 19000, 19200, 19000, 19200, 36000},
|
||||
{34, 20100, 20250, 20100, 20250, 36200},
|
||||
{35, 18500, 19100, 18500, 19100, 36350},
|
||||
@@ -124,13 +124,13 @@ static const eutra_bandentry_t eutra_bandtable[] = {
|
||||
{41, 24960, 26900, 24960, 26900, 39650},
|
||||
{42, 34000, 36000, 34000, 36000, 41590},
|
||||
{43, 36000, 38000, 36000, 38000, 43590},
|
||||
{44, 7030, 8030, 7030, 8030, 45590},
|
||||
{44, 7030, 8030, 7030, 8030, 45590},
|
||||
{45, 14470, 14670, 14470, 14670, 46590},
|
||||
{46, 51500, 59250, 51500, 59250, 46790},
|
||||
{65, 19200, 20100, 21100, 22000, 65536},
|
||||
{66, 17100, 18000, 21100, 22000, 66436},
|
||||
{67, 0, 0, 7380, 7580, 67336},
|
||||
{68, 6980, 7280, 7530, 7830, 67536}
|
||||
{67, 0, 0, 7380, 7580, 67336},
|
||||
{68, 6980, 7280, 7530, 7830, 67536}
|
||||
};
|
||||
|
||||
|
||||
@@ -216,7 +216,8 @@ uint32_t from_earfcn(int eutra_bandP, uint32_t dl_earfcn) {
|
||||
}
|
||||
|
||||
|
||||
int32_t get_uldl_offset(int eutra_bandP) {
|
||||
int32_t get_uldl_offset(int eutra_bandP)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BANDTABLE_SIZE && eutra_bandtable[i].band != eutra_bandP; i++);
|
||||
|
||||
@@ -38,16 +38,16 @@ void mac_top_init_gNB(void);
|
||||
|
||||
void config_common(int Mod_idP,
|
||||
int CC_idP,
|
||||
int Nid_cell,
|
||||
int Nid_cell,
|
||||
int nr_bandP,
|
||||
uint64_t ssb_pattern,
|
||||
uint16_t ssb_periodicity,
|
||||
uint64_t ssb_pattern,
|
||||
uint16_t ssb_periodicity,
|
||||
uint64_t dl_CarrierFreqP,
|
||||
uint32_t dl_BandwidthP);
|
||||
|
||||
int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
||||
int CC_id,
|
||||
int cellid,
|
||||
int cellid,
|
||||
int p_gNB,
|
||||
int nr_bandP,
|
||||
uint64_t ssb_pattern,
|
||||
@@ -55,8 +55,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
||||
uint64_t dl_CarrierFreqP,
|
||||
int dl_BandwidthP,
|
||||
NR_BCCH_BCH_Message_t *mib,
|
||||
NR_ServingCellConfigCommon_t *servingcellconfigcommon
|
||||
);
|
||||
NR_ServingCellConfigCommon_t *servingcellconfigcommon);
|
||||
|
||||
int is_nr_UL_slot(NR_COMMON_channels_t * ccP, int slotP);
|
||||
|
||||
@@ -65,14 +64,10 @@ void clear_nr_nfapi_information(gNB_MAC_INST * gNB,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP);
|
||||
|
||||
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP);
|
||||
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP);
|
||||
|
||||
void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP);
|
||||
|
||||
|
||||
|
||||
void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP);
|
||||
@@ -81,30 +76,29 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t slotP);
|
||||
|
||||
|
||||
void nr_configure_css_dci_initial(nfapi_nr_dl_config_pdcch_parameters_rel15_t* pdcch_params,
|
||||
nr_scs_e scs_common,
|
||||
nr_scs_e pdcch_scs,
|
||||
nr_frequency_range_e freq_range,
|
||||
uint8_t rmsi_pdcch_config,
|
||||
uint8_t ssb_idx,
|
||||
uint8_t k_ssb,
|
||||
uint16_t sfn_ssb,
|
||||
uint8_t n_ssb,
|
||||
uint16_t nb_slots_per_frame,
|
||||
uint16_t N_RB);
|
||||
nr_scs_e scs_common,
|
||||
nr_scs_e pdcch_scs,
|
||||
nr_frequency_range_e freq_range,
|
||||
uint8_t rmsi_pdcch_config,
|
||||
uint8_t ssb_idx,
|
||||
uint8_t k_ssb,
|
||||
uint16_t sfn_ssb,
|
||||
uint8_t n_ssb,
|
||||
uint16_t nb_slots_per_frame,
|
||||
uint16_t N_RB);
|
||||
|
||||
int nr_is_dci_opportunity(nfapi_nr_search_space_t search_space,
|
||||
nfapi_nr_coreset_t coreset,
|
||||
uint16_t frame,
|
||||
uint16_t slot,
|
||||
nfapi_nr_config_request_t cfg);
|
||||
nfapi_nr_coreset_t coreset,
|
||||
uint16_t frame,
|
||||
uint16_t slot,
|
||||
nfapi_nr_config_request_t cfg);
|
||||
|
||||
void nr_configure_dci_from_pdcch_config(nfapi_nr_dl_config_pdcch_parameters_rel15_t* pdcch_params,
|
||||
nfapi_nr_coreset_t* coreset,
|
||||
nfapi_nr_search_space_t* search_space,
|
||||
nfapi_nr_config_request_t cfg,
|
||||
uint16_t N_RB);
|
||||
nfapi_nr_coreset_t* coreset,
|
||||
nfapi_nr_search_space_t* search_space,
|
||||
nfapi_nr_config_request_t cfg,
|
||||
uint16_t N_RB);
|
||||
|
||||
int get_dlscs(nfapi_nr_config_request_t *cfg);
|
||||
|
||||
@@ -116,20 +110,22 @@ int to_absslot(nfapi_nr_config_request_t *cfg,int frame,int slot);
|
||||
|
||||
int get_symbolsperslot(nfapi_nr_config_request_t *cfg);
|
||||
|
||||
void get_band(uint32_t downlink_frequency, uint8_t *current_band, int32_t *current_offset, lte_frame_type_t *current_type);
|
||||
void get_band(uint32_t downlink_frequency, uint8_t *current_band, int32_t *current_offset, lte_frame_type_t *current_type);
|
||||
|
||||
uint64_t from_nrarfcn(int nr_bandP, uint32_t dl_nrarfcn);
|
||||
|
||||
uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint32_t bw);
|
||||
|
||||
int32_t get_nr_uldl_offset(int nr_bandP);
|
||||
|
||||
void config_nr_mib(int Mod_idP,
|
||||
int CC_idP,
|
||||
int p_gNBP,
|
||||
int subCarrierSpacingCommon,
|
||||
uint32_t ssb_SubcarrierOffset,
|
||||
int dmrs_TypeA_Position,
|
||||
uint32_t pdcch_ConfigSIB1,
|
||||
int cellBarred,
|
||||
int intraFreqReselection);
|
||||
int CC_idP,
|
||||
int p_gNBP,
|
||||
int subCarrierSpacingCommon,
|
||||
uint32_t ssb_SubcarrierOffset,
|
||||
int dmrs_TypeA_Position,
|
||||
uint32_t pdcch_ConfigSIB1,
|
||||
int cellBarred,
|
||||
int intraFreqReselection);
|
||||
|
||||
#endif /*__LAYER2_NR_MAC_PROTO_H__*/
|
||||
|
||||
@@ -67,8 +67,13 @@ nr_bandentry_t nr_bandtable[] = {
|
||||
{86, 1710000, 1785000, 000, 000, 20, 342000}
|
||||
};
|
||||
|
||||
void get_band(uint32_t downlink_frequency, uint8_t *current_band, int32_t *current_offset, lte_frame_type_t *current_type) {
|
||||
#define NR_BANDTABLE_SIZE (sizeof(nr_bandtable)/sizeof(nr_bandentry_t))
|
||||
|
||||
void get_band(uint32_t downlink_frequency,
|
||||
uint8_t *current_band,
|
||||
int32_t *current_offset,
|
||||
lte_frame_type_t *current_type)
|
||||
{
|
||||
int ind;
|
||||
int64_t dl_freq_khz = downlink_frequency/1000;
|
||||
for ( ind=0;
|
||||
@@ -96,9 +101,10 @@ void get_band(uint32_t downlink_frequency, uint8_t *current_band, int32_t *c
|
||||
|
||||
}
|
||||
|
||||
uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint32_t bw)
|
||||
uint32_t to_nrarfcn(int nr_bandP,
|
||||
uint64_t dl_CarrierFreq,
|
||||
uint32_t bw)
|
||||
{
|
||||
|
||||
uint64_t dl_CarrierFreq_by_1k = dl_CarrierFreq / 1000;
|
||||
int bw_kHz = bw / 1000;
|
||||
|
||||
@@ -112,8 +118,7 @@ uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint32_t bw)
|
||||
"Band %d, bw %u : DL carrier frequency %llu kHz < %llu\n",
|
||||
nr_bandP, bw, (long long unsigned int)dl_CarrierFreq_by_1k,
|
||||
(long long unsigned int)nr_bandtable[i].dl_min);
|
||||
AssertFatal(dl_CarrierFreq_by_1k <=
|
||||
(nr_bandtable[i].dl_max - bw_kHz),
|
||||
AssertFatal(dl_CarrierFreq_by_1k <= (nr_bandtable[i].dl_max - bw_kHz),
|
||||
"Band %d, dl_CarrierFreq %llu bw %u: DL carrier frequency %llu kHz > %llu\n",
|
||||
nr_bandP, (long long unsigned int)dl_CarrierFreq,bw, (long long unsigned int)dl_CarrierFreq_by_1k,
|
||||
(long long unsigned int)(nr_bandtable[i].dl_max - bw_kHz));
|
||||
@@ -130,9 +135,9 @@ uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint32_t bw)
|
||||
}
|
||||
|
||||
|
||||
uint64_t from_nrarfcn(int nr_bandP, uint32_t dl_nrarfcn)
|
||||
uint64_t from_nrarfcn(int nr_bandP,
|
||||
uint32_t dl_nrarfcn)
|
||||
{
|
||||
|
||||
int i;
|
||||
int deltaFglobal;
|
||||
|
||||
@@ -144,5 +149,16 @@ uint64_t from_nrarfcn(int nr_bandP, uint32_t dl_nrarfcn)
|
||||
AssertFatal(dl_nrarfcn>=nr_bandtable[i].N_OFFs_DL,"dl_nrarfcn %u < N_OFFs_DL %llu\n",dl_nrarfcn, (long long unsigned int)nr_bandtable[i].N_OFFs_DL);
|
||||
|
||||
return 1000*(nr_bandtable[i].dl_min + (dl_nrarfcn - nr_bandtable[i].N_OFFs_DL) * deltaFglobal);
|
||||
|
||||
}
|
||||
|
||||
|
||||
int32_t get_nr_uldl_offset(int nr_bandP)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NR_BANDTABLE_SIZE && nr_bandtable[i].band != nr_bandP; i++);
|
||||
|
||||
AssertFatal(i < NR_BANDTABLE_SIZE, "i %d >= BANDTABLE_SIZE %ld\n", i, NR_BANDTABLE_SIZE);
|
||||
|
||||
return (nr_bandtable[i].dl_min - nr_bandtable[i].ul_min);
|
||||
}
|
||||
|
||||
@@ -74,8 +74,9 @@ typedef struct {
|
||||
} pdcp_params_t;
|
||||
|
||||
|
||||
|
||||
#define PDCP_USE_NETLINK ( get_pdcp_optmask() & PDCP_USE_NETLINK_BIT)
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
#define PDCP_USE_NETLINK ( get_pdcp_optmask() & PDCP_USE_NETLINK_BIT)
|
||||
#endif
|
||||
#define LINK_ENB_PDCP_TO_IP_DRIVER ( get_pdcp_optmask() & LINK_ENB_PDCP_TO_IP_DRIVER_BIT)
|
||||
#define LINK_ENB_PDCP_TO_GTPV1U ( get_pdcp_optmask() & LINK_ENB_PDCP_TO_GTPV1U_BIT)
|
||||
#define UE_NAS_USE_TUN ( get_pdcp_optmask() & UE_NAS_USE_TUN_BIT)
|
||||
|
||||
@@ -51,13 +51,13 @@
|
||||
#include <linux/in.h>
|
||||
#include <net/ndisc.h>
|
||||
|
||||
|
||||
|
||||
#include "constant.h"
|
||||
#include "platform_types.h"
|
||||
#include "sap.h"
|
||||
|
||||
#define MAKE_VERSION(a,b,c) ((a)*256+(b)*16+(c))
|
||||
#ifndef MAKE_VERSION
|
||||
#define MAKE_VERSION(a,b,c) ((a)*256+(b)*16+(c))
|
||||
#endif
|
||||
|
||||
typedef struct ue_ip_priv_s {
|
||||
int irq;
|
||||
|
||||
@@ -158,7 +158,7 @@ typedef struct UE_RRC_INFO_NR_s {
|
||||
uint8_t SIB1systemInfoValueTag;
|
||||
uint32_t SIStatus;
|
||||
uint32_t SIcnt;
|
||||
#if defined(Rel10) || defined(Rel14)
|
||||
#if (NR_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
uint8_t MCCHStatus[8]; // MAX_MBSFN_AREA
|
||||
#endif
|
||||
uint8_t SIwindowsize; //!< Corresponds to the SIB1 si-WindowLength parameter. The unit is ms. Possible values are (final): 1,2,5,10,15,20,40
|
||||
@@ -260,7 +260,7 @@ typedef struct SRB_INFO_TABLE_ENTRY_NR_s {
|
||||
|
||||
typedef struct gNB_RRC_UE_s {
|
||||
uint8_t primaryCC_id;
|
||||
#if defined(Rel10) || defined(Rel14)
|
||||
#if (NR_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
SCellToAddMod_r10_t sCell_config[2];
|
||||
#endif
|
||||
NR_SRB_ToAddModList_t* SRB_configList;
|
||||
|
||||
Reference in New Issue
Block a user