Merge branch 'develop' into ru_rau_enhancement_L1_renaming
Conflicts: ci-scripts/xml_files/enb_ue_usrp210_band7_test_05mhz_tm1.xml cmake_targets/CMakeLists.txt cmake_targets/build_oai openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.calisson.conf targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.memphis.conf targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.nord.conf targets/RT/USER/lte-softmodem.c targets/RT/USER/lte-ue.c
This commit is contained in:
@@ -180,6 +180,9 @@ typedef struct RrcConfigurationReq_s {
|
||||
uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE];
|
||||
uint8_t num_plmn;
|
||||
|
||||
int enable_measurement_reports;
|
||||
int enable_x2;
|
||||
|
||||
uint32_t rrc_inactivity_timer_thres; // for testing, maybe change later
|
||||
|
||||
paging_drx_t default_drx;
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
#include "RRC_config_tools.h"
|
||||
#include "enb_paramdef.h"
|
||||
#include "proto_agent.h"
|
||||
#define RRC_INACTIVITY_THRESH 0
|
||||
|
||||
extern uint16_t sf_ahead;
|
||||
extern void set_parallel_conf(char *parallel_conf);
|
||||
@@ -388,7 +387,9 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
|
||||
for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I)
|
||||
PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]);
|
||||
|
||||
RRC_CONFIGURATION_REQ (msg_p).rrc_inactivity_timer_thres = RRC_INACTIVITY_THRESH; // set to 0 to deactivate
|
||||
//RRC_CONFIGURATION_REQ (msg_p).rrc_inactivity_timer_thres = RRC_INACTIVITY_THRESH; // set to 0 to deactivate
|
||||
// In the configuration file it is in seconds. For RRC it has to be in milliseconds
|
||||
RRC_CONFIGURATION_REQ (msg_p).rrc_inactivity_timer_thres = (*ENBParamList.paramarray[i][ENB_RRC_INACTIVITY_THRES_IDX].uptr) * 1000;
|
||||
RRC_CONFIGURATION_REQ (msg_p).cell_identity = enb_id;
|
||||
RRC_CONFIGURATION_REQ (msg_p).tac = *ENBParamList.paramarray[i][ENB_TRACKING_AREA_CODE_IDX].uptr;
|
||||
AssertFatal(!ENBParamList.paramarray[i][ENB_MOBILE_COUNTRY_CODE_IDX_OLD].strptr
|
||||
@@ -418,6 +419,22 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
|
||||
RRC_CONFIGURATION_REQ(msg_p).mnc[l]);
|
||||
}
|
||||
|
||||
/* measurement reports enabled? */
|
||||
if (ENBParamList.paramarray[i][ENB_ENABLE_MEASUREMENT_REPORTS].strptr != NULL &&
|
||||
*(ENBParamList.paramarray[i][ENB_ENABLE_MEASUREMENT_REPORTS].strptr) != NULL &&
|
||||
!strcmp(*(ENBParamList.paramarray[i][ENB_ENABLE_MEASUREMENT_REPORTS].strptr), "yes"))
|
||||
RRC_CONFIGURATION_REQ (msg_p).enable_measurement_reports = 1;
|
||||
else
|
||||
RRC_CONFIGURATION_REQ (msg_p).enable_measurement_reports = 0;
|
||||
|
||||
/* x2 enabled? */
|
||||
if (ENBParamList.paramarray[i][ENB_ENABLE_X2].strptr != NULL &&
|
||||
*(ENBParamList.paramarray[i][ENB_ENABLE_X2].strptr) != NULL &&
|
||||
!strcmp(*(ENBParamList.paramarray[i][ENB_ENABLE_X2].strptr), "yes"))
|
||||
RRC_CONFIGURATION_REQ (msg_p).enable_x2 = 1;
|
||||
else
|
||||
RRC_CONFIGURATION_REQ (msg_p).enable_x2 = 0;
|
||||
|
||||
// Parse optional physical parameters
|
||||
config_getlist( &CCsParamList,NULL,0,enbpath);
|
||||
LOG_I(RRC,"num component carriers %d \n",CCsParamList.numelt);
|
||||
|
||||
@@ -207,6 +207,9 @@ typedef enum {
|
||||
#define ENB_CONFIG_STRING_LOCAL_S_PORTD "local_s_portd"
|
||||
#define ENB_CONFIG_STRING_REMOTE_S_PORTD "remote_s_portd"
|
||||
#define ENB_CONFIG_STRING_NR_CELLID "nr_cellid"
|
||||
#define ENB_CONFIG_STRING_RRC_INACTIVITY_THRESHOLD "rrc_inactivity_threshold"
|
||||
#define ENB_CONFIG_STRING_MEASUREMENT_REPORTS "enable_measurement_reports"
|
||||
#define ENB_CONFIG_STRING_X2 "enable_x2"
|
||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* cell configuration parameters */
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
@@ -226,7 +229,10 @@ typedef enum {
|
||||
{ENB_CONFIG_STRING_REMOTE_S_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_LOCAL_S_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_REMOTE_S_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_NR_CELLID, NULL, 0, u64ptr:NULL, defint64val:0, TYPE_UINT64, 0}, \
|
||||
{ENB_CONFIG_STRING_NR_CELLID, NULL, 0, u64ptr:NULL, defint64val:0, TYPE_UINT64, 0}, \
|
||||
{ENB_CONFIG_STRING_RRC_INACTIVITY_THRESHOLD, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_MEASUREMENT_REPORTS, NULL, 0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_X2, NULL, 0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
#define ENB_ENB_ID_IDX 0
|
||||
#define ENB_CELL_TYPE_IDX 1
|
||||
@@ -243,6 +249,9 @@ typedef enum {
|
||||
#define ENB_LOCAL_S_PORTD_IDX 12
|
||||
#define ENB_REMOTE_S_PORTD_IDX 13
|
||||
#define ENB_NRCELLID_IDX 14
|
||||
#define ENB_RRC_INACTIVITY_THRES_IDX 15
|
||||
#define ENB_ENABLE_MEASUREMENT_REPORTS 16
|
||||
#define ENB_ENABLE_X2 17
|
||||
|
||||
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
|
||||
#define ENBPARAMS_CHECK { \
|
||||
@@ -260,6 +269,8 @@ typedef enum {
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -127,7 +127,6 @@ int flexran_agent_hello(mid_t mod_id, const void *params, Protocol__FlexranMessa
|
||||
hello_msg->bs_id = flexran_get_bs_id(mod_id);
|
||||
hello_msg->has_bs_id = 1;
|
||||
hello_msg->n_capabilities = flexran_get_capabilities(mod_id, &hello_msg->capabilities);
|
||||
|
||||
*msg = malloc(sizeof(Protocol__FlexranMessage));
|
||||
|
||||
if(*msg == NULL)
|
||||
@@ -296,8 +295,10 @@ int flexran_agent_destroy_enb_config_reply(Protocol__FlexranMessage *msg) {
|
||||
for (int i = 0; i < reply->n_cell_config; i++) {
|
||||
if (reply->cell_config[i]->mbsfn_subframe_config_rfoffset)
|
||||
free(reply->cell_config[i]->mbsfn_subframe_config_rfoffset);
|
||||
|
||||
if (reply->cell_config[i]->mbsfn_subframe_config_rfperiod)
|
||||
free(reply->cell_config[i]->mbsfn_subframe_config_rfperiod);
|
||||
|
||||
if (reply->cell_config[i]->mbsfn_subframe_config_sfalloc)
|
||||
free(reply->cell_config[i]->mbsfn_subframe_config_sfalloc);
|
||||
|
||||
@@ -305,6 +306,7 @@ int flexran_agent_destroy_enb_config_reply(Protocol__FlexranMessage *msg) {
|
||||
for(int j = 0; j < reply->cell_config[i]->si_config->n_si_message; j++) {
|
||||
free(reply->cell_config[i]->si_config->si_message[j]);
|
||||
}
|
||||
|
||||
free(reply->cell_config[i]->si_config->si_message);
|
||||
free(reply->cell_config[i]->si_config);
|
||||
}
|
||||
@@ -319,6 +321,7 @@ int flexran_agent_destroy_enb_config_reply(Protocol__FlexranMessage *msg) {
|
||||
}
|
||||
|
||||
free(reply->cell_config[i]->slice_config->dl);
|
||||
|
||||
for (int j = 0; j < reply->cell_config[i]->slice_config->n_ul; ++j) {
|
||||
if (reply->cell_config[i]->slice_config->ul[j]->n_sorting > 0)
|
||||
free(reply->cell_config[i]->slice_config->ul[j]->sorting);
|
||||
@@ -492,16 +495,15 @@ int flexran_agent_lc_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
goto error;
|
||||
|
||||
lc_config_reply_msg->header = header;
|
||||
|
||||
/* the lc_config_reply entirely depends on MAC except for the
|
||||
* mac_eNB_get_rrc_status() function (which in the current OAI implementation
|
||||
* is reachable if F1 is present). Therefore we check here wether MAC CM is
|
||||
* present and the message gets properly filled if it is or remains empty if
|
||||
* not */
|
||||
lc_config_reply_msg->n_lc_ue_config =
|
||||
flexran_agent_get_mac_xface(mod_id) ? flexran_get_mac_num_ues(mod_id) : 0;
|
||||
|
||||
flexran_agent_get_mac_xface(mod_id) ? flexran_get_mac_num_ues(mod_id) : 0;
|
||||
Protocol__FlexLcUeConfig **lc_ue_config = NULL;
|
||||
|
||||
if (lc_config_reply_msg->n_lc_ue_config > 0) {
|
||||
lc_ue_config = malloc(sizeof(Protocol__FlexLcUeConfig *) * lc_config_reply_msg->n_lc_ue_config);
|
||||
|
||||
@@ -512,6 +514,7 @@ int flexran_agent_lc_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
// Fill the config for each UE
|
||||
for (int i = 0; i < lc_config_reply_msg->n_lc_ue_config; i++) {
|
||||
lc_ue_config[i] = malloc(sizeof(Protocol__FlexLcUeConfig));
|
||||
|
||||
if (!lc_ue_config[i]) goto error;
|
||||
|
||||
protocol__flex_lc_ue_config__init(lc_ue_config[i]);
|
||||
@@ -554,8 +557,7 @@ error:
|
||||
* ************************************
|
||||
*/
|
||||
|
||||
int sort_ue_config(const void *a, const void *b)
|
||||
{
|
||||
int sort_ue_config(const void *a, const void *b) {
|
||||
const Protocol__FlexUeConfig *fa = a;
|
||||
const Protocol__FlexUeConfig *fb = b;
|
||||
|
||||
@@ -563,6 +565,7 @@ int sort_ue_config(const void *a, const void *b)
|
||||
return -1;
|
||||
else if (fa->rnti < fb->rnti)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -584,8 +587,8 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
goto error;
|
||||
|
||||
ue_config_reply_msg->header = header;
|
||||
|
||||
ue_config_reply_msg->n_ue_config = 0;
|
||||
|
||||
if (flexran_agent_get_rrc_xface(mod_id))
|
||||
ue_config_reply_msg->n_ue_config = flexran_get_rrc_num_ues(mod_id);
|
||||
else if (flexran_agent_get_mac_xface(mod_id))
|
||||
@@ -597,7 +600,7 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
const int nmac = flexran_get_mac_num_ues(mod_id);
|
||||
ue_config_reply_msg->n_ue_config = nrrc < nmac ? nrrc : nmac;
|
||||
LOG_E(FLEXRAN_AGENT, "%s(): different numbers of UEs in RRC (%d) and MAC (%d), reporting for %lu UEs\n",
|
||||
__func__, nrrc, nmac, ue_config_reply_msg->n_ue_config);
|
||||
__func__, nrrc, nmac, ue_config_reply_msg->n_ue_config);
|
||||
}
|
||||
|
||||
Protocol__FlexUeConfig **ue_config;
|
||||
@@ -608,8 +611,10 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
if (ue_config == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
rnti_t rntis[ue_config_reply_msg->n_ue_config];
|
||||
flexran_get_rrc_rnti_list(mod_id, rntis, ue_config_reply_msg->n_ue_config);
|
||||
|
||||
for (int i = 0; i < ue_config_reply_msg->n_ue_config; i++) {
|
||||
const rnti_t rnti = rntis[i];
|
||||
ue_config[i] = malloc(sizeof(Protocol__FlexUeConfig));
|
||||
@@ -617,11 +622,13 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
|
||||
|
||||
if (flexran_agent_get_rrc_xface(mod_id))
|
||||
flexran_agent_fill_rrc_ue_config(mod_id, rnti, ue_config[i]);
|
||||
|
||||
if (flexran_agent_get_mac_xface(mod_id)) {
|
||||
const int UE_id = flexran_get_mac_ue_id_rnti(mod_id, rnti);
|
||||
flexran_agent_fill_mac_ue_config(mod_id, UE_id, ue_config[i]);
|
||||
}
|
||||
}
|
||||
|
||||
ue_config_reply_msg->ue_config = ue_config;
|
||||
}
|
||||
|
||||
@@ -725,14 +732,20 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
|
||||
|
||||
if(cell_conf == NULL)
|
||||
goto error;
|
||||
for(int i = 0; i < enb_config_reply_msg->n_cell_config; i++){
|
||||
|
||||
for(int i = 0; i < enb_config_reply_msg->n_cell_config; i++) {
|
||||
cell_conf[i] = malloc(sizeof(Protocol__FlexCellConfig));
|
||||
|
||||
if (!cell_conf[i]) goto error;
|
||||
|
||||
protocol__flex_cell_config__init(cell_conf[i]);
|
||||
|
||||
if (flexran_agent_get_phy_xface(mod_id))
|
||||
flexran_agent_fill_phy_cell_config(mod_id, i, cell_conf[i]);
|
||||
|
||||
if (flexran_agent_get_rrc_xface(mod_id))
|
||||
flexran_agent_fill_rrc_cell_config(mod_id, i, cell_conf[i]);
|
||||
|
||||
if (flexran_agent_get_mac_xface(mod_id))
|
||||
flexran_agent_fill_mac_cell_config(mod_id, i, cell_conf[i]);
|
||||
|
||||
@@ -804,10 +817,11 @@ int flexran_agent_handle_enb_config_reply(mid_t mod_id, const void *params, Prot
|
||||
|
||||
if (enb_config->n_cell_config > 1)
|
||||
LOG_W(FLEXRAN_AGENT, "ignoring slice configs for other cell except cell 0\n");
|
||||
|
||||
if (flexran_agent_get_mac_xface(mod_id) && enb_config->cell_config[0]->slice_config) {
|
||||
prepare_update_slice_config(mod_id, enb_config->cell_config[0]->slice_config);
|
||||
//} else {
|
||||
// initiate_soft_restart(mod_id, enb_config->cell_config[0]);
|
||||
//} else {
|
||||
// initiate_soft_restart(mod_id, enb_config->cell_config[0]);
|
||||
}
|
||||
|
||||
*msg = NULL;
|
||||
|
||||
@@ -3329,7 +3329,7 @@ SLDCH_t *ue_get_sldch(module_id_t Mod_id,int CC_id,frame_t frame_tx,sub_frame_t
|
||||
|
||||
|
||||
SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subframeP) {
|
||||
mac_rlc_status_resp_t rlc_status; //, rlc_status_data;
|
||||
mac_rlc_status_resp_t rlc_status = {0,0,0,0,0}; //, rlc_status_data;
|
||||
uint32_t absSF = (frameP*10)+subframeP;
|
||||
UE_MAC_INST *ue = &UE_mac_inst[module_idP];
|
||||
int rvtab[4] = {0,2,3,1};
|
||||
@@ -3370,10 +3370,7 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
|
||||
(ue->sltx_active == 1)) { // every 4th subframe, check for new data from RLC
|
||||
// 10 PRBs, mcs 19
|
||||
int TBS = 4584/8;
|
||||
int req;
|
||||
|
||||
if (TBS <= rlc_status.bytes_in_buffer) req = TBS;
|
||||
else req = rlc_status.bytes_in_buffer;
|
||||
int req = (TBS <= rlc_status.bytes_in_buffer) ? TBS : rlc_status.bytes_in_buffer;
|
||||
|
||||
if (req>0) {
|
||||
sdu_length = mac_rlc_data_req(module_idP,
|
||||
|
||||
+29
-25
@@ -1460,7 +1460,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
|
||||
/* for no gcc warnings */
|
||||
(void)dedicatedInfoNas;
|
||||
LTE_C_RNTI_t *cba_RNTI = NULL;
|
||||
int x2_enabled;
|
||||
int measurements_enabled;
|
||||
uint8_t next_xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);
|
||||
ue_context_pP->ue_context.Status = RRC_CONNECTED;
|
||||
ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED
|
||||
@@ -1872,7 +1872,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
|
||||
dedicatedInfoNASList = NULL;
|
||||
}
|
||||
|
||||
x2_enabled = is_x2ap_enabled();
|
||||
measurements_enabled = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2 ||
|
||||
RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_measurement_reports;
|
||||
|
||||
// send LTE_RRCConnectionReconfiguration
|
||||
memset(buffer, 0, RRC_BUF_SIZE);
|
||||
@@ -1887,9 +1888,9 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
|
||||
//#ifdef EXMIMO_IOT
|
||||
// NULL, NULL, NULL,NULL,
|
||||
//#else
|
||||
x2_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL, // MeasObj_list,
|
||||
x2_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL, // ReportConfig_list,
|
||||
x2_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL, //quantityConfig,
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL, // MeasObj_list,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL, // ReportConfig_list,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL, //quantityConfig,
|
||||
(LTE_MeasIdToAddModList_t *)NULL,
|
||||
//#endif
|
||||
(LTE_MAC_MainConfig_t *)ue_context_pP->ue_context.mac_MainConfig,
|
||||
@@ -2798,7 +2799,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
||||
/* For no gcc warnings */
|
||||
(void) dedicatedInfoNas;
|
||||
LTE_C_RNTI_t *cba_RNTI = NULL;
|
||||
int x2_enabled;
|
||||
int measurements_enabled;
|
||||
uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id); //Transaction_id,
|
||||
uint8_t cc_id = ue_context_pP->ue_context.primaryCC_id;
|
||||
LTE_UE_EUTRA_Capability_t *UEcap = ue_context_pP->ue_context.UE_Capability;
|
||||
@@ -3340,7 +3341,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
||||
dedicatedInfoNASList = NULL;
|
||||
}
|
||||
|
||||
x2_enabled = is_x2ap_enabled();
|
||||
measurements_enabled = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2 ||
|
||||
RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_measurement_reports;
|
||||
|
||||
memset(buffer, 0, RRC_BUF_SIZE);
|
||||
|
||||
@@ -3352,10 +3354,10 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
||||
(LTE_DRB_ToReleaseList_t *) NULL, // DRB2_list,
|
||||
(struct LTE_SPS_Config *) NULL, // *sps_Config,
|
||||
(struct LTE_PhysicalConfigDedicated *) *physicalConfigDedicated,
|
||||
x2_enabled ? (LTE_MeasObjectToAddModList_t *) MeasObj_list : NULL,
|
||||
x2_enabled ? (LTE_ReportConfigToAddModList_t *) ReportConfig_list : NULL,
|
||||
x2_enabled ? (LTE_QuantityConfig_t *) quantityConfig : NULL,
|
||||
x2_enabled ? (LTE_MeasIdToAddModList_t *) MeasId_list : NULL,
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *) MeasObj_list : NULL,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *) ReportConfig_list : NULL,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *) quantityConfig : NULL,
|
||||
measurements_enabled ? (LTE_MeasIdToAddModList_t *) MeasId_list : NULL,
|
||||
(LTE_MAC_MainConfig_t *) mac_MainConfig,
|
||||
(LTE_MeasGapConfig_t *) NULL,
|
||||
(LTE_MobilityControlInfo_t *) NULL,
|
||||
@@ -3473,7 +3475,7 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
|
||||
/* for no gcc warnings */
|
||||
(void)dedicatedInfoNas;
|
||||
LTE_C_RNTI_t *cba_RNTI = NULL;
|
||||
int x2_enabled;
|
||||
int measurements_enabled;
|
||||
uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id); //Transaction_id,
|
||||
#ifdef CBA
|
||||
//struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola;
|
||||
@@ -3843,7 +3845,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
|
||||
dedicatedInfoNASList = NULL;
|
||||
}
|
||||
|
||||
x2_enabled = is_x2ap_enabled();
|
||||
measurements_enabled = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2 ||
|
||||
RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_measurement_reports;
|
||||
|
||||
memset(buffer, 0, RRC_BUF_SIZE);
|
||||
size = do_RRCConnectionReconfiguration(ctxt_pP,
|
||||
@@ -3857,10 +3860,10 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
|
||||
// #ifdef EXMIMO_IOT
|
||||
// NULL, NULL, NULL,NULL,
|
||||
// #else
|
||||
x2_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL,
|
||||
x2_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL,
|
||||
x2_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL,
|
||||
x2_enabled ? (LTE_MeasIdToAddModList_t *)MeasId_list : NULL,
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL,
|
||||
measurements_enabled ? (LTE_MeasIdToAddModList_t *)MeasId_list : NULL,
|
||||
// #endif
|
||||
(LTE_MAC_MainConfig_t *)mac_MainConfig,
|
||||
(LTE_MeasGapConfig_t *)NULL,
|
||||
@@ -4108,7 +4111,7 @@ rrc_eNB_process_MeasurementReport(
|
||||
return;
|
||||
|
||||
/* if X2AP is disabled, do nothing */
|
||||
if (!is_x2ap_enabled())
|
||||
if (!RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2)
|
||||
return;
|
||||
|
||||
LOG_D(RRC, "A3 event is triggered...\n");
|
||||
@@ -4498,7 +4501,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
||||
/* for no gcc warnings */
|
||||
(void)dedicatedInfoNas;
|
||||
LTE_C_RNTI_t *cba_RNTI = NULL;
|
||||
int x2_enabled;
|
||||
int measurements_enabled;
|
||||
uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id); //Transaction_id,
|
||||
#ifdef CBA
|
||||
//struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola;
|
||||
@@ -5260,7 +5263,8 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
||||
|
||||
#endif
|
||||
|
||||
x2_enabled = is_x2ap_enabled();
|
||||
measurements_enabled = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2 ||
|
||||
RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_measurement_reports;
|
||||
|
||||
memset(buffer, 0, RRC_BUF_SIZE);
|
||||
char rrc_buf[1000 /* arbitrary, should be big enough, has to be less than size of return buf by a few bits/bytes */];
|
||||
@@ -5276,10 +5280,10 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
||||
//#ifdef EXMIMO_IOT
|
||||
// NULL, NULL, NULL,NULL,
|
||||
//#else
|
||||
x2_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL,
|
||||
x2_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL,
|
||||
x2_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL,
|
||||
x2_enabled ? (LTE_MeasIdToAddModList_t *)MeasId_list : NULL,
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL,
|
||||
measurements_enabled ? (LTE_MeasIdToAddModList_t *)MeasId_list : NULL,
|
||||
//#endif
|
||||
(LTE_MAC_MainConfig_t *)mac_MainConfig,
|
||||
(LTE_MeasGapConfig_t *)NULL,
|
||||
@@ -7458,7 +7462,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX, VCD_FUNCTION_IN);
|
||||
|
||||
if (is_x2ap_enabled()) {
|
||||
if (RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)]->configuration.enable_x2) {
|
||||
/* send a tick to x2ap */
|
||||
msg = itti_alloc_new_message(TASK_RRC_ENB, X2AP_SUBFRAME_PROCESS);
|
||||
itti_send_msg_to_task(TASK_X2AP, ctxt_pP->module_id, msg);
|
||||
|
||||
@@ -257,23 +257,28 @@ rrc_eNB_S1AP_get_ue_ids(
|
||||
}
|
||||
|
||||
if (ue_desc_p != NULL) {
|
||||
result = rrc_eNB_S1AP_get_ue_ids(rrc_instance_pP, ue_desc_p->ue_initial_id, eNB_ue_s1ap_id);
|
||||
if (ue_desc_p->ue_initial_id != UE_INITIAL_ID_INVALID) {
|
||||
result = rrc_eNB_S1AP_get_ue_ids(rrc_instance_pP, ue_desc_p->ue_initial_id, eNB_ue_s1ap_id);
|
||||
|
||||
if (result != NULL) {
|
||||
ue_context_p = rrc_eNB_get_ue_context(RC.rrc[ENB_INSTANCE_TO_MODULE_ID(instance)], result->ue_rnti);
|
||||
if (result != NULL) {
|
||||
ue_context_p = rrc_eNB_get_ue_context(RC.rrc[ENB_INSTANCE_TO_MODULE_ID(instance)], result->ue_rnti);
|
||||
|
||||
if ((ue_context_p != NULL) && (ue_context_p->ue_context.eNB_ue_s1ap_id == 0)) {
|
||||
ue_context_p->ue_context.eNB_ue_s1ap_id = eNB_ue_s1ap_id;
|
||||
} else {
|
||||
LOG_E(RRC, "[eNB %ld] Incoherence between RRC context and S1AP context (%d != %d) for UE RNTI %d or UE RRC context doesn't exist\n",
|
||||
rrc_instance_pP - RC.rrc[0],
|
||||
(ue_context_p==NULL)?99999:ue_context_p->ue_context.eNB_ue_s1ap_id,
|
||||
eNB_ue_s1ap_id,
|
||||
result->ue_rnti);
|
||||
if ((ue_context_p != NULL) && (ue_context_p->ue_context.eNB_ue_s1ap_id == 0)) {
|
||||
ue_context_p->ue_context.eNB_ue_s1ap_id = eNB_ue_s1ap_id;
|
||||
} else {
|
||||
LOG_E(RRC, "[eNB %ld] Incoherence between RRC context and S1AP context (%d != %d) for UE RNTI %d or UE RRC context doesn't exist\n",
|
||||
rrc_instance_pP - RC.rrc[0],
|
||||
(ue_context_p==NULL)?99999:ue_context_p->ue_context.eNB_ue_s1ap_id,
|
||||
eNB_ue_s1ap_id,
|
||||
result->ue_rnti);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOG_E(S1AP, "[eNB %ld] S1AP context found but ue_initial_id is invalid (0)\n", rrc_instance_pP - RC.rrc[0]);
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
LOG_E(S1AP, "[eNB %ld] In hashtable_get, couldn't find in s1ap_id2_s1ap_ids eNB_ue_s1ap_id %"PRIu32", even when looking at S1AP context\n",
|
||||
LOG_E(S1AP, "[eNB %ld] In hashtable_get, couldn't find in s1ap_id2_s1ap_ids eNB_ue_s1ap_id %"PRIu32", because ue_initial_id is invalid in S1AP context\n",
|
||||
rrc_instance_pP - RC.rrc[0],
|
||||
eNB_ue_s1ap_id);
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user