Merge remote-tracking branch 'origin/NR_RRC_processing_timer' into Dedicated-BWPs
# Conflicts: # openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
This commit is contained in:
@@ -203,4 +203,5 @@ void nr_mac_gNB_rrc_ul_failure_reset(const module_id_t Mod_instP,
|
|||||||
const frame_t frameP,
|
const frame_t frameP,
|
||||||
const sub_frame_t subframeP,
|
const sub_frame_t subframeP,
|
||||||
const rnti_t rntiP);
|
const rnti_t rntiP);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -425,6 +425,10 @@ void config_common(int Mod_idP, int ssb_SubcarrierOffset, int pdsch_AntennaPorts
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nr_rrc_mac_schedule_ue_enabled(module_id_t module_id, rnti_t rnti, bool schedule_enabled) {
|
||||||
|
const int UE_id = find_nr_UE_id(module_id,rnti);
|
||||||
|
RC.nrmac[module_id]->UE_info.UE_sched_ctrl[UE_id].schedule_enabled = schedule_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
||||||
int ssb_SubcarrierOffset,
|
int ssb_SubcarrierOffset,
|
||||||
@@ -434,9 +438,9 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
|||||||
int minRXTXTIMEpdsch,
|
int minRXTXTIMEpdsch,
|
||||||
NR_ServingCellConfigCommon_t *scc,
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
NR_BCCH_BCH_Message_t *mib,
|
NR_BCCH_BCH_Message_t *mib,
|
||||||
int add_ue,
|
int add_ue,
|
||||||
uint32_t rnti,
|
uint32_t rnti,
|
||||||
NR_CellGroupConfig_t *CellGroup) {
|
NR_CellGroupConfig_t *CellGroup) {
|
||||||
|
|
||||||
if (scc != NULL ) {
|
if (scc != NULL ) {
|
||||||
AssertFatal((scc->ssb_PositionsInBurst->present > 0) && (scc->ssb_PositionsInBurst->present < 4), "SSB Bitmap type %d is not valid\n",scc->ssb_PositionsInBurst->present);
|
AssertFatal((scc->ssb_PositionsInBurst->present > 0) && (scc->ssb_PositionsInBurst->present < 4), "SSB Bitmap type %d is not valid\n",scc->ssb_PositionsInBurst->present);
|
||||||
@@ -667,6 +671,6 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
|||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
|
|
||||||
return(0);
|
return 0;
|
||||||
|
|
||||||
}// END rrc_mac_config_req_gNB
|
}// END rrc_mac_config_req_gNB
|
||||||
|
|||||||
@@ -514,16 +514,16 @@ void nr_store_dlsch_buffer(module_id_t module_id,
|
|||||||
0);
|
0);
|
||||||
stop_meas(&RC.nrmac[module_id]->rlc_status_ind);
|
stop_meas(&RC.nrmac[module_id]->rlc_status_ind);
|
||||||
}
|
}
|
||||||
if(sched_ctrl->rlc_status[DL_SCH_LCID_DCCH].bytes_in_buffer > 0) {
|
if (sched_ctrl->rlc_status[DL_SCH_LCID_DCCH].bytes_in_buffer > 0) {
|
||||||
lcid = DL_SCH_LCID_DCCH;
|
lcid = DL_SCH_LCID_DCCH;
|
||||||
} else if (sched_ctrl->rlc_status[DL_SCH_LCID_DCCH1].bytes_in_buffer > 0) {
|
} else if (sched_ctrl->rlc_status[DL_SCH_LCID_DCCH1].bytes_in_buffer > 0) {
|
||||||
lcid = DL_SCH_LCID_DCCH1;
|
lcid = DL_SCH_LCID_DCCH1;
|
||||||
} else if (sched_ctrl->bwp_switch_info.bwp_switch_state != BWP_SWITCH_RUNNING) {
|
} else if ( (sched_ctrl->bwp_switch_info.bwp_switch_state != BWP_SWITCH_RUNNING) || (sched_ctrl->schedule_enabled == true) ) {
|
||||||
lcid = DL_SCH_LCID_DTCH;
|
lcid = DL_SCH_LCID_DTCH;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
sched_ctrl->num_total_bytes += sched_ctrl->rlc_status[lcid].bytes_in_buffer;
|
sched_ctrl->num_total_bytes += sched_ctrl->rlc_status[lcid].bytes_in_buffer;
|
||||||
//later multiplex here. Just select DCCH/SRB before DTCH/DRB
|
//later multiplex here. Just select DCCH/SRB before DTCH/DRB
|
||||||
sched_ctrl->lcid_to_schedule = lcid;
|
sched_ctrl->lcid_to_schedule = lcid;
|
||||||
|
|||||||
@@ -2223,6 +2223,7 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
|
|||||||
sched_ctrl->pucch_consecutive_dtx_cnt = 0;
|
sched_ctrl->pucch_consecutive_dtx_cnt = 0;
|
||||||
sched_ctrl->pusch_consecutive_dtx_cnt = 0;
|
sched_ctrl->pusch_consecutive_dtx_cnt = 0;
|
||||||
sched_ctrl->ul_failure = 0;
|
sched_ctrl->ul_failure = 0;
|
||||||
|
sched_ctrl->schedule_enabled = true;
|
||||||
|
|
||||||
sched_ctrl->sched_srs.frame = -1;
|
sched_ctrl->sched_srs.frame = -1;
|
||||||
sched_ctrl->sched_srs.slot = -1;
|
sched_ctrl->sched_srs.slot = -1;
|
||||||
|
|||||||
@@ -1177,8 +1177,9 @@ void pf_ul(module_id_t module_id,
|
|||||||
const bool do_sched = nr_UE_is_to_be_scheduled(module_id, 0, UE_id, sched_pusch->frame, sched_pusch->slot);
|
const bool do_sched = nr_UE_is_to_be_scheduled(module_id, 0, UE_id, sched_pusch->frame, sched_pusch->slot);
|
||||||
|
|
||||||
LOG_D(NR_MAC,"pf_ul: do_sched UE %d => %s\n",UE_id,do_sched ? "yes" : "no");
|
LOG_D(NR_MAC,"pf_ul: do_sched UE %d => %s\n",UE_id,do_sched ? "yes" : "no");
|
||||||
if (B == 0 && !do_sched)
|
if ( (B == 0 && !do_sched) || (sched_ctrl->schedule_enabled == false) ) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(sched_ctrl->bwp_switch_info.bwp_switch_state == BWP_SWITCH_RUNNING) {
|
if(sched_ctrl->bwp_switch_info.bwp_switch_state == BWP_SWITCH_RUNNING) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ void config_common(int Mod_idP,
|
|||||||
NR_ServingCellConfigCommon_t *scc
|
NR_ServingCellConfigCommon_t *scc
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void nr_rrc_mac_schedule_ue_enabled(module_id_t module_id, rnti_t rnti, bool schedule_enabled);
|
||||||
|
|
||||||
int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
||||||
int ssb_SubcarrierOffset,
|
int ssb_SubcarrierOffset,
|
||||||
int pdsch_AntennaPorts,
|
int pdsch_AntennaPorts,
|
||||||
|
|||||||
@@ -668,6 +668,8 @@ typedef struct {
|
|||||||
/// UL HARQ processes that await retransmission
|
/// UL HARQ processes that await retransmission
|
||||||
NR_list_t retrans_ul_harq;
|
NR_list_t retrans_ul_harq;
|
||||||
NR_UE_mac_ce_ctrl_t UE_mac_ce_ctrl;// MAC CE related information
|
NR_UE_mac_ce_ctrl_t UE_mac_ce_ctrl;// MAC CE related information
|
||||||
|
/// Flag to indicate if MAC scheduling is enabled or disabled by RRC (e.g. during RRC processing time)
|
||||||
|
bool schedule_enabled;
|
||||||
} NR_UE_sched_ctrl_t;
|
} NR_UE_sched_ctrl_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -407,4 +407,4 @@ void nr_mac_gNB_rrc_ul_failure_reset(const module_id_t Mod_instP,
|
|||||||
} else {
|
} else {
|
||||||
LOG_W(RRC,"Frame %d, Subframe %d: UL failure reset: UE %x unknown \n",frameP,subframeP,rntiP);
|
LOG_W(RRC,"Frame %d, Subframe %d: UL failure reset: UE %x unknown \n",frameP,subframeP,rntiP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,8 @@ typedef struct nr_uid_linear_allocator_s {
|
|||||||
#define PROTOCOL_NR_RRC_CTXT_FMT PROTOCOL_CTXT_FMT
|
#define PROTOCOL_NR_RRC_CTXT_FMT PROTOCOL_CTXT_FMT
|
||||||
#define PROTOCOL_NR_RRC_CTXT_ARGS(CTXT_Pp) PROTOCOL_NR_CTXT_ARGS(CTXT_Pp)
|
#define PROTOCOL_NR_RRC_CTXT_ARGS(CTXT_Pp) PROTOCOL_NR_CTXT_ARGS(CTXT_Pp)
|
||||||
|
|
||||||
|
// 3GPP TS 38.331 Section 12 Table 12.1-1: UE performance requirements for RRC procedures for UEs
|
||||||
|
#define NR_RRC_PROCESSING_DELAY_MS 10
|
||||||
|
|
||||||
#define NR_UE_MODULE_INVALID ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!!
|
#define NR_UE_MODULE_INVALID ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!!
|
||||||
#define NR_UE_INDEX_INVALID ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!! used to be -1
|
#define NR_UE_INDEX_INVALID ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!! used to be -1
|
||||||
@@ -372,8 +374,10 @@ typedef struct gNB_RRC_UE_s {
|
|||||||
rb_id_t gnb_gtp_ebi[S1AP_MAX_E_RAB];
|
rb_id_t gnb_gtp_ebi[S1AP_MAX_E_RAB];
|
||||||
rb_id_t gnb_gtp_psi[S1AP_MAX_E_RAB];
|
rb_id_t gnb_gtp_psi[S1AP_MAX_E_RAB];
|
||||||
//GTPV1 F1-U TUNNELS
|
//GTPV1 F1-U TUNNELS
|
||||||
uint32_t incoming_teid[S1AP_MAX_E_RAB];
|
uint32_t incoming_teid[S1AP_MAX_E_RAB];
|
||||||
|
|
||||||
|
uint32_t nr_rrc_processing_timer;
|
||||||
|
uint32_t nr_rrc_processing_delay;
|
||||||
uint32_t ul_failure_timer;
|
uint32_t ul_failure_timer;
|
||||||
uint32_t ue_release_timer;
|
uint32_t ue_release_timer;
|
||||||
uint32_t ue_release_timer_thres;
|
uint32_t ue_release_timer_thres;
|
||||||
|
|||||||
+81
-29
@@ -161,6 +161,15 @@ void openair_nr_rrc_on(const protocol_ctxt_t *const ctxt_pP) {
|
|||||||
RC.nrrrc[ctxt_pP->module_id]->carrier.Srb0.Active = 1;
|
RC.nrrrc[ctxt_pP->module_id]->carrier.Srb0.Active = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void enable_nr_rrc_processing_timer(module_id_t module_id,
|
||||||
|
rrc_gNB_ue_context_t *ue_context_pP,
|
||||||
|
NR_SubcarrierSpacing_t subcarrierSpacing,
|
||||||
|
uint32_t delay_ms) {
|
||||||
|
ue_context_pP->ue_context.nr_rrc_processing_timer = 1;
|
||||||
|
ue_context_pP->ue_context.nr_rrc_processing_delay = delay_ms << subcarrierSpacing;
|
||||||
|
nr_rrc_mac_schedule_ue_enabled(module_id, ue_context_pP->ue_context.rnti, false);
|
||||||
|
}
|
||||||
|
|
||||||
///---------------------------------------------------------------------------------------------------------------///
|
///---------------------------------------------------------------------------------------------------------------///
|
||||||
///---------------------------------------------------------------------------------------------------------------///
|
///---------------------------------------------------------------------------------------------------------------///
|
||||||
|
|
||||||
@@ -187,17 +196,16 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
|
|||||||
|
|
||||||
if (NODE_IS_MONOLITHIC(rrc->node_type)){
|
if (NODE_IS_MONOLITHIC(rrc->node_type)){
|
||||||
rrc_mac_config_req_gNB(rrc->module_id,
|
rrc_mac_config_req_gNB(rrc->module_id,
|
||||||
rrc->carrier.ssb_SubcarrierOffset,
|
rrc->carrier.ssb_SubcarrierOffset,
|
||||||
rrc->carrier.pdsch_AntennaPorts,
|
rrc->carrier.pdsch_AntennaPorts,
|
||||||
rrc->carrier.pusch_AntennaPorts,
|
rrc->carrier.pusch_AntennaPorts,
|
||||||
rrc->carrier.sib1_tda,
|
rrc->carrier.sib1_tda,
|
||||||
rrc->carrier.minRXTXTIME,
|
rrc->carrier.minRXTXTIME,
|
||||||
(NR_ServingCellConfigCommon_t *)rrc->carrier.servingcellconfigcommon,
|
(NR_ServingCellConfigCommon_t *)rrc->carrier.servingcellconfigcommon,
|
||||||
&rrc->carrier.mib,
|
&rrc->carrier.mib,
|
||||||
0,
|
0,
|
||||||
0, // WIP hardcoded rnti
|
0, // WIP hardcoded rnti
|
||||||
(NR_CellGroupConfig_t *)NULL
|
(NR_CellGroupConfig_t *)NULL);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set flag to indicate that cell information is configured. This is required
|
/* set flag to indicate that cell information is configured. This is required
|
||||||
@@ -301,17 +309,17 @@ void apply_macrlc_config(gNB_RRC_INST *rrc,
|
|||||||
rrc_gNB_ue_context_t *const ue_context_pP,
|
rrc_gNB_ue_context_t *const ue_context_pP,
|
||||||
const protocol_ctxt_t *const ctxt_pP ) {
|
const protocol_ctxt_t *const ctxt_pP ) {
|
||||||
|
|
||||||
rrc_mac_config_req_gNB(rrc->module_id,
|
rrc_mac_config_req_gNB(rrc->module_id,
|
||||||
rrc->carrier.ssb_SubcarrierOffset,
|
rrc->carrier.ssb_SubcarrierOffset,
|
||||||
rrc->carrier.pdsch_AntennaPorts,
|
rrc->carrier.pdsch_AntennaPorts,
|
||||||
rrc->carrier.pusch_AntennaPorts,
|
rrc->carrier.pusch_AntennaPorts,
|
||||||
rrc->carrier.sib1_tda,
|
rrc->carrier.sib1_tda,
|
||||||
rrc->carrier.minRXTXTIME,
|
rrc->carrier.minRXTXTIME,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
ue_context_pP->ue_context.rnti,
|
ue_context_pP->ue_context.rnti,
|
||||||
get_softmodem_params()->sa ? ue_context_pP->ue_context.masterCellGroup : (NR_CellGroupConfig_t *)NULL);
|
get_softmodem_params()->sa ? ue_context_pP->ue_context.masterCellGroup : (NR_CellGroupConfig_t *)NULL);
|
||||||
|
|
||||||
nr_rrc_rlc_config_asn1_req(ctxt_pP,
|
nr_rrc_rlc_config_asn1_req(ctxt_pP,
|
||||||
ue_context_pP->ue_context.SRB_configList,
|
ue_context_pP->ue_context.SRB_configList,
|
||||||
@@ -372,6 +380,11 @@ rrc_gNB_generate_RRCSetup(
|
|||||||
|
|
||||||
ue_p->Srb0.Tx_buffer.payload_size = ret;
|
ue_p->Srb0.Tx_buffer.payload_size = ret;
|
||||||
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
rrc->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
||||||
(char *)(ue_p->Srb0.Tx_buffer.Payload),
|
(char *)(ue_p->Srb0.Tx_buffer.Payload),
|
||||||
ue_p->Srb0.Tx_buffer.payload_size,
|
ue_p->Srb0.Tx_buffer.payload_size,
|
||||||
@@ -487,6 +500,11 @@ rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest(
|
|||||||
|
|
||||||
ue_p->Srb0.Tx_buffer.payload_size = ret;
|
ue_p->Srb0.Tx_buffer.payload_size = ret;
|
||||||
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
rrc_instance_p->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
||||||
(char *)(ue_p->Srb0.Tx_buffer.Payload),
|
(char *)(ue_p->Srb0.Tx_buffer.Payload),
|
||||||
ue_p->Srb0.Tx_buffer.payload_size,
|
ue_p->Srb0.Tx_buffer.payload_size,
|
||||||
@@ -506,8 +524,7 @@ rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest(
|
|||||||
&rrc_instance_p->carrier.mib,
|
&rrc_instance_p->carrier.mib,
|
||||||
0,
|
0,
|
||||||
ue_context_pP->ue_context.rnti,
|
ue_context_pP->ue_context.rnti,
|
||||||
(NR_CellGroupConfig_t *)NULL
|
(NR_CellGroupConfig_t *)NULL);
|
||||||
);
|
|
||||||
|
|
||||||
LOG_I(NR_RRC,
|
LOG_I(NR_RRC,
|
||||||
PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)\n",
|
PROTOCOL_NR_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)\n",
|
||||||
@@ -758,6 +775,11 @@ rrc_gNB_generate_defaultRRCReconfiguration(
|
|||||||
NULL,
|
NULL,
|
||||||
ue_p->masterCellGroup);
|
ue_p->masterCellGroup);
|
||||||
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
rrc->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
free(ue_context_pP->ue_context.nas_pdu.buffer);
|
free(ue_context_pP->ue_context.nas_pdu.buffer);
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)buffer, size, "[MSG] RRC Reconfiguration\n");
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,(char *)buffer, size, "[MSG] RRC Reconfiguration\n");
|
||||||
@@ -1020,7 +1042,13 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
|
|||||||
&rrc->carrier,
|
&rrc->carrier,
|
||||||
NULL,
|
NULL,
|
||||||
cellGroupConfig);
|
cellGroupConfig);
|
||||||
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size,"[MSG] RRC Reconfiguration\n");
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
rrc->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
|
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size, "[MSG] RRC Reconfiguration\n");
|
||||||
|
|
||||||
/* Free all NAS PDUs */
|
/* Free all NAS PDUs */
|
||||||
for (i = 0; i < ue_context_pP->ue_context.nb_of_pdusessions; i++) {
|
for (i = 0; i < ue_context_pP->ue_context.nb_of_pdusessions; i++) {
|
||||||
@@ -1192,6 +1220,12 @@ rrc_gNB_modify_dedicatedRRCReconfiguration(
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC, (char *)buffer, size, "[MSG] RRC Reconfiguration\n");
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC, (char *)buffer, size, "[MSG] RRC Reconfiguration\n");
|
||||||
|
|
||||||
/* Free all NAS PDUs */
|
/* Free all NAS PDUs */
|
||||||
@@ -1293,9 +1327,14 @@ rrc_gNB_generate_dedicatedRRCReconfiguration_release(
|
|||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
ue_context_pP->ue_context.pdu_session_release_command_flag = 1;
|
ue_context_pP->ue_context.pdu_session_release_command_flag = 1;
|
||||||
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size,
|
|
||||||
"[MSG] RRC Reconfiguration\n");
|
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size, "[MSG] RRC Reconfiguration\n");
|
||||||
|
|
||||||
/* Free all NAS PDUs */
|
/* Free all NAS PDUs */
|
||||||
if (nas_length > 0) {
|
if (nas_length > 0) {
|
||||||
@@ -1403,8 +1442,7 @@ rrc_gNB_process_RRCReconfigurationComplete(
|
|||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
ue_context_pP->ue_context.rnti,
|
ue_context_pP->ue_context.rnti,
|
||||||
ue_context_pP->ue_context.masterCellGroup
|
ue_context_pP->ue_context.masterCellGroup);
|
||||||
);
|
|
||||||
LOG_D(NR_RRC,"Configuring RLC DRBs/SRBs for UE %x\n",ue_context_pP->ue_context.rnti);
|
LOG_D(NR_RRC,"Configuring RLC DRBs/SRBs for UE %x\n",ue_context_pP->ue_context.rnti);
|
||||||
nr_rrc_rlc_config_asn1_req(ctxt_pP,
|
nr_rrc_rlc_config_asn1_req(ctxt_pP,
|
||||||
SRB_configList, // NULL,
|
SRB_configList, // NULL,
|
||||||
@@ -1843,8 +1881,13 @@ rrc_gNB_process_RRCConnectionReestablishmentComplete(
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size,
|
|
||||||
"[MSG] RRC Reconfiguration\n");
|
enable_nr_rrc_processing_timer(ctxt_pP->module_id,
|
||||||
|
ue_context_pP,
|
||||||
|
RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
NR_RRC_PROCESSING_DELAY_MS);
|
||||||
|
|
||||||
|
LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size, "[MSG] RRC Reconfiguration\n");
|
||||||
|
|
||||||
/* Free all NAS PDUs */
|
/* Free all NAS PDUs */
|
||||||
for (i = 0; i < ue_context_pP->ue_context.nb_of_pdusessions; i++) {
|
for (i = 0; i < ue_context_pP->ue_context.nb_of_pdusessions; i++) {
|
||||||
@@ -3501,6 +3544,15 @@ void nr_rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
|
|||||||
get_ul_mimo_layers(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr));
|
get_ul_mimo_layers(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ue_context_p->ue_context.nr_rrc_processing_timer > 0) {
|
||||||
|
ue_context_p->ue_context.nr_rrc_processing_timer++;
|
||||||
|
if(ue_context_p->ue_context.nr_rrc_processing_timer >= ue_context_p->ue_context.nr_rrc_processing_delay) {
|
||||||
|
ue_context_p->ue_context.nr_rrc_processing_timer = 0;
|
||||||
|
nr_rrc_mac_schedule_ue_enabled(ctxt_pP->module_id, ue_context_p->ue_context.rnti, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ue_context_p->ue_context.ul_failure_timer > 0) {
|
if (ue_context_p->ue_context.ul_failure_timer > 0) {
|
||||||
ue_context_p->ue_context.ul_failure_timer++;
|
ue_context_p->ue_context.ul_failure_timer++;
|
||||||
|
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
|
|||||||
rrc_mac_config_req_gNB(rrc->module_id,
|
rrc_mac_config_req_gNB(rrc->module_id,
|
||||||
rrc->carrier.ssb_SubcarrierOffset,
|
rrc->carrier.ssb_SubcarrierOffset,
|
||||||
rrc->carrier.pdsch_AntennaPorts,
|
rrc->carrier.pdsch_AntennaPorts,
|
||||||
rrc->carrier.pusch_AntennaPorts,
|
rrc->carrier.pusch_AntennaPorts,
|
||||||
rrc->carrier.sib1_tda,
|
rrc->carrier.sib1_tda,
|
||||||
rrc->carrier.minRXTXTIME,
|
rrc->carrier.minRXTXTIME,
|
||||||
rrc->carrier.servingcellconfigcommon,
|
rrc->carrier.servingcellconfigcommon,
|
||||||
|
|||||||
Reference in New Issue
Block a user