fixes some issues found by review
- AssertFatal() in nr_rlc_srb0_recv_sdu() if the srb0 is not found - do_RRCSetup() may return -1, handle it properly - do_RRCReject() may return -1, handle it properly - remove one switch in rrc_gNB_generate_RRCReject()
This commit is contained in:
@@ -1252,13 +1252,10 @@ void nr_rlc_srb0_recv_sdu(int rnti, unsigned char *buf, int size)
|
|||||||
ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rnti);
|
ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rnti);
|
||||||
|
|
||||||
rb = ue->srb0;
|
rb = ue->srb0;
|
||||||
|
AssertFatal(rb != NULL, "SDU sent to unknown RB rnti %d srb0\n", rnti);
|
||||||
|
|
||||||
if (rb != NULL) {
|
rb->set_time(rb, nr_rlc_current_time);
|
||||||
rb->set_time(rb, nr_rlc_current_time);
|
rb->recv_sdu(rb, (char *)buf, size, -1);
|
||||||
rb->recv_sdu(rb, (char *)buf, size, -1);
|
|
||||||
} else {
|
|
||||||
LOG_E(RLC, "SDU sent to unknown RB rnti %d srb0\n", rnti);
|
|
||||||
}
|
|
||||||
|
|
||||||
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -726,11 +726,11 @@ void do_SpCellConfig(gNB_RRC_INST *rrc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
uint8_t do_RRCReject(uint8_t Mod_id,
|
int do_RRCReject(uint8_t Mod_id,
|
||||||
uint8_t *const buffer)
|
uint8_t *const buffer)
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
asn_enc_rval_t enc_rval;;
|
asn_enc_rval_t enc_rval;
|
||||||
NR_DL_CCCH_Message_t dl_ccch_msg;
|
NR_DL_CCCH_Message_t dl_ccch_msg;
|
||||||
NR_RRCReject_t *rrcReject;
|
NR_RRCReject_t *rrcReject;
|
||||||
NR_RejectWaitTime_t waitTime = 1;
|
NR_RejectWaitTime_t waitTime = 1;
|
||||||
@@ -767,7 +767,7 @@ uint8_t do_RRCReject(uint8_t Mod_id,
|
|||||||
|
|
||||||
LOG_D(NR_RRC,"RRCReject Encoded %zd bits (%zd bytes)\n",
|
LOG_D(NR_RRC,"RRCReject Encoded %zd bits (%zd bytes)\n",
|
||||||
enc_rval.encoded,(enc_rval.encoded+7)/8);
|
enc_rval.encoded,(enc_rval.encoded+7)/8);
|
||||||
return((enc_rval.encoded+7)/8);
|
return (enc_rval.encoded + 7) / 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_initial_SpCellConfig(int uid,
|
void fill_initial_SpCellConfig(int uid,
|
||||||
|
|||||||
@@ -72,8 +72,8 @@ uint8_t do_SIB23_NR(rrc_gNB_carrier_data_t *carrier,
|
|||||||
void do_SpCellConfig(gNB_RRC_INST *rrc,
|
void do_SpCellConfig(gNB_RRC_INST *rrc,
|
||||||
struct NR_SpCellConfig *spconfig);
|
struct NR_SpCellConfig *spconfig);
|
||||||
|
|
||||||
uint8_t do_RRCReject(uint8_t Mod_id,
|
int do_RRCReject(uint8_t Mod_id,
|
||||||
uint8_t *const buffer);
|
uint8_t *const buffer);
|
||||||
|
|
||||||
void fill_initial_SpCellConfig(int uid,
|
void fill_initial_SpCellConfig(int uid,
|
||||||
NR_SpCellConfig_t *SpCellConfig,
|
NR_SpCellConfig_t *SpCellConfig,
|
||||||
|
|||||||
+16
-26
@@ -362,6 +362,7 @@ rrc_gNB_generate_RRCSetup(
|
|||||||
scc,
|
scc,
|
||||||
sccd,
|
sccd,
|
||||||
&rrc->configuration);
|
&rrc->configuration);
|
||||||
|
AssertFatal(size > 0, "do_RRCSetup failed\n");
|
||||||
AssertFatal(size <= 1024, "memory corruption\n");
|
AssertFatal(size <= 1024, "memory corruption\n");
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
||||||
@@ -413,6 +414,7 @@ rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest(
|
|||||||
scc,
|
scc,
|
||||||
sccd,
|
sccd,
|
||||||
&rrc_instance_p->configuration);
|
&rrc_instance_p->configuration);
|
||||||
|
AssertFatal(size > 0, "do_RRCSetup failed\n");
|
||||||
AssertFatal(size <= 1024, "memory corruption\n");
|
AssertFatal(size <= 1024, "memory corruption\n");
|
||||||
|
|
||||||
AssertFatal(size>0,"Error generating RRCSetup for RRCReestablishmentRequest\n");
|
AssertFatal(size>0,"Error generating RRCSetup for RRCReestablishmentRequest\n");
|
||||||
@@ -471,7 +473,9 @@ rrc_gNB_generate_RRCReject(
|
|||||||
|
|
||||||
unsigned char buf[1024];
|
unsigned char buf[1024];
|
||||||
int size = do_RRCReject(ctxt_pP->module_id, buf);
|
int size = do_RRCReject(ctxt_pP->module_id, buf);
|
||||||
|
AssertFatal(size > 0, "do_RRCReject failed\n");
|
||||||
AssertFatal(size <= 1024, "memory corruption\n");
|
AssertFatal(size <= 1024, "memory corruption\n");
|
||||||
|
|
||||||
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
LOG_DUMPMSG(NR_RRC, DEBUG_RRC,
|
||||||
(char *)buf,
|
(char *)buf,
|
||||||
size,
|
size,
|
||||||
@@ -481,32 +485,18 @@ rrc_gNB_generate_RRCReject(
|
|||||||
PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
|
PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
|
||||||
size);
|
size);
|
||||||
|
|
||||||
switch (RC.nrrrc[ctxt_pP->module_id]->node_type) {
|
f1ap_dl_rrc_message_t dl_rrc = {
|
||||||
case ngran_gNB:
|
.gNB_CU_ue_id = 0,
|
||||||
case ngran_gNB_CU: {
|
.gNB_DU_ue_id = 0,
|
||||||
f1ap_dl_rrc_message_t dl_rrc = {
|
.old_gNB_DU_ue_id = 0xFFFFFF,
|
||||||
.gNB_CU_ue_id = 0,
|
.rrc_container = buf,
|
||||||
.gNB_DU_ue_id = 0,
|
.rrc_container_length = size,
|
||||||
.old_gNB_DU_ue_id = 0xFFFFFF,
|
.rnti = ue_p->rnti,
|
||||||
.rrc_container = buf,
|
.srb_id = CCCH,
|
||||||
.rrc_container_length = size,
|
.execute_duplication = 1,
|
||||||
.rnti = ue_p->rnti,
|
.RAT_frequency_priority_information.en_dc = 0
|
||||||
.srb_id = CCCH,
|
};
|
||||||
.execute_duplication = 1,
|
rrc->mac_rrc.dl_rrc_message_transfer(ctxt_pP->module_id, &dl_rrc);
|
||||||
.RAT_frequency_priority_information.en_dc = 0
|
|
||||||
};
|
|
||||||
rrc->mac_rrc.dl_rrc_message_transfer(ctxt_pP->module_id, &dl_rrc);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ngran_gNB_DU:
|
|
||||||
// nothing to do for DU
|
|
||||||
AssertFatal(1==0,"nothing to do for DU\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
default :
|
|
||||||
LOG_W(NR_RRC, "Unknown node type %d\n", RC.nrrrc[ctxt_pP->module_id]->node_type);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user