diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h index e8cabe5bf5a3ca8859f245b80492f8dc7e954a1e..64810e644ad055ce15d65a4bef420f78c0f63fa3 100644 --- a/openair2/COMMON/rrc_messages_types.h +++ b/openair2/COMMON/rrc_messages_types.h @@ -36,7 +36,7 @@ #include "LTE_SystemInformationBlockType2.h" #include "LTE_SL-OffsetIndicator-r12.h" #include "LTE_SubframeBitmapSL-r12.h" -#include "LTE_DRX-Config.h" // Add DRX SSR 2018-10 +#include "LTE_DRX-Config.h" #include "LTE_SL-CP-Len-r12.h" #include "LTE_SL-PeriodComm-r12.h" #include "LTE_SL-DiscResourcePool-r12.h" @@ -142,14 +142,14 @@ typedef struct RadioResourceConfig_s { long bcch_modificationPeriodCoeff; long pcch_defaultPagingCycle; long pcch_nB; - LTE_DRX_Config_PR drx_Config_present; // Add DRX SSR 2018-10 - long drx_onDurationTimer; // Add DRX SSR 2018-10 - long drx_InactivityTimer; // Add DRX SSR 2018-10 - long drx_RetransmissionTimer; // Add DRX SSR 2018-10 - LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR drx_longDrx_CycleStartOffset_present; // Add DRX SSR 2018-10 - long drx_longDrx_CycleStartOffset; // Add DRX SSR 2018-10 - long drx_shortDrx_Cycle; // Add DRX SSR 2018-10 - long drx_shortDrx_ShortCycleTimer; // Add DRX SSR 2018-10 + LTE_DRX_Config_PR drx_Config_present; + long drx_onDurationTimer; + long drx_InactivityTimer; + long drx_RetransmissionTimer; + LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR drx_longDrx_CycleStartOffset_present; + long drx_longDrx_CycleStartOffset; + long drx_shortDrx_Cycle; + long drx_shortDrx_ShortCycleTimer; long ue_TimersAndConstants_t300; long ue_TimersAndConstants_t301; long ue_TimersAndConstants_t310; diff --git a/openair2/ENB_APP/enb_paramdef.h b/openair2/ENB_APP/enb_paramdef.h index ba26f4e3d93e00c764e28fcecb323c650013add1..dff16ff9d77d6957d6c347991cf3543b53750cc3 100644 --- a/openair2/ENB_APP/enb_paramdef.h +++ b/openair2/ENB_APP/enb_paramdef.h @@ -363,14 +363,14 @@ typedef enum { #define ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX "rach_maxHARQ_Msg3Tx" #define ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE "pcch_default_PagingCycle" #define ENB_CONFIG_STRING_PCCH_NB "pcch_nB" -#define ENB_CONFIG_STRING_DRX_CONFIG_PRESENT "drx_Config_present" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_ONDURATIONTIMER "drx_onDurationTimer" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_INACTIVITYTIMER "drx_InactivityTimer" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER "drx_RetransmissionTimer" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT "drx_longDrx_CycleStartOffset_present" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET "drx_longDrx_CycleStartOffset" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE "drx_shortDrx_Cycle" // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER "drx_shortDrx_ShortCycleTimer" // Add DRX SSR 2018-10 +#define ENB_CONFIG_STRING_DRX_CONFIG_PRESENT "drx_Config_present" +#define ENB_CONFIG_STRING_DRX_ONDURATIONTIMER "drx_onDurationTimer" +#define ENB_CONFIG_STRING_DRX_INACTIVITYTIMER "drx_InactivityTimer" +#define ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER "drx_RetransmissionTimer" +#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT "drx_longDrx_CycleStartOffset_present" +#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET "drx_longDrx_CycleStartOffset" +#define ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE "drx_shortDrx_Cycle" +#define ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER "drx_shortDrx_ShortCycleTimer" #define ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF "bcch_modificationPeriodCoeff" #define ENB_CONFIG_STRING_UETIMERS_T300 "ue_TimersAndConstants_t300" #define ENB_CONFIG_STRING_UETIMERS_T301 "ue_TimersAndConstants_t301" @@ -589,14 +589,14 @@ typedef struct ccparams_lte_s { { .s5= {NULL }} , \ { .s5= {NULL }} , \ { .s5= {NULL }} , \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ - { .s5= {NULL }} , /* Add DRX SSR 2018-10 */ \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ { .s5= {NULL }} , \ { .s1a= { config_check_modify_integer, UETIMER_T300_OKVALUES, UETIMER_T300_MODVALUES,8}} , \ { .s1a= { config_check_modify_integer, UETIMER_T301_OKVALUES, UETIMER_T301_MODVALUES,8}} , \ @@ -711,14 +711,14 @@ typedef struct ccparams_lte_s { {ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX, NULL, 0, iptr:&ccparams.rach_maxHARQ_Msg3Tx, defintval:4, TYPE_UINT, 0}, \ {ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE, NULL, 0, iptr:&ccparams.pcch_defaultPagingCycle, defintval:128, TYPE_INT, 0}, \ {ENB_CONFIG_STRING_PCCH_NB, NULL, 0, strptr:&ccparams.pcch_nB, defstrval:"oneT", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_DRX_CONFIG_PRESENT, NULL, 0, strptr:&ccparams.drx_Config_present, defstrval:"prNothing", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_ONDURATIONTIMER, NULL, 0, strptr:&ccparams.drx_onDurationTimer, defstrval:"psf10", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_INACTIVITYTIMER, NULL, 0, strptr:&ccparams.drx_InactivityTimer, defstrval:"psf10", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER, NULL, 0, strptr:&ccparams.drx_RetransmissionTimer, defstrval:"psf8", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT, NULL, 0, strptr:&ccparams.drx_longDrx_CycleStartOffset_present, defstrval:"prSf128", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET, NULL, 0, iptr:&ccparams.drx_longDrx_CycleStartOffset, defintval:0, TYPE_UINT, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE, NULL, 0, strptr:&ccparams.drx_shortDrx_Cycle, defstrval:"sf32", TYPE_STRING, 0}, /* Add DRX SSR 2018-10 */ \ -{ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER, NULL, 0, iptr:&ccparams.drx_shortDrx_ShortCycleTimer, defintval:3, TYPE_UINT, 0}, /* Add DRX SSR 2018-10 */ \ +{ENB_CONFIG_STRING_DRX_CONFIG_PRESENT, NULL, 0, strptr:&ccparams.drx_Config_present, defstrval:"prNothing", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_ONDURATIONTIMER, NULL, 0, strptr:&ccparams.drx_onDurationTimer, defstrval:"psf10", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_INACTIVITYTIMER, NULL, 0, strptr:&ccparams.drx_InactivityTimer, defstrval:"psf10", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER, NULL, 0, strptr:&ccparams.drx_RetransmissionTimer, defstrval:"psf8", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT, NULL, 0, strptr:&ccparams.drx_longDrx_CycleStartOffset_present, defstrval:"prSf128", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET, NULL, 0, iptr:&ccparams.drx_longDrx_CycleStartOffset, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE, NULL, 0, strptr:&ccparams.drx_shortDrx_Cycle, defstrval:"sf32", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER, NULL, 0, iptr:&ccparams.drx_shortDrx_ShortCycleTimer, defintval:3, TYPE_UINT, 0}, \ {ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF, NULL, 0, iptr:&ccparams.bcch_modificationPeriodCoeff, defintval:2, TYPE_UINT, 0}, \ {ENB_CONFIG_STRING_UETIMERS_T300, NULL, 0, iptr:&ccparams.ue_TimersAndConstants_t300, defintval:1000, TYPE_UINT, 0}, \ {ENB_CONFIG_STRING_UETIMERS_T301, NULL, 0, iptr:&ccparams.ue_TimersAndConstants_t301, defintval:1000, TYPE_UINT, 0}, \ @@ -792,22 +792,22 @@ typedef struct ccparams_lte_s { #define ENB_CONFIG_RACH_MAXHARQMSG3TX_IDX 57 #define ENB_CONFIG_PCCH_DEFAULT_PAGING_CYCLE_IDX 58 #define ENB_CONFIG_PCCH_NB_IDX 59 -#define ENB_CONFIG_STRING_DRX_CONFIG_PRESENT_IDX 60 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_ONDURATIONTIMER_IDX 61 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_INACTIVITYTIMER_IDX 62 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER_IDX 63 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT_IDX 64 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_IDX 65 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE_IDX 66 // Add DRX SSR 2018-10 -#define ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER_IDX 67 // Add DRX SSR 2018-10 -#define ENB_CONFIG_BCCH_MODIFICATIONPERIODCOEFF_IDX 68 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_T300_IDX 69 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_T301_IDX 70 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_T310_IDX 71 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_T311_IDX 72 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_N310_IDX 73 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UETIMERS_N311_IDX 74 // Modif DRX SSR 2018-10 -#define ENB_CONFIG_UE_TRANSMISSION_MODE_IDX 75 // Modif DRX SSR 2018-10 +#define ENB_CONFIG_STRING_DRX_CONFIG_PRESENT_IDX 60 +#define ENB_CONFIG_STRING_DRX_ONDURATIONTIMER_IDX 61 +#define ENB_CONFIG_STRING_DRX_INACTIVITYTIMER_IDX 62 +#define ENB_CONFIG_STRING_DRX_RETRANSMISSIONTIMER_IDX 63 +#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_PRESENT_IDX 64 +#define ENB_CONFIG_STRING_DRX_LONGDRX_CYCLESTARTOFFSET_IDX 65 +#define ENB_CONFIG_STRING_DRX_SHORTDRX_CYCLE_IDX 66 +#define ENB_CONFIG_STRING_DRX_SHORTDRX_SHORTCYCLETIMER_IDX 67 +#define ENB_CONFIG_BCCH_MODIFICATIONPERIODCOEFF_IDX 68 +#define ENB_CONFIG_UETIMERS_T300_IDX 69 +#define ENB_CONFIG_UETIMERS_T301_IDX 70 +#define ENB_CONFIG_UETIMERS_T310_IDX 71 +#define ENB_CONFIG_UETIMERS_T311_IDX 72 +#define ENB_CONFIG_UETIMERS_N310_IDX 73 +#define ENB_CONFIG_UETIMERS_N311_IDX 74 +#define ENB_CONFIG_UE_TRANSMISSION_MODE_IDX 75 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ /* SRB1 configuration parameters section name */ diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c index ea49cfa81e3cda4d195e375c414abbd399dd0204..3e04e601d3a95cc7b5b1541095665d7f0fde47a9 100644 --- a/openair2/LAYER2/MAC/pre_processor.c +++ b/openair2/LAYER2/MAC/pre_processor.c @@ -1653,7 +1653,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP, UE_sched_ctrl *ue_sched_ctl; int N_RB_UL = 0; uint16_t available_rbs, first_rb_offset; - rnti_t rntiTable[MAX_MOBILES_PER_ENB]; // Rnti array => Add SSR 12-2018 + rnti_t rntiTable[MAX_MOBILES_PER_ENB]; // sort ues LOG_D(MAC, "In ulsch_preprocessor: sort ue \n"); diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index 14aeb895e8369d0b5cbaea16f02617c968f6c6cc..278ea40fed09fa5d4de7a6bb834c3001174b2136 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -317,10 +317,9 @@ uint8_t do_MIB_SL(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, return((enc_rval.encoded+7)/8); } -// Begin add DRX SSR 2018-11 + LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *configuration, LTE_UE_EUTRA_Capability_t *UEcap) { - // Begin add DRX SSR 2018-12 LTE_DRX_Config_t *drxConfig = NULL; BIT_STRING_t *featureGroupIndicators = NULL; bool ueSupportCdrxShortFlag = false; @@ -335,7 +334,6 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *c } else LOG_W(RRC,"[do_DrxConfig] Not enough featureGroupIndicators bits\n"); } else LOG_W(RRC,"[do_DrxConfig] No featureGroupIndicators pointer\n"); } else LOG_W(RRC,"[do_DrxConfig] No UEcap pointer\n"); - // End add DRX SSR 2018-12 drxConfig = (LTE_DRX_Config_t *) malloc(sizeof(LTE_DRX_Config_t)); if (drxConfig == NULL) return NULL; @@ -419,8 +417,6 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *c } return drxConfig; } -// End add DRX SSR 2018-11 - uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier, int Mod_id,int CC_id diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.h b/openair2/RRC/LTE/MESSAGES/asn1_msg.h index 7022f9e6e0486b01317314cf4466278f88bfdaa8..331a3ca312708dcc660f78139e79c50e9c07b4ca 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.h +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.h @@ -71,7 +71,7 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich ); /** -\brief Generate configuration for DRX_Config (Add DRX SSR 2018-11) +\brief Generate configuration for DRX_Config @param Mod_id Instance of eNB @param CC_id Id of component to configure @param configuration Pointer Configuration Request structure diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h index 6019ae2529b3d42820a0c1f178d8559301fcbb71..1da374dd4278d379a26ea04ad132f8ba56e36bd3 100644 --- a/openair2/RRC/LTE/rrc_defs.h +++ b/openair2/RRC/LTE/rrc_defs.h @@ -200,7 +200,7 @@ void *send_UE_status_notification(void *); /* for ImsiMobileIdentity_t */ #include "MobileIdentity.h" -#include "LTE_DRX-Config.h" // Add DRX SSR 2018-11 +#include "LTE_DRX-Config.h" /* correct Rel(8|10)/Rel14 differences * the code is in favor of Rel14, those defines do the translation diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index b70846cc302cfe9cce35d3b76fd61d396c2768eb..26eefcaec53e8ecc1a427b6fe9ecf76f9f2e67e1 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -1286,123 +1286,136 @@ rrc_eNB_generate_RRCConnectionReestablishment( const int CC_id) //----------------------------------------------------------------------------- { -LTE_LogicalChannelConfig_t *SRB1_logicalChannelConfig; - LTE_SRB_ToAddModList_t **SRB_configList; - LTE_SRB_ToAddMod_t *SRB1_config; - int cnt; - T(T_ENB_RRC_CONNECTION_REESTABLISHMENT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), - T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); - - eNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context; - - SRB_configList = &ue_p->SRB_configList; - - ue_p->Srb0.Tx_buffer.payload_size = - do_RRCConnectionReestablishment(ctxt_pP, - ue_context_pP, - CC_id, - (uint8_t *) ue_p->Srb0.Tx_buffer.Payload, - (uint8_t) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2 - rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id), - SRB_configList, - &ue_context_pP->ue_context.physicalConfigDedicated); - LOG_DUMPMSG(RRC,DEBUG_RRC, - (char *)(ue_p->Srb0.Tx_buffer.Payload), - ue_p->Srb0.Tx_buffer.payload_size, - "[MSG] RRCConnectionReestablishment\n" - ); - // configure SRB1 for UE - + int UE_id = -1; + LTE_LogicalChannelConfig_t *SRB1_logicalChannelConfig = NULL; + LTE_SRB_ToAddModList_t **SRB_configList; + LTE_SRB_ToAddMod_t *SRB1_config = NULL; + rrc_eNB_carrier_data_t *carrier = NULL; + eNB_RRC_UE_t *ue_context = NULL; + + module_id_t module_id = ctxt_pP->module_id; + uint16_t rnti = ctxt_pP->rnti; + + T(T_ENB_RRC_CONNECTION_REESTABLISHMENT, + T_INT(module_id), + T_INT(ctxt_pP->frame), + T_INT(ctxt_pP->subframe), + T_INT(rnti)); + + SRB_configList = &(ue_context_pP->ue_context.SRB_configList); + carrier = &(RC.rrc[ctxt_pP->module_id]->carrier[CC_id]); + ue_context = &(ue_context_pP->ue_context); + + carrier->Srb0.Tx_buffer.payload_size = do_RRCConnectionReestablishment(ctxt_pP, + ue_context_pP, + CC_id, + (uint8_t *) carrier->Srb0.Tx_buffer.Payload, + (uint8_t) carrier->p_eNB, // at this point we do not have the UE capability information, so it can only be TM1 or TM2 + rrc_eNB_get_next_transaction_identifier(module_id), + SRB_configList, + &(ue_context->physicalConfigDedicated)); + + LOG_DUMPMSG(RRC, DEBUG_RRC, + (char *)(carrier->Srb0.Tx_buffer.Payload), + carrier->Srb0.Tx_buffer.payload_size, + "[MSG] RRCConnectionReestablishment \n"); + + /* Configure SRB1 for UE */ if (*SRB_configList != NULL) { - for (cnt = 0; cnt < (*SRB_configList)->list.count; cnt++) { + for (int cnt = 0; cnt < (*SRB_configList)->list.count; cnt++) { if ((*SRB_configList)->list.array[cnt]->srb_Identity == 1) { SRB1_config = (*SRB_configList)->list.array[cnt]; if (SRB1_config->logicalChannelConfig) { - if (SRB1_config->logicalChannelConfig->present == - LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue) { - SRB1_logicalChannelConfig = &SRB1_config->logicalChannelConfig->choice.explicitValue; + if (SRB1_config->logicalChannelConfig->present == LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue) { + SRB1_logicalChannelConfig = &(SRB1_config->logicalChannelConfig->choice.explicitValue); } else { - SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue; + SRB1_logicalChannelConfig = &(SRB1_logicalChannelConfig_defaultValue); } } else { - SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue; + SRB1_logicalChannelConfig = &(SRB1_logicalChannelConfig_defaultValue); } - LOG_D(RRC, - PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_eNB\n", + LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_eNB\n", PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - 0,0,0,0,0, + rrc_mac_config_req_eNB(module_id, + ue_context->primaryCC_id, + 0, + 0, + 0, + 0, + 0, #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) 0, #endif - ctxt_pP->rnti, + rnti, (LTE_BCCH_BCH_Message_t *) NULL, (LTE_RadioResourceConfigCommonSIB_t *) NULL, #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) (LTE_RadioResourceConfigCommonSIB_t *) NULL, #endif - (struct LTE_PhysicalConfigDedicated * ) ue_context_pP->ue_context.physicalConfigDedicated, + (struct LTE_PhysicalConfigDedicated * ) ue_context->physicalConfigDedicated, #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0)) (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, #endif (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_pP->ue_context.mac_MainConfig, + ue_context->mac_MainConfig, 1, SRB1_logicalChannelConfig, - ue_context_pP->ue_context.measGapConfig, + ue_context->measGapConfig, (LTE_TDD_Config_t *) NULL, NULL, (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL + 0, + NULL, + NULL, + (LTE_MBSFN_SubframeConfigList_t *) NULL #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - , 0, (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL + , 0, + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_PMCH_InfoList_r9_t *) NULL #endif #if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0)) - ,(LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL + ,(LTE_SystemInformationBlockType1_v1310_IEs_t *) NULL #endif - ); + ); break; } - } - } - } + } // if ((*SRB_configList)->list.array[cnt]->srb_Identity == 1) + } // for (int cnt = 0; cnt < (*SRB_configList)->list.count; cnt++) + } // if (*SRB_configList != NULL) MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_RRC_UE, - ue_p->Srb0.Tx_buffer.Header, - ue_p->Srb0.Tx_buffer.payload_size, + carrier->Srb0.Tx_buffer.Header, + carrier->Srb0.Tx_buffer.payload_size, MSC_AS_TIME_FMT" LTE_RRCConnectionReestablishment UE %x size %u", MSC_AS_TIME_ARGS(ctxt_pP), - ue_context_pP->ue_context.rnti, - ue_p->Srb0.Tx_buffer.payload_size); + ue_context->rnti, + carrier->Srb0.Tx_buffer.payload_size); - LOG_I(RRC, - PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating LTE_RRCConnectionReestablishment (bytes %d)\n", + LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating LTE_RRCConnectionReestablishment (bytes %d)\n", PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), - ue_p->Srb0.Tx_buffer.payload_size); - if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) { - int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti); - if(UE_id != -1){ - // activate release timer, if RRCComplete not received after 100 frames, remove UE - RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1; - // remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered - RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer_thres = 1000; - } else{ - LOG_E(RRC, - PROTOCOL_RRC_CTXT_UE_FMT" Generating LTE_RRCConnectionReestablishment without UE_id(MAC) rnti %x\n", - PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), ctxt_pP->rnti); - } - } - // activate release timer, if RRCComplete not received after 100 frames, remove UE + carrier->Srb0.Tx_buffer.payload_size); + + UE_id = find_UE_id(module_id, rnti); + + if (UE_id != -1) { + /* Activate reject timer, if RRCComplete not received after 10 frames, reject UE */ + RC.mac[module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1; + /* Reject UE after 10 frames, LTE_RRCConnectionReestablishmentReject is triggered */ + RC.mac[module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer_thres = 100; + } else { + LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Generating LTE_RRCConnectionReestablishment without UE_id(MAC) rnti %x\n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), + rnti); + } + + /* Activate release timer, if RRCComplete not received after 100 frames, remove UE */ ue_context_pP->ue_context.ue_reestablishment_timer = 1; - // remove UE after 100 frames after LTE_RRCConnectionReestablishmentRelease is triggered + /* Remove UE after 100 frames after LTE_RRCConnectionReestablishmentReject is triggered */ ue_context_pP->ue_context.ue_reestablishment_timer_thres = 1000; - } //----------------------------------------------------------------------------- @@ -2782,8 +2795,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons LTE_C_RNTI_t *cba_RNTI = NULL; int x2_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; // Add DRX SSR 2018-11 => CC id - LTE_UE_EUTRA_Capability_t *UEcap = ue_context_pP->ue_context.UE_Capability; // Add DRX SSR 2018-12 + uint8_t cc_id = ue_context_pP->ue_context.primaryCC_id; + LTE_UE_EUTRA_Capability_t *UEcap = ue_context_pP->ue_context.UE_Capability; #ifdef CBA //struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola; uint8_t *cba_RNTI_buf; @@ -2956,7 +2969,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200; // sf20 = 20 subframes // LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf1000 mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3; // Value dB1 =1 dB, dB3 = 3 dB - // Begin add DRX SSR 2018-11 if (rrc_inst->carrier[cc_id].sib1->tdd_Config == NULL) { // CDRX configured in case of FDD LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n"); @@ -3016,7 +3028,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons } else { // CDRX not ready for TDD mac_MainConfig->drx_Config = NULL; } - // End add DRX SSR 2018-11 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long)); @@ -5481,7 +5492,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ) //----------------------------------------------------------------------------- { - int drb_id; + int i, drb_id; int oip_ifup = 0; int dest_ip_offset = 0; uint8_t *kRRCenc = NULL; @@ -5505,6 +5516,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); +#if defined(ENABLE_SECURITY) /* Derive the keys from kenb */ if (DRB_configList != NULL) { derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm, @@ -5826,10 +5838,10 @@ rrc_eNB_generate_RRCConnectionSetup( SRB_configList, &ue_context_pP->ue_context.physicalConfigDedicated); } - LOG_DUMPMSG(RRC,DEBUG_RRC, - (char *)(ue_p->Srb0.Tx_buffer.Payload), - ue_p->Srb0.Tx_buffer.payload_size, - "[MSG] RRC Connection Setup\n"); + LOG_DUMPMSG(RRC,DEBUG_RRC, + (char *)(ue_p->Srb0.Tx_buffer.Payload), + ue_p->Srb0.Tx_buffer.payload_size, + "[MSG] RRC Connection Setup\n"); // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE switch (RC.rrc[ctxt_pP->module_id]->node_type){