merge latest develop
This commit is contained in:
@@ -42,6 +42,9 @@
|
||||
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
/*Array containing the Agent-MAC interfaces*/
|
||||
AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB];
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
#include "flexran_agent_mac_internal.h"
|
||||
#include "flexran_agent_mac_slice_verification.h"
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
extern SLIST_HEAD(flexran_so_handle,
|
||||
flexran_agent_so_handle_s) flexran_handles[NUM_MAX_ENB];
|
||||
|
||||
|
||||
@@ -56,10 +56,14 @@
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_PORTD "local_s_portd"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_PORTD "remote_s_portd"
|
||||
#define CONFIG_STRING_MACRLC_SCHED_MODE "scheduler_mode"
|
||||
#define CONFIG_MACRLC_PUSCH10xSNR "puSch10xSnr"
|
||||
#define CONFIG_MACRLC_PUCCH10xSNR "puCch10xSnr"
|
||||
#define CONFIG_STRING_MACRLC_PUSCH10xSNR "puSch10xSnr"
|
||||
#define CONFIG_STRING_MACRLC_PUCCH10xSNR "puCch10xSnr"
|
||||
#define CONFIG_STRING_MACRLC_DEFAULT_SCHED_DL_ALGO "default_sched_dl_algo"
|
||||
|
||||
#define CONFIG_STRING_MACRLC_UE_MULTIPLE_MAX "ue_multiple_max"
|
||||
#define CONFIG_STRING_MACRLC_USE_MCS_OFFSET "use_mcs_offset"
|
||||
#define CONFIG_STRING_MACRLC_BLER_TARGET_LOWER "bler_target_lower"
|
||||
#define CONFIG_STRING_MACRLC_BLER_TARGET_UPPER "bler_target_upper"
|
||||
#define CONFIG_STRING_MACRLC_MAX_UL_RB_INDEX "max_ul_rb_index"
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* MacRLC configuration parameters */
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
@@ -83,10 +87,15 @@
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_PORTD, NULL, 0, uptr:NULL, defintval:50021, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_S_PORTD, NULL, 0, uptr:NULL, defintval:50021, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_SCHED_MODE, NULL, 0, strptr:NULL, defstrval:"default", TYPE_STRING, 0}, \
|
||||
{CONFIG_MACRLC_PUSCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
{CONFIG_MACRLC_PUCCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_DEFAULT_SCHED_DL_ALGO, NULL, 0, strptr:NULL, defstrval:"round_robin_dl", TYPE_STRING, 0}, \
|
||||
}
|
||||
{CONFIG_STRING_MACRLC_PUSCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_PUCCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_DEFAULT_SCHED_DL_ALGO, NULL, 0, strptr:NULL, defstrval:"round_robin_dl", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_UE_MULTIPLE_MAX, NULL, 0, iptr:NULL, defintval:4, TYPE_INT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_USE_MCS_OFFSET, NULL, 0, iptr:NULL, defintval:1, TYPE_INT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_BLER_TARGET_LOWER, NULL, 0, dblptr:NULL, defdblval:.5, TYPE_DOUBLE, 0}, \
|
||||
{CONFIG_STRING_MACRLC_BLER_TARGET_UPPER, NULL, 0, dblptr:NULL, defdblval:2, TYPE_DOUBLE, 0}, \
|
||||
{CONFIG_STRING_MACRLC_MAX_UL_RB_INDEX, NULL, 0, iptr:NULL, defintval:22, TYPE_INT, 0}}
|
||||
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define MACRLC_LOCAL_N_IF_NAME_IDX 2
|
||||
@@ -108,6 +117,11 @@
|
||||
#define MACRLC_PUSCH10xSNR_IDX 18
|
||||
#define MACRLC_PUCCH10xSNR_IDX 19
|
||||
#define MACRLC_DEFAULT_SCHED_DL_ALGO_IDX 20
|
||||
#define MACRLC_UE_MULTIPLE_MAX_IDX 21
|
||||
#define MACRLC_USE_MCS_OFFSET_IDX 22
|
||||
#define MACRLC_BLER_TARGET_LOWER_IDX 23
|
||||
#define MACRLC_BLER_TARGET_UPPER_IDX 24
|
||||
#define MACRLC_MAX_UL_RB_INDEX_IDX 25
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -35,6 +35,9 @@
|
||||
#define NBIOT_INTERFACE_SOURCE
|
||||
#include "NB_IoT_interface.h"
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
|
||||
#define NBIOT_MODULENAME "NB_IoT"
|
||||
#include "common/ran_context.h"
|
||||
|
||||
typedef void(*RCConfig_NbIoT_f_t)(RAN_CONTEXT_t *RC);
|
||||
#define NBIOT_RCCONFIG_FNAME "RCConfig_NbIoT"
|
||||
|
||||
@@ -244,6 +244,8 @@ void *eNB_app_task(void *args_p) {
|
||||
|
||||
}
|
||||
|
||||
LOG_I(ENB_APP,"TASK_ENB_APP is ready\n");
|
||||
|
||||
do {
|
||||
// Wait for a message
|
||||
itti_receive_msg (TASK_ENB_APP, &msg_p);
|
||||
|
||||
@@ -64,6 +64,8 @@ extern uint32_t to_earfcn_UL(int eutra_bandP, uint32_t ul_CarrierFreq, uint32_t
|
||||
extern char *parallel_config;
|
||||
extern char *worker_config;
|
||||
|
||||
RAN_CONTEXT_t RC;
|
||||
|
||||
void RCconfig_flexran() {
|
||||
/* get number of eNBs */
|
||||
paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
|
||||
@@ -218,13 +220,26 @@ void RCconfig_macrlc(int macrlc_has_f1[MAX_MAC_INST]) {
|
||||
for (j = 0; j < RC.nb_macrlc_inst; j++) {
|
||||
RC.mac[j]->puSch10xSnr = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCH10xSNR_IDX ].iptr);
|
||||
RC.mac[j]->puCch10xSnr = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCH10xSNR_IDX ].iptr);
|
||||
RC.mac[j]->ue_multiple_max = *(MacRLC_ParamList.paramarray[j][MACRLC_UE_MULTIPLE_MAX_IDX ].iptr);
|
||||
RC.mac[j]->use_mcs_offset = *(MacRLC_ParamList.paramarray[j][MACRLC_USE_MCS_OFFSET_IDX ].iptr);
|
||||
RC.mac[j]->bler_lower = *(MacRLC_ParamList.paramarray[j][MACRLC_BLER_TARGET_LOWER_IDX ].dblptr);
|
||||
RC.mac[j]->bler_upper = *(MacRLC_ParamList.paramarray[j][MACRLC_BLER_TARGET_UPPER_IDX ].dblptr);
|
||||
RC.mac[j]->max_ul_rb_index = *(MacRLC_ParamList.paramarray[j][MACRLC_MAX_UL_RB_INDEX_IDX ].iptr);
|
||||
RC.nb_mac_CC[j] = *(MacRLC_ParamList.paramarray[j][MACRLC_CC_IDX].iptr);
|
||||
|
||||
LOG_I(ENB_APP,"MAC instance %d parameters : pusch_snr %lf, pucch_snr %lf, ue_multiple_max %d, use_mcs_offset %d, bler_lower %lf, bler_upper %lf,max_ul_rb_index %d\n",
|
||||
j,
|
||||
RC.mac[j]->puSch10xSnr/10.0,
|
||||
RC.mac[j]->puCch10xSnr/10.0,
|
||||
RC.mac[j]->ue_multiple_max,
|
||||
RC.mac[j]->use_mcs_offset,
|
||||
RC.mac[j]->bler_lower,
|
||||
RC.mac[j]->bler_upper,
|
||||
RC.mac[j]->max_ul_rb_index);
|
||||
if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_RRC") == 0) {
|
||||
// check number of instances is same as RRC/PDCP
|
||||
printf("Configuring local RRC for MACRLC\n");
|
||||
LOG_I(ENB_APP,"Configuring local RRC for MACRLC\n");
|
||||
} else if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "f1") == 0) {
|
||||
printf("Configuring F1 interfaces for MACRLC\n");
|
||||
LOG_I(ENB_APP,"Configuring F1 interfaces for MACRLC\n");
|
||||
RC.mac[j]->eth_params_n.local_if_name = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
RC.mac[j]->eth_params_n.my_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
RC.mac[j]->eth_params_n.remote_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_ADDRESS_IDX].strptr));
|
||||
@@ -1994,7 +2009,7 @@ int RCconfig_DU_F1(MessageDef *msg_p, uint32_t i) {
|
||||
F1AP_SETUP_REQ (msg_p).nr_mode_info[k].tdd.nrb = rrc->carrier[0].mib.message.dl_Bandwidth;
|
||||
F1AP_SETUP_REQ (msg_p).nr_mode_info[k].tdd.num_frequency_bands = 1;
|
||||
F1AP_SETUP_REQ (msg_p).nr_mode_info[k].tdd.nr_band[0] = rrc->carrier[0].sib1->freqBandIndicator;
|
||||
F1AP_SETUP_REQ (msg_p).nr_mode_info[k].fdd.sul_active = 0;
|
||||
F1AP_SETUP_REQ (msg_p).nr_mode_info[k].tdd.sul_active = 0;
|
||||
} else {
|
||||
LOG_I(ENB_APP,"ngran_DU: Configuring Cell %d for FDD\n",k);
|
||||
F1AP_SETUP_REQ (msg_p).fdd_flag = 1;
|
||||
@@ -2780,12 +2795,13 @@ int RCconfig_X2(MessageDef *msg_p, uint32_t i) {
|
||||
"value of X2ParamList.numelt %d must be lower than X2AP_MAX_NB_ENB_IP_ADDRESS %d value: reconsider to increase X2AP_MAX_NB_ENB_IP_ADDRESS\n",
|
||||
X2ParamList.numelt,X2AP_MAX_NB_ENB_IP_ADDRESS);
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 = 0;
|
||||
|
||||
LOG_I(X2AP,"X2ParamList.numelt %d\n",X2ParamList.numelt);
|
||||
for (l = 0; l < X2ParamList.numelt; l++) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 += 1;
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4_address,*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6_address,*(X2ParamList.paramarray[l][ENB_X2_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
LOG_I(X2AP,"registering with ip : %s\n",*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 0;
|
||||
@@ -2965,7 +2981,7 @@ void extract_and_decode_SI(int inst,int si_ind,uint8_t *si_container,int si_cont
|
||||
eNB_RRC_INST *rrc = RC.rrc[inst];
|
||||
rrc_eNB_carrier_data_t *carrier = &rrc->carrier[0];
|
||||
LTE_BCCH_DL_SCH_Message_t *bcch_message ;
|
||||
AssertFatal(si_ind==0,"Can only handle a single SI block for now\n");
|
||||
AssertFatal(si_ind==2,"Can only handle a single SI block for now\n");
|
||||
LOG_I(ENB_APP, "rrc inst %d: Trying to decode SI block %d @ %p, length %d\n",inst,si_ind,si_container,si_container_length);
|
||||
// point to first SI block
|
||||
bcch_message = &carrier->systemInformation;
|
||||
@@ -3152,15 +3168,19 @@ void handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
|
||||
(check_plmn_identity(carrier, resp->cells_to_activate[j].mcc, resp->cells_to_activate[j].mnc, resp->cells_to_activate[j].mnc_digit_length)>0 &&
|
||||
resp->cells_to_activate[j].nrpci == carrier->physCellId)) {
|
||||
// copy system information and decode it
|
||||
for (si_ind=0; si_ind<resp->cells_to_activate[j].num_SI; si_ind++) {
|
||||
//printf("SI %d size %d: ", si_ind, resp->SI_container_length[j][si_ind]);
|
||||
//for (int n=0;n<resp->SI_container_length[j][si_ind];n++)
|
||||
// printf("%02x ",resp->SI_container[j][si_ind][n]);
|
||||
for (si_ind=2; si_ind<resp->cells_to_activate[j].num_SI + 2; si_ind++) {
|
||||
//printf("SI %d size %d: ", si_ind, resp->cells_to_activate[j].SI_container_length[si_ind]);
|
||||
//for (int n=0;n<resp->cells_to_activate[j].SI_container_length[si_ind];n++)
|
||||
// printf("%02x ",resp->cells_to_activate[j].SI_container[si_ind][n]);
|
||||
//printf("\n");
|
||||
extract_and_decode_SI(i,
|
||||
si_ind,
|
||||
resp->cells_to_activate[j].SI_container[si_ind],
|
||||
resp->cells_to_activate[j].SI_container_length[si_ind]);
|
||||
if (si_ind==6) si_ind=9;
|
||||
if (resp->cells_to_activate[j].SI_container[si_ind] != NULL) {
|
||||
extract_and_decode_SI(i,
|
||||
si_ind,
|
||||
resp->cells_to_activate[j].SI_container[si_ind],
|
||||
resp->cells_to_activate[j].SI_container_length[si_ind]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// perform MAC/L1 common configuration
|
||||
|
||||
@@ -100,7 +100,6 @@ typedef struct ru_config_s {
|
||||
uint8_t if_compress;
|
||||
} ru_config_t;
|
||||
|
||||
extern void RCconfig_RU(void);
|
||||
extern void RCconfig_flexran(void);
|
||||
extern void RCconfig_L1(void);
|
||||
extern void RCconfig_macrlc(int macrlc_has_f1[MAX_MAC_INST]);
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
#include <pthread.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
int agent_task_created = 0;
|
||||
/*
|
||||
* enb agent task mainly wakes up the tx thread for periodic and oneshot messages to the controller
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
||||
#include "rrc_eNB_UE_context.h"
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
/*
|
||||
* message primitives
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
#include "s1ap_eNB_management_procedures.h"
|
||||
#include "openair2/LAYER2/MAC/slicing/slicing.h"
|
||||
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
static inline int phy_is_present(mid_t mod_id, uint8_t cc_id) {
|
||||
return RC.eNB && RC.eNB[mod_id] && RC.eNB[mod_id][cc_id];
|
||||
}
|
||||
@@ -885,7 +888,7 @@ uint8_t flexran_get_rrc_status(mid_t mod_id, rnti_t rnti) {
|
||||
|
||||
if (!ue_context_p) return RRC_INACTIVE;
|
||||
|
||||
return ue_context_p->ue_context.Status;
|
||||
return ue_context_p->ue_context.StatusRrc;
|
||||
}
|
||||
|
||||
uint64_t flexran_get_ue_aggregated_max_bitrate_dl(mid_t mod_id, mid_t ue_id) {
|
||||
|
||||
Reference in New Issue
Block a user