Commit 26750d18 authored by laurent's avatar laurent Committed by Sakthivel Velumani

e1ap bearer setup encoding invalid

parent d092788a
...@@ -334,7 +334,9 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") ...@@ -334,7 +334,9 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
# Debug related options # Debug related options
######################################### #########################################
add_boolean_option(DEBUG_ASN1C False "ASN1 coder/decoder Debug traces, see common/utils/config.h, the logs are regular OAI logs, in the log group 'ASN'") add_boolean_option(ASN_EMIT_DEBUG True "ASN1 coder/decoder Debug")
add_boolean_option(ASN_THREAD_SAFE True "ASN1 coder/decoder Debug")
add_boolean_option(MSG_PRINT True "print debug messages")
add_boolean_option(DISABLE_XER_PRINT False "print XER Format") add_boolean_option(DISABLE_XER_PRINT False "print XER Format")
add_boolean_option(XER_PRINT False "print XER Format") add_boolean_option(XER_PRINT False "print XER Format")
add_boolean_option(DEBUG_PDCP_PAYLOAD False "print PDCP PDU to stdout") # if true, make sure that global and PDCP log levels are trace add_boolean_option(DEBUG_PDCP_PAYLOAD False "print PDCP PDU to stdout") # if true, make sure that global and PDCP log levels are trace
......
...@@ -344,7 +344,8 @@ pdcp_config_set_security(): not yet developped ...@@ -344,7 +344,8 @@ pdcp_config_set_security(): not yet developped
nr_DRB_preconfiguration(): the mac layer calls this for ??? nr_DRB_preconfiguration(): the mac layer calls this for ???
nr_rrc_pdcp_config_asn1_req() adds a UE in pdcp, pdcp_remove_UE() removes it nr_pdcp_add_srbs() adds UE SRBs in pdcp, pdcp_remove_UE() removes it
nr_pdcp_add_drbs() adds UE DRBs in pdcp, pdcp_remove_UE() removes it
# GTP # GTP
Gtp + UDP are two twin threads performing the data plane interface to the core network Gtp + UDP are two twin threads performing the data plane interface to the core network
......
...@@ -507,6 +507,12 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -507,6 +507,12 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
E1AP_E1AP_PDU_t pdu = {0}; E1AP_E1AP_PDU_t pdu = {0};
/* Create */ /* Create */
/* 0. pdu Type */ /* 0. pdu Type */
e1ap_setup_req_t *setup = &getCxtE1(CPtype, instance)->setupReq;
if (!setup) {
LOG_E(E1AP, "got send_BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)\n", instance);
return -1;
}
pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage; pdu.present = E1AP_E1AP_PDU_PR_initiatingMessage;
asn1cCalloc(pdu.choice.initiatingMessage, msg); asn1cCalloc(pdu.choice.initiatingMessage, msg);
msg->procedureCode = E1AP_ProcedureCode_id_bearerContextSetup; msg->procedureCode = E1AP_ProcedureCode_id_bearerContextSetup;
...@@ -527,7 +533,8 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -527,7 +533,8 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
ieC2->criticality = E1AP_Criticality_reject; ieC2->criticality = E1AP_Criticality_reject;
ieC2->value.present = E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation; ieC2->value.present = E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation;
ieC2->value.choice.SecurityInformation.securityAlgorithm.cipheringAlgorithm = bearerCxt->cipheringAlgorithm; ieC2->value.choice.SecurityInformation.securityAlgorithm.cipheringAlgorithm = bearerCxt->cipheringAlgorithm;
OCTET_STRING_fromBuf(&ieC2->value.choice.SecurityInformation.uPSecuritykey.encryptionKey, bearerCxt->encryptionKey, strlen(bearerCxt->encryptionKey)); OCTET_STRING_fromBuf(&ieC2->value.choice.SecurityInformation.uPSecuritykey.encryptionKey,
bearerCxt->encryptionKey, strlen(bearerCxt->encryptionKey));
/* mandatory */ /* mandatory */
/* c3. UE DL Aggregate Maximum Bit Rate */ /* c3. UE DL Aggregate Maximum Bit Rate */
asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextSetupRequestIEs_t, ieC3); asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextSetupRequestIEs_t, ieC3);
...@@ -541,7 +548,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -541,7 +548,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
ieC4->id = E1AP_ProtocolIE_ID_id_Serving_PLMN; ieC4->id = E1AP_ProtocolIE_ID_id_Serving_PLMN;
ieC4->criticality = E1AP_Criticality_ignore; ieC4->criticality = E1AP_Criticality_ignore;
ieC4->value.present = E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity; ieC4->value.present = E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity;
e1ap_setup_req_t *setup = &getCxtE1(CPtype, instance)->setupReq;
PLMN_ID_t *servingPLMN = setup->plmns; // First PLMN is serving PLMN. TODO: Remove hard coding here PLMN_ID_t *servingPLMN = setup->plmns; // First PLMN is serving PLMN. TODO: Remove hard coding here
MCC_MNC_TO_PLMNID(servingPLMN->mcc, servingPLMN->mnc, servingPLMN->mnc_digit_length, &ieC4->value.choice.PLMN_Identity); MCC_MNC_TO_PLMNID(servingPLMN->mcc, servingPLMN->mnc, servingPLMN->mnc_digit_length, &ieC4->value.choice.PLMN_Identity);
/* mandatory */ /* mandatory */
...@@ -600,7 +606,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -600,7 +606,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
for(pdu_session_to_setup_t *i=bearerCxt->pduSession; i < bearerCxt->pduSession+bearerCxt->numPDUSessions; i++) { for(pdu_session_to_setup_t *i=bearerCxt->pduSession; i < bearerCxt->pduSession+bearerCxt->numPDUSessions; i++) {
asn1cSequenceAdd(pdu2Setup->list, E1AP_PDU_Session_Resource_To_Setup_Item_t, ieC6_1); asn1cSequenceAdd(pdu2Setup->list, E1AP_PDU_Session_Resource_To_Setup_Item_t, ieC6_1);
ieC6_1->pDU_Session_ID = i->sessionId; ieC6_1->pDU_Session_ID = i->sessionId;
ieC6_1->pDU_Session_Type = i->sessionType; ieC6_1->pDU_Session_Type = i->sessionType;
INT32_TO_OCTET_STRING(i->sst, &ieC6_1->sNSSAI.sST); INT32_TO_OCTET_STRING(i->sst, &ieC6_1->sNSSAI.sST);
...@@ -791,6 +796,12 @@ int e1apCUUP_send_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance) { ...@@ -791,6 +796,12 @@ int e1apCUUP_send_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance) {
int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
E1AP_E1AP_PDU_t *pdu) { E1AP_E1AP_PDU_t *pdu) {
e1ap_bearer_setup_req_t *bearerCxt = &getCxtE1(CPtype, instance)->bearerSetupReq;
if (!bearerCxt) {
LOG_E(E1AP, "got BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)\n", instance);
return -1;
}
DevAssert(pdu != NULL); DevAssert(pdu != NULL);
AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage, AssertFatal(pdu->present == E1AP_E1AP_PDU_PR_initiatingMessage,
"pdu->present != E1AP_E1AP_PDU_PR_initiatingMessage\n"); "pdu->present != E1AP_E1AP_PDU_PR_initiatingMessage\n");
...@@ -804,8 +815,6 @@ int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -804,8 +815,6 @@ int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
E1AP_BearerContextSetupRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextSetupRequest; E1AP_BearerContextSetupRequest_t *in = &pdu->choice.initiatingMessage->value.choice.BearerContextSetupRequest;
E1AP_BearerContextSetupRequestIEs_t *ie; E1AP_BearerContextSetupRequestIEs_t *ie;
e1ap_bearer_setup_req_t *bearerCxt = &getCxtE1(CPtype, instance)->bearerSetupReq;
MessageDef *msg = itti_alloc_new_message(TASK_CUUP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_REQ); MessageDef *msg = itti_alloc_new_message(TASK_CUUP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_REQ);
LOG_I(E1AP, "Bearer context setup number of IEs %d\n", in->protocolIEs.list.count); LOG_I(E1AP, "Bearer context setup number of IEs %d\n", in->protocolIEs.list.count);
...@@ -1207,6 +1216,11 @@ void *E1AP_CUCP_task(void *arg) { ...@@ -1207,6 +1216,11 @@ void *E1AP_CUCP_task(void *arg) {
e1apCUCP_send_SETUP_RESPONSE(myInstance, &E1AP_SETUP_RESP(msg)); e1apCUCP_send_SETUP_RESPONSE(myInstance, &E1AP_SETUP_RESP(msg));
break; break;
case E1AP_BEARER_CONTEXT_SETUP_REQ:
LOG_I(E1AP, "CUCP Task Received E1AP_BEARER_CONTEXT_SETUP_REQ\n");
e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(myInstance, &E1AP_BEARER_CONTEXT_SETUP_REQ(msg));
break;
default: default:
LOG_E(E1AP, "Unknown message received in TASK_CUCP_E1\n"); LOG_E(E1AP, "Unknown message received in TASK_CUCP_E1\n");
break; break;
......
...@@ -31,7 +31,7 @@ static e1ap_upcp_inst_t *e1ap_up_inst[NUMBER_OF_gNB_MAX] = {0}; ...@@ -31,7 +31,7 @@ static e1ap_upcp_inst_t *e1ap_up_inst[NUMBER_OF_gNB_MAX] = {0};
e1ap_upcp_inst_t *getCxtE1(E1_t type, instance_t instance) { e1ap_upcp_inst_t *getCxtE1(E1_t type, instance_t instance) {
AssertFatal( instance < sizeofArray(e1ap_cp_inst), "instance exceeds limit\n"); AssertFatal( instance < sizeofArray(e1ap_cp_inst), "instance exceeds limit\n");
return type ? e1ap_up_inst[instance] : e1ap_cp_inst[instance]; return type == UPtype ? e1ap_up_inst[instance] : e1ap_cp_inst[instance];
} }
int e1ap_assoc_id(E1_t type, instance_t instance) { int e1ap_assoc_id(E1_t type, instance_t instance) {
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#define E1AP_COMMON_H_ #define E1AP_COMMON_H_
#include "openair2/COMMON/e1ap_messages_types.h" #include "openair2/COMMON/e1ap_messages_types.h"
//#define ASN_DEBUG( x... ) LOG_I(ASN, x)
int e1ap_decode_pdu(E1AP_E1AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t length); int e1ap_decode_pdu(E1AP_E1AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t length);
e1ap_upcp_inst_t *getCxtE1(E1_t type, instance_t instance); e1ap_upcp_inst_t *getCxtE1(E1_t type, instance_t instance);
......
...@@ -68,7 +68,6 @@ static void configure_nr_rrc(uint32_t gnb_id) ...@@ -68,7 +68,6 @@ static void configure_nr_rrc(uint32_t gnb_id)
msg_p = itti_alloc_new_message (TASK_GNB_APP, 0, NRRRC_CONFIGURATION_REQ); msg_p = itti_alloc_new_message (TASK_GNB_APP, 0, NRRRC_CONFIGURATION_REQ);
if (RC.nrrrc[gnb_id]) { if (RC.nrrrc[gnb_id]) {
RC.nrrrc[gnb_id]->node_type=set_node_type();
RCconfig_NRRRC(msg_p,gnb_id, RC.nrrrc[gnb_id]); RCconfig_NRRRC(msg_p,gnb_id, RC.nrrrc[gnb_id]);
LOG_I(GNB_APP, "RRC starting with node type %d\n", RC.nrrrc[gnb_id]->node_type); LOG_I(GNB_APP, "RRC starting with node type %d\n", RC.nrrrc[gnb_id]->node_type);
...@@ -143,7 +142,6 @@ void *gNB_app_task(void *args_p) ...@@ -143,7 +142,6 @@ void *gNB_app_task(void *args_p)
uint32_t gnb_nb = RC.nb_nr_inst; uint32_t gnb_nb = RC.nb_nr_inst;
uint32_t gnb_id_start = 0; uint32_t gnb_id_start = 0;
uint32_t gnb_id_end = gnb_id_start + gnb_nb; uint32_t gnb_id_end = gnb_id_start + gnb_nb;
uint32_t gnb_id;
MessageDef *msg_p = NULL; MessageDef *msg_p = NULL;
const char *msg_name = NULL; const char *msg_name = NULL;
instance_t instance; instance_t instance;
...@@ -172,13 +170,17 @@ void *gNB_app_task(void *args_p) ...@@ -172,13 +170,17 @@ void *gNB_app_task(void *args_p)
RC.nrrrc = (gNB_RRC_INST **)malloc(RC.nb_nr_inst*sizeof(gNB_RRC_INST *)); RC.nrrrc = (gNB_RRC_INST **)malloc(RC.nb_nr_inst*sizeof(gNB_RRC_INST *));
LOG_I(PHY, "%s() RC.nb_nr_inst:%d RC.nrrrc:%p\n", __FUNCTION__, RC.nb_nr_inst, RC.nrrrc); LOG_I(PHY, "%s() RC.nb_nr_inst:%d RC.nrrrc:%p\n", __FUNCTION__, RC.nb_nr_inst, RC.nrrrc);
for (gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) { for (int gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) {
RC.nrrrc[gnb_id] = (gNB_RRC_INST*)calloc(1,sizeof(gNB_RRC_INST)); RC.nrrrc[gnb_id] = (gNB_RRC_INST*)calloc(1,sizeof(gNB_RRC_INST));
LOG_I(PHY, "%s() Creating RRC instance RC.nrrrc[%d]:%p (%d of %d)\n", __FUNCTION__, gnb_id, RC.nrrrc[gnb_id], gnb_id+1, gnb_id_end); LOG_I(PHY, "%s() Creating RRC instance RC.nrrrc[%d]:%p (%d of %d)\n", __FUNCTION__, gnb_id, RC.nrrrc[gnb_id], gnb_id+1, gnb_id_end);
RC.nrrrc[gnb_id]->node_type=set_node_type();
configure_nr_rrc(gnb_id); configure_nr_rrc(gnb_id);
} }
if (RC.nb_nr_inst > 0 && !get_softmodem_params()->nsa) { if (RC.nb_nr_inst > 0 &&
!get_softmodem_params()->nsa &&
!(RC.nrrrc[0]->node_type == ngran_gNB_DU)) {
// we start pdcp in both cuup (for drb) and cucp (for srb)
init_pdcp(); init_pdcp();
} }
......
...@@ -1036,72 +1036,45 @@ static void add_drb(int is_gnb, int rnti, struct NR_DRB_ToAddMod *s, ...@@ -1036,72 +1036,45 @@ static void add_drb(int is_gnb, int rnti, struct NR_DRB_ToAddMod *s,
LOG_I(PDCP, "%s:%s:%d: added DRB for UE RNTI %x\n", __FILE__, __FUNCTION__, __LINE__, rnti); LOG_I(PDCP, "%s:%s:%d: added DRB for UE RNTI %x\n", __FILE__, __FUNCTION__, __LINE__, rnti);
} }
bool nr_rrc_pdcp_config_asn1_req(const protocol_ctxt_t *const ctxt_pP, void nr_pdcp_add_srbs(eNB_flag_t enb_flag, rnti_t rnti,
NR_SRB_ToAddModList_t *const srb2add_list, NR_SRB_ToAddModList_t *const srb2add_list,
NR_DRB_ToAddModList_t *const drb2add_list, const uint8_t security_modeP,
NR_DRB_ToReleaseList_t *const drb2release_list, uint8_t *const kRRCenc,
const uint8_t security_modeP, uint8_t *const kRRCint) {
uint8_t *const kRRCenc,
uint8_t *const kRRCint,
uint8_t *const kUPenc,
uint8_t *const kUPint,
LTE_PMCH_InfoList_r9_t *pmch_InfoList_r9,
rb_id_t *const defaultDRB,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list)
{
int rnti = ctxt_pP->rnti;
int i;
if (//ctxt_pP->enb_flag != 1 ||
ctxt_pP->module_id != 0 ||
ctxt_pP->instance != 0 ||
ctxt_pP->eNB_index != 0 ||
//ctxt_pP->configured != 2 ||
//srb2add_list == NULL ||
//drb2add_list != NULL ||
//drb2release_list != NULL ||
//security_modeP != 255 ||
//kRRCenc != NULL ||
//kRRCint != NULL ||
//kUPenc != NULL ||
pmch_InfoList_r9 != NULL /*||
defaultDRB != NULL */) {
LOG_I(PDCP,"Releasing DRBs, oops\n");
TODO;
}
if (srb2add_list != NULL) { if (srb2add_list != NULL) {
for (i = 0; i < srb2add_list->list.count; i++) { for (int i = 0; i < srb2add_list->list.count; i++) {
add_srb(ctxt_pP->enb_flag,rnti, srb2add_list->list.array[i], add_srb(enb_flag,rnti, srb2add_list->list.array[i],
security_modeP & 0x0f, (security_modeP >> 4) & 0x0f, security_modeP & 0x0f, (security_modeP >> 4) & 0x0f,
kRRCenc, kRRCint); kRRCenc, kRRCint);
} }
} }
LOG_W(PDCP, "nr_pdcp_add_srbs() with void list\n");
if (kRRCenc)
free(kRRCenc);
if (kRRCint)
free(kRRCint);
}
void nr_pdcp_add_drbs(eNB_flag_t enb_flag, rnti_t rnti,
NR_DRB_ToAddModList_t *const drb2add_list,
const uint8_t security_modeP,
uint8_t *const kUPenc,
uint8_t *const kUPint,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list) {
if (drb2add_list != NULL) { if (drb2add_list != NULL) {
for (i = 0; i < drb2add_list->list.count; i++) { for (int i = 0; i < drb2add_list->list.count; i++) {
add_drb(ctxt_pP->enb_flag, rnti, drb2add_list->list.array[i], add_drb(enb_flag, rnti, drb2add_list->list.array[i],
rlc_bearer2add_list->list.array[i]->rlc_Config, rlc_bearer2add_list->list.array[i]->rlc_Config,
security_modeP & 0x0f, (security_modeP >> 4) & 0x0f, security_modeP & 0x0f, (security_modeP >> 4) & 0x0f,
kUPenc, kUPint); kUPenc, kUPint);
} }
} } else
LOG_W(PDCP, "nr_pdcp_add_drbs() with void list\n");
/* update security */ if (kUPenc)
if (kRRCint != NULL) { free(kUPenc);
/* todo */ if (kUPint)
} free(kUPint);
if (drb2release_list != NULL) {
// TODO
}
free(kRRCenc);
free(kRRCint);
free(kUPenc);
free(kUPint);
return 0;
} }
/* Dummy function due to dependency from LTE libraries */ /* Dummy function due to dependency from LTE libraries */
...@@ -1188,21 +1161,14 @@ void nr_DRB_preconfiguration(uint16_t crnti) ...@@ -1188,21 +1161,14 @@ void nr_DRB_preconfiguration(uint16_t crnti)
else{ else{
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, crnti, 0, 0,0); PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, crnti, 0, 0,0);
} }
nr_rrc_pdcp_config_asn1_req( nr_pdcp_add_drbs(ctxt.enb_flag, ctxt.rnti,
&ctxt, rbconfig->drb_ToAddModList ,
(NR_SRB_ToAddModList_t *) NULL, 0,
rbconfig->drb_ToAddModList , NULL,
rbconfig->drb_ToReleaseList, NULL,
0, Rlc_Bearer_ToAdd_list);
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
Rlc_Bearer_ToAdd_list);
nr_rrc_rlc_config_asn1_req (&ctxt, nr_rrc_rlc_config_asn1_req (&ctxt,
(NR_SRB_ToAddModList_t *) NULL, (NR_SRB_ToAddModList_t *) NULL,
rbconfig->drb_ToAddModList, rbconfig->drb_ToAddModList,
......
...@@ -206,15 +206,15 @@ rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt ...@@ -206,15 +206,15 @@ rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt
const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP, const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list); struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
bool nr_rrc_pdcp_config_asn1_req(const protocol_ctxt_t *const ctxt_pP, void nr_pdcp_add_srbs(eNB_flag_t enb_flag, rnti_t rnti,
NR_SRB_ToAddModList_t *const srb2add_list, NR_SRB_ToAddModList_t *const srb2add_list,
NR_DRB_ToAddModList_t *const drb2add_list, const uint8_t security_modeP,
NR_DRB_ToReleaseList_t *const drb2release_list, uint8_t *const kRRCenc,
const uint8_t security_modeP, uint8_t *const kUPint);
uint8_t *const kRRCenc,
uint8_t *const kRRCint, void nr_pdcp_add_drbs(eNB_flag_t enb_flag, rnti_t rnti,
uint8_t *const kUPenc, NR_DRB_ToAddModList_t *const drb2add_list,
uint8_t *const kUPint, const uint8_t security_modeP,
LTE_PMCH_InfoList_r9_t *pmch_InfoList_r9, uint8_t *const kUPenc,
rb_id_t *const defaultDRB, uint8_t *const kUPint,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list); struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
...@@ -316,23 +316,7 @@ void apply_macrlc_config(gNB_RRC_INST *rrc, ...@@ -316,23 +316,7 @@ void apply_macrlc_config(gNB_RRC_INST *rrc,
} }
void apply_pdcp_config(rrc_gNB_ue_context_t *const ue_context_pP,
const protocol_ctxt_t *const ctxt_pP ) {
nr_rrc_pdcp_config_asn1_req(ctxt_pP,
ue_context_pP->ue_context.SRB_configList,
NULL,
NULL,
0,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
get_softmodem_params()->sa ? ue_context_pP->ue_context.masterCellGroup->rlc_BearerToAddModList : NULL);
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
...@@ -1340,19 +1324,21 @@ rrc_gNB_process_RRCReconfigurationComplete( ...@@ -1340,19 +1324,21 @@ rrc_gNB_process_RRCReconfigurationComplete(
LOG_D(NR_RRC,"Configuring PDCP DRBs/SRBs for UE %x\n",ue_context_pP->ue_context.rnti); LOG_D(NR_RRC,"Configuring PDCP DRBs/SRBs for UE %x\n",ue_context_pP->ue_context.rnti);
nr_rrc_pdcp_config_asn1_req(ctxt_pP, nr_pdcp_add_srbs(ctxt_pP->enb_flag, ctxt_pP->rnti,
SRB_configList, // NULL, SRB_configList,
DRB_configList, (ue_context_pP->ue_context.integrity_algorithm << 4)
DRB_Release_configList2, | ue_context_pP->ue_context.ciphering_algorithm,
(ue_context_pP->ue_context.integrity_algorithm << 4) kRRCenc,
| ue_context_pP->ue_context.ciphering_algorithm, kRRCint);
kRRCenc,
kRRCint, nr_pdcp_add_drbs(ctxt_pP->enb_flag, ctxt_pP->rnti,
kUPenc, DRB_configList,
kUPint, (ue_context_pP->ue_context.integrity_algorithm << 4)
NULL, | ue_context_pP->ue_context.ciphering_algorithm,
NULL, kUPenc,
get_softmodem_params()->sa ? ue_context_pP->ue_context.masterCellGroup->rlc_BearerToAddModList : NULL); kUPint,
get_softmodem_params()->sa ? ue_context_pP->ue_context.masterCellGroup->rlc_BearerToAddModList : NULL);
/* Refresh SRBs/DRBs */ /* Refresh SRBs/DRBs */
if (!NODE_IS_CU(RC.nrrrc[ctxt_pP->module_id]->node_type)) { if (!NODE_IS_CU(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
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);
...@@ -2188,27 +2174,6 @@ int nr_rrc_gNB_decode_ccch(protocol_ctxt_t *const ctxt_pP, ...@@ -2188,27 +2174,6 @@ int nr_rrc_gNB_decode_ccch(protocol_ctxt_t *const ctxt_pP,
LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n", LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_UE_FMT"CALLING RLC CONFIG SRB1 (rbid %d)\n",
PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_NR_RRC_CTXT_UE_ARGS(ctxt_pP),
Idx); Idx);
// nr_rrc_pdcp_config_asn1_req(ctxt_pP,
// ue_context_p->ue_context.SRB_configList,
// NULL,
// NULL,
// 0xff,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL);
// if (!NODE_IS_CU(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
// nr_rrc_rlc_config_asn1_req(ctxt_pP,
// ue_context_p->ue_context.SRB_configList,
// NULL,
// NULL,
// NULL,
// NULL);
// }
} }
break; break;
......
...@@ -992,8 +992,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ( ...@@ -992,8 +992,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
At CU-CP we configure the E1 bearer context setup parameters (PDU sessions, DRBs and At CU-CP we configure the E1 bearer context setup parameters (PDU sessions, DRBs and
QoS flows) same as in these functions. At CU-UP we create PDU Sessions and allocate DRBs. QoS flows) same as in these functions. At CU-UP we create PDU Sessions and allocate DRBs.
*/ */
MessageDef *msg_p = NULL; MessageDef *msg_p = itti_alloc_new_message(TASK_CUCP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_REQ);
msg_p = itti_alloc_new_message(TASK_CUCP_E1, 0, E1AP_BEARER_CONTEXT_SETUP_REQ);
e1ap_bearer_setup_req_t *bearer_req = &E1AP_BEARER_CONTEXT_SETUP_REQ(msg_p); e1ap_bearer_setup_req_t *bearer_req = &E1AP_BEARER_CONTEXT_SETUP_REQ(msg_p);
bearer_req->gNB_cu_cp_ue_id = gNB_ue_ngap_id; bearer_req->gNB_cu_cp_ue_id = gNB_ue_ngap_id;
......
...@@ -383,21 +383,15 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_ ...@@ -383,21 +383,15 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
ctxt.subframe, ctxt.subframe,
ctxt.eNB_index); ctxt.eNB_index);
nr_rrc_pdcp_config_asn1_req(&ctxt, nr_pdcp_add_drbs(ctxt.enb_flag, ctxt.rnti,
get_softmodem_params()->sa ? ue_context_p->ue_context.rb_config->srb_ToAddModList : (NR_SRB_ToAddModList_t *) NULL, ue_context_p->ue_context.rb_config->drb_ToAddModList ,
ue_context_p->ue_context.rb_config->drb_ToAddModList , (ue_context_p->ue_context.integrity_algorithm << 4) | ue_context_p->ue_context.ciphering_algorithm,
ue_context_p->ue_context.rb_config->drb_ToReleaseList, kUPenc,
(ue_context_p->ue_context.integrity_algorithm << 4) | ue_context_p->ue_context.ciphering_algorithm, kUPint,
NULL, /* kRRCenc - unused */ ue_context_p->ue_context.secondaryCellGroup->rlc_BearerToAddModList);
NULL, /* kRRCint - unused */
kUPenc, /* kUPenc */
kUPint, /* kUPint */
NULL,
NULL,
ue_context_p->ue_context.secondaryCellGroup->rlc_BearerToAddModList);
nr_rrc_rlc_config_asn1_req(&ctxt, nr_rrc_rlc_config_asn1_req(&ctxt,
get_softmodem_params()->sa ? ue_context_p->ue_context.rb_config->srb_ToAddModList : (NR_SRB_ToAddModList_t *) NULL, get_softmodem_params()->sa ? ue_context_p->ue_context.rb_config->srb_ToAddModList : NULL,
ue_context_p->ue_context.rb_config->drb_ToAddModList, ue_context_p->ue_context.rb_config->drb_ToAddModList,
ue_context_p->ue_context.rb_config->drb_ToReleaseList, ue_context_p->ue_context.rb_config->drb_ToReleaseList,
(LTE_PMCH_InfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL,
......
...@@ -1989,19 +1989,12 @@ nr_rrc_ue_establish_srb2( ...@@ -1989,19 +1989,12 @@ nr_rrc_ue_establish_srb2(
NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCint); NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kRRCint);
// Refresh SRBs // Refresh SRBs
nr_rrc_pdcp_config_asn1_req(ctxt_pP, nr_pdcp_add_srbs(ctxt_pP->enb_flag, ctxt_pP->rnti,
radioBearerConfig->srb_ToAddModList, radioBearerConfig->srb_ToAddModList,
NULL, NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm |
NULL, (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm | kRRCenc,
(NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4), kRRCint);
kRRCenc,
kRRCint,
NULL,
NULL,
NULL,
NULL,
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->rlc_BearerToAddModList);
// Refresh SRBs // Refresh SRBs
nr_rrc_rlc_config_asn1_req(ctxt_pP, nr_rrc_rlc_config_asn1_req(ctxt_pP,
radioBearerConfig->srb_ToAddModList, radioBearerConfig->srb_ToAddModList,
...@@ -2094,27 +2087,21 @@ nr_rrc_ue_establish_srb2( ...@@ -2094,27 +2087,21 @@ nr_rrc_ue_establish_srb2(
NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kUPint); NR_UE_rrc_inst[ctxt_pP->module_id].kgnb, &kUPint);
// Refresh DRBs // Refresh DRBs
nr_rrc_pdcp_config_asn1_req(ctxt_pP, nr_pdcp_add_drbs(ctxt_pP->enb_flag, ctxt_pP->rnti,
NULL, radioBearerConfig->drb_ToAddModList,
radioBearerConfig->drb_ToAddModList, NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm
NULL, | (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4),
NR_UE_rrc_inst[ctxt_pP->module_id].cipheringAlgorithm kUPenc,
| (NR_UE_rrc_inst[ctxt_pP->module_id].integrityProtAlgorithm << 4), kUPint,
NULL, NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->rlc_BearerToAddModList);
NULL, // Refresh DRBs
kUPenc, nr_rrc_rlc_config_asn1_req(ctxt_pP,
kUPint, NULL,
NULL, radioBearerConfig->drb_ToAddModList,
NR_UE_rrc_inst[ctxt_pP->module_id].defaultDRB, NULL,
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->rlc_BearerToAddModList); NULL,
// Refresh DRBs NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->rlc_BearerToAddModList
nr_rrc_rlc_config_asn1_req(ctxt_pP, );
NULL,
radioBearerConfig->drb_ToAddModList,
NULL,
NULL,
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->rlc_BearerToAddModList
);
} // drb_ToAddModList // } // drb_ToAddModList //
if (radioBearerConfig->drb_ToReleaseList != NULL) { if (radioBearerConfig->drb_ToReleaseList != NULL) {
......
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