From e5c6ee599cb9e4087830a918b9ad83bdaf8cfaff Mon Sep 17 00:00:00 2001 From: matzakos Date: Mon, 28 Feb 2022 21:51:41 +0100 Subject: [PATCH] Merge with latest updates of develop and fixes for F1 -Problem when parsing UE_RAT_container_list at the DU through UE context setup request -Some debug logs added to be removed once this is fixed --- openair2/F1AP/f1ap_du_ue_context_management.c | 1 + openair2/RRC/NR/rrc_gNB.c | 18 ++++++++++++++---- openair2/RRC/NR_UE/rrc_UE.c | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/openair2/F1AP/f1ap_du_ue_context_management.c b/openair2/F1AP/f1ap_du_ue_context_management.c index 1a4fbe38a5..30dec1de08 100644 --- a/openair2/F1AP/f1ap_du_ue_context_management.c +++ b/openair2/F1AP/f1ap_du_ue_context_management.c @@ -140,6 +140,7 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance, f1ap_ue_context_setup_req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList = (uint8_t *)calloc(1,ieCuRrcInfo->value.choice.CUtoDURRCInformation.uE_CapabilityRAT_ContainerList->size); memcpy(f1ap_ue_context_setup_req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList, ieCuRrcInfo->value.choice.CUtoDURRCInformation.uE_CapabilityRAT_ContainerList->buf, ieCuRrcInfo->value.choice.CUtoDURRCInformation.uE_CapabilityRAT_ContainerList->size); f1ap_ue_context_setup_req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length = ieCuRrcInfo->value.choice.CUtoDURRCInformation.uE_CapabilityRAT_ContainerList->size; + LOG_I(F1AP, "Size f1ap_ue_context_setup_req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length: %d \n", f1ap_ue_context_setup_req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length); } } diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index d61a7547da..48987b6a97 100755 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -2512,17 +2512,27 @@ rrc_gNB_decode_dcch( NR_UECapabilityInformation__criticalExtensions_PR_ueCapabilityInformation ) { struct NR_UE_CapabilityRAT_ContainerList *ue_CapabilityRAT_ContainerList = ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList; - + if(ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList!=NULL){ + LOG_I(NR_RRC, "ue_CapabilityRAT_ContainerList is present \n"); req->cu_to_du_rrc_information = calloc(1,sizeof(cu_to_du_rrc_information_t)); req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList = calloc(1,4096); asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_NR_UE_CapabilityRAT_ContainerList, NULL, - (void *)ue_CapabilityRAT_ContainerList, + (void *)ul_dcch_msg->message.choice.c1->choice.ueCapabilityInformation->criticalExtensions.choice.ueCapabilityInformation->ue_CapabilityRAT_ContainerList,//ue_CapabilityRAT_ContainerList, req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList, 4096); AssertFatal (enc_rval.encoded > 0, "ASN1 ue_CapabilityRAT_ContainerList encoding failed (%s, %jd)!\n", enc_rval.failed_type->name, enc_rval.encoded); req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length = (enc_rval.encoded+7)>>3; + LOG_I(NR_RRC, "Printing content of UE capabilityRANContainerList: \n"); + for(int i=0; icu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length; i++){ + printf("%x ", *(req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList+i)); + } + printf("\n"); + } + else{ + LOG_I(NR_RRC, "ue_CapabilityRAT_ContainerList is not present \n"); + } } itti_send_msg_to_task (TASK_CU_F1, ctxt_pP->module_id, message_p); } @@ -2994,7 +3004,7 @@ static void rrc_DU_process_ue_context_setup_request(MessageDef *msg_p, const cha if(req->cu_to_du_rrc_information!=NULL){ - if(req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList!=NULL){ + /*if(req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList!=NULL){ LOG_I(NR_RRC, "Length of ue_CapabilityRAT_ContainerList is: %d \n", (int) req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList_length); struct NR_UE_CapabilityRAT_ContainerList *ue_CapabilityRAT_ContainerList; asn_dec_rval_t dec_rval = uper_decode_complete( NULL, @@ -3078,7 +3088,7 @@ static void rrc_DU_process_ue_context_setup_request(MessageDef *msg_p, const cha //TODO } } - } + }*/ } NR_CellGroupConfig_t *cellGroupConfig; diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 2fa0583074..5da690920c 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -2719,9 +2719,9 @@ nr_rrc_ue_process_ueCapabilityEnquiry( AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", enc_rval.failed_type->name, enc_rval.encoded); - if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { + //if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { xer_fprint(stdout, &asn_DEF_NR_UL_DCCH_Message, (void *)&ul_dcch_msg); - } + //} LOG_I(NR_RRC, "UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); #ifdef ITTI_SIM