diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h index 555a7b993c..0f76103fcb 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h @@ -349,7 +349,6 @@ typedef struct { // initial Random Access Preamble power int preambleRxTargetPower; int msg3_deltaPreamble; - bool msg3_C_RNTI; int preambleReceivedTargetPower_config; /// Random-access Contention Resolution Timer NR_timer_t contention_resolution_timer; @@ -637,6 +636,7 @@ typedef struct NR_UE_MAC_INST_s { int f_b_f_c; bool pusch_power_control_initialized; int delta_msg2; + bool msg3_C_RNTI; pthread_mutex_t if_mutex; ue_mac_stats_t stats; } NR_UE_MAC_INST_t; diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c index 0d957ad4b5..c0ab5bd310 100644 --- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c +++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c @@ -69,6 +69,7 @@ void nr_ue_init_mac(NR_UE_MAC_INST_t *mac) mac->p_Max = INT_MIN; mac->p_Max_alt = INT_MIN; mac->n_ta_offset = -1; + mac->msg3_C_RNTI = false; mac->ntn_ta.ntn_params_changed = false; reset_mac_inst(mac); diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index 04285e672a..43114686d1 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -879,7 +879,6 @@ bool init_RA(NR_UE_MAC_INST_t *mac, int frame) // Random acces procedure initialization mac->state = UE_PERFORMING_RA; ra->RA_active = true; - ra->msg3_C_RNTI = false; NR_PRACH_RESOURCES_t *prach_resources = &ra->prach_resources; fapi_nr_config_request_t *cfg = &mac->phy_config.config_req; // flush MSG3 buffer @@ -1142,7 +1141,7 @@ void nr_get_Msg3_MsgA_PUSCH_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS } uint8_t *pdu = buf; - if (ra->msg3_C_RNTI) + if (mac->msg3_C_RNTI) pdu = fill_msg3_crnti_pdu(ra, pdu, mac->crnti); else pdu = fill_msg3_pdu_from_rlc(mac, pdu, TBS_max); @@ -1189,7 +1188,7 @@ void nr_ra_succeeded(NR_UE_MAC_INST_t *mac, const uint8_t gNB_index, const frame } ra->RA_active = false; - ra->msg3_C_RNTI = false; + mac->msg3_C_RNTI = false; ra->ra_state = nrRA_SUCCEEDED; mac->state = UE_CONNECTED; free_and_zero(ra->Msg3_buffer); @@ -1257,7 +1256,7 @@ void trigger_MAC_UE_RA(NR_UE_MAC_INST_t *mac, dci_pdu_rel15_t *pdcch_order) mac->state = UE_PERFORMING_RA; reset_ra(mac, false); RA_config_t *ra = &mac->ra; - ra->msg3_C_RNTI = true; + mac->msg3_C_RNTI = true; if (pdcch_order) { ra->pdcch_order.active = true; ra->pdcch_order.preamble_index = pdcch_order->ra_preamble_index; diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 33ee5dd4c5..18ee198582 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -3952,7 +3952,7 @@ static void handle_rar_reception(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t if (!ra->cfra) { ra->t_crnti = rar->TCRNTI_2 + (rar->TCRNTI_1 << 8); rnti = ra->t_crnti; - if (!ra->msg3_C_RNTI) + if (!mac->msg3_C_RNTI) nr_mac_rrc_msg3_ind(mac->ue_id, rnti, dlinfo->gNB_index); } fapi_nr_ul_config_request_pdu_t *pdu = lockGet_ul_config(mac, frame_tx, slot_tx, FAPI_NR_UL_CONFIG_TYPE_PUSCH); diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 96d1ee6d4d..64de7b4560 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -1121,7 +1121,7 @@ static nr_dci_format_t handle_dci(NR_UE_MAC_INST_t *mac, // if notification of a reception of a PDCCH transmission of the SpCell is received from lower layers // if the C-RNTI MAC CE was included in Msg3 // consider this Contention Resolution successful - if (mac->ra.msg3_C_RNTI && mac->ra.ra_state == nrRA_WAIT_CONTENTION_RESOLUTION) + if (mac->msg3_C_RNTI && mac->ra.ra_state == nrRA_WAIT_CONTENTION_RESOLUTION) nr_ra_succeeded(mac, gNB_index, frame, slot); // suspend RAR response window timer