diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c index ad24e55755..2a8ebabef2 100644 --- a/executables/nr-softmodem.c +++ b/executables/nr-softmodem.c @@ -400,7 +400,7 @@ static int create_gNB_tasks(ngran_node_t node_type, configmodule_interface_t *cf } } - // If CU + // E1AP initialisation, whether the node is a CU or has integrated CU if (node_type == ngran_gNB_CU || node_type == ngran_gNB) { MessageDef *msg = RCconfig_NR_CU_E1(NULL); instance_t inst = 0; diff --git a/openair2/COMMON/e1ap_messages_def.h b/openair2/COMMON/e1ap_messages_def.h index 6da8e85ee1..fd39731df1 100644 --- a/openair2/COMMON/e1ap_messages_def.h +++ b/openair2/COMMON/e1ap_messages_def.h @@ -22,10 +22,10 @@ /* gNB_CUUP application layer -> E1AP messages */ MESSAGE_DEF(E1AP_REGISTER_REQ, MESSAGE_PRIORITY_MED, e1ap_register_req_t, e1ap_register_req) -/* E1AP messages -> RRC (CU-CP) */ +/* E1AP Interface Management Messages */ +/* E1AP Setup Request: gNB-CU-UP -> gNB-CU-CP */ MESSAGE_DEF(E1AP_SETUP_REQ , MESSAGE_PRIORITY_MED , e1ap_setup_req_t , e1ap_setup_req) - -/* E1AP -> eNB_DU or eNB_CU_RRC -> E1AP application layer messages */ +/* E1AP Setup Response: gNB-CU-CP -> gNB-CU-UP */ MESSAGE_DEF(E1AP_SETUP_RESP , MESSAGE_PRIORITY_MED, e1ap_setup_resp_t , e1ap_setup_resp) /* E1AP Setup Failure: gNB-CU-CP -> gNB-CU-UP */ MESSAGE_DEF(E1AP_SETUP_FAIL, MESSAGE_PRIORITY_MED, e1ap_setup_fail_t, e1ap_setup_fail) diff --git a/openair2/E1AP/e1ap.c b/openair2/E1AP/e1ap.c index baeb690440..662a3af6e1 100644 --- a/openair2/E1AP/e1ap.c +++ b/openair2/E1AP/e1ap.c @@ -1860,6 +1860,14 @@ void e1apHandleTimer(instance_t myInstance) e1_task_send_sctp_association_req(TASK_CUUP_E1, myInstance, &getCxtE1(myInstance)->net_config); } +/** + * @brief E1AP Centralized Unit Control Plane (CU-CP) task function. + * + * This is the main task loop for the E1AP CUCP module: + * it listens for incoming messages from the Inter-Task Interface (ITTI) + * and calls the relevant handlers for each message type. + * + */ void *E1AP_CUCP_task(void *arg) { LOG_I(E1AP, "Starting E1AP at CU CP\n"); MessageDef *msg = NULL; @@ -1931,6 +1939,14 @@ void *E1AP_CUCP_task(void *arg) { } } +/** + * @brief E1AP Centralized Unit User Plane (CU-UP) task function. + * + * This is the main task loop for the E1AP CUUP module: + * it listens for incoming messages from the Inter-Task Interface (ITTI) + * and calls the relevant handlers for each message type. + * + */ void *E1AP_CUUP_task(void *arg) { LOG_I(E1AP, "Starting E1AP at CU UP\n"); e1ap_common_init(); diff --git a/openair2/GNB_APP/gnb_app.c b/openair2/GNB_APP/gnb_app.c index e2c0b48bd4..081508958b 100644 --- a/openair2/GNB_APP/gnb_app.c +++ b/openair2/GNB_APP/gnb_app.c @@ -148,7 +148,7 @@ void *gNB_app_task(void *args_p) AssertFatal(false, "Create task for E1AP CP failed\n"); E1_t e1type = CPtype; MessageDef *msg = RCconfig_NR_CU_E1(&e1type); - AssertFatal(msg != NULL, "Send inti to task for E1AP CP failed\n"); + AssertFatal(msg != NULL, "Send itti to task for E1AP CP failed\n"); // this sends the E1AP_REGISTER_REQ to CU-CP so it sets up the socket // it does NOT use the E1AP part itti_send_msg_to_task(TASK_CUCP_E1, 0, msg); diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 48f59fcb51..f6486c0032 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -2065,6 +2065,9 @@ static pdusession_level_qos_parameter_t *get_qos_characteristics(const int qfi, return NULL; } +/** + * @brief E1AP Bearer Context Setup Response processing +*/ void rrc_gNB_process_e1_bearer_context_setup_resp(e1ap_bearer_setup_resp_t *resp, instance_t instance) { gNB_RRC_INST *rrc = RC.nrrrc[0]; @@ -2172,6 +2175,9 @@ void rrc_gNB_process_e1_bearer_context_setup_resp(e1ap_bearer_setup_resp_t *resp rrc->mac_rrc.ue_context_modification_request(ue_data.du_assoc_id, &ue_context_modif_req); } +/** + * @brief E1AP Bearer Context Modification Response processing +*/ void rrc_gNB_process_e1_bearer_context_modif_resp(const e1ap_bearer_modif_resp_t *resp) { gNB_RRC_INST *rrc = RC.nrrrc[0]; @@ -2188,6 +2194,9 @@ void rrc_gNB_process_e1_bearer_context_modif_resp(const e1ap_bearer_modif_resp_t } } +/** + * @brief E1AP Bearer Context Release processing +*/ void rrc_gNB_process_e1_bearer_context_release_cplt(const e1ap_bearer_release_cplt_t *cplt) { // there is not really anything to do here as of now diff --git a/openair2/RRC/NR/rrc_gNB_cuup.c b/openair2/RRC/NR/rrc_gNB_cuup.c index 75003b05eb..4ed1886e75 100644 --- a/openair2/RRC/NR/rrc_gNB_cuup.c +++ b/openair2/RRC/NR/rrc_gNB_cuup.c @@ -134,6 +134,9 @@ static void e1ap_setup_failure(sctp_assoc_t assoc_id, uint64_t transac_id) itti_send_msg_to_task(TASK_CUCP_E1, 0 /*unused by callee*/, msg_p); } +/** + * @brief E1AP Setup Request processing on CU-CP +*/ int rrc_gNB_process_e1_setup_req(sctp_assoc_t assoc_id, e1ap_setup_req_t *req) { AssertFatal(req->supported_plmns <= PLMN_LIST_MAX_SIZE, "Supported PLMNs is more than PLMN_LIST_MAX_SIZE\n");