Commit 98bb3e88 authored by Stone WU's avatar Stone WU Committed by Vadym Furmanchuk

bug #128027:[eNB][RA]allocate different rnti for UE if SS configured temp rnti exist

parent 4e4829de
......@@ -1424,7 +1424,13 @@ initiate_ra_proc(module_id_t module_idP,
ra[i].rnti = drnti[nb_ue];
} else if ((RC.ss.mode > SS_ENB) && RC.ss.ss_crnti[CC_id].b_Temp_RNTI_Present) {
// SS_MODE configured setup the CRNTI from the Cell_config
ra[i].rnti = RC.ss.ss_crnti[CC_id].Temp_C_RNTI;
/* Since the configured Temp_C_RNTI always be same, it would cause many UE mac context conflict after when no UE release(rrcRelease) on eNB side.
Here we generate different RNTI if the UE with rnti already exist */
uint16_t new_rnti = RC.ss.ss_crnti[CC_id].Temp_C_RNTI;
while(-1 != find_UE_id(module_idP, new_rnti)){
new_rnti +=1;
}
ra[i].rnti = new_rnti;
break;
}else {
ra[i].rnti = taus();
......
......@@ -54,7 +54,6 @@
#include "ss_eNB_vt_timer_task.h"
extern RAN_CONTEXT_t RC;
//extern uint16_t ss_rnti_g;
static acpCtx_t ctx_drb_g = NULL;
extern SSConfigContext_t SS_context;
......
......@@ -63,7 +63,6 @@ SSConfigContext_t SS_context;
static acpCtx_t ctx_srb_g = NULL;
static uint16_t rnti_g = 0;
static instance_t instance_g = 0;
//uint16_t ss_rnti_g = 0;
enum MsgUserId
{
......@@ -105,7 +104,7 @@ static void ss_send_srb_data(ss_rrc_pdu_ind_t *pdu_ind,int cell_index)
DevAssert(pdu_ind->sdu_size >= 0);
DevAssert(pdu_ind->srb_id >= 0);
rnti_g = pdu_ind->rnti;
SS_context.SSCell_list[cell_index].ss_rnti_g = rnti_g;
SS_context.SSCell_list[cell_index].ss_rnti_g = rnti_g; /* Always update UE rnti with latest actual rnti */
size_t msgSize = size;
memset(&ind, 0, sizeof(ind));
ind.Common.CellId = SS_context.SSCell_list[cell_index].eutra_cellId;
......
......@@ -775,7 +775,7 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
{
RRC_CONFIGURATION_REQ(msg_p).ActiveParam[cell_index].b_C_RNTI_Present = true;
RRC_CONFIGURATION_REQ(msg_p).ActiveParam[cell_index].C_RNTI = bin_to_int(AddOrReconfigure->Active.v.C_RNTI.v, 16);
SS_context.SSCell_list[cell_index].ss_rnti_g = RRC_CONFIGURATION_REQ(msg_p).ActiveParam[cell_index].C_RNTI;
//SS_context.SSCell_list[cell_index].ss_rnti_g = RRC_CONFIGURATION_REQ(msg_p).ActiveParam[cell_index].C_RNTI;
LOG_A(ENB_SS_SYS_TASK, "C_RNTI present in Active Cell Config %d\n", RRC_CONFIGURATION_REQ(msg_p).ActiveParam[cell_index].C_RNTI);
}
if (AddOrReconfigure->Active.v.RachProcedureConfig.d == true)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment