Merge remote-tracking branch 'origin/fix-double-use-cudata' into integration_2023_w44
This commit is contained in:
@@ -134,11 +134,15 @@ static instance_t get_f1_gtp_instance(void)
|
||||
|
||||
void e1_bearer_context_setup(const e1ap_bearer_setup_req_t *req)
|
||||
{
|
||||
bool need_ue_id_mgmt = e1_used();
|
||||
|
||||
/* mirror the CU-CP UE ID for CU-UP */
|
||||
uint32_t cu_up_ue_id = req->gNB_cu_cp_ue_id;
|
||||
f1_ue_data_t ued = {.secondary_ue = req->gNB_cu_cp_ue_id};
|
||||
cu_add_f1_ue_data(cu_up_ue_id, &ued);
|
||||
LOG_I(E1AP, "adding UE with CU-CP UE ID %d and CU-UP UE ID %d\n", req->gNB_cu_cp_ue_id, cu_up_ue_id);
|
||||
if (need_ue_id_mgmt) {
|
||||
cu_add_f1_ue_data(cu_up_ue_id, &ued);
|
||||
LOG_I(E1AP, "adding UE with CU-CP UE ID %d and CU-UP UE ID %d\n", req->gNB_cu_cp_ue_id, cu_up_ue_id);
|
||||
}
|
||||
|
||||
instance_t n3inst = get_n3_gtp_instance();
|
||||
instance_t f1inst = get_f1_gtp_instance();
|
||||
@@ -260,6 +264,8 @@ void e1_bearer_context_modif(const e1ap_bearer_setup_req_t *req)
|
||||
|
||||
void e1_bearer_release_cmd(const e1ap_bearer_release_cmd_t *cmd)
|
||||
{
|
||||
bool need_ue_id_mgmt = e1_used();
|
||||
|
||||
instance_t n3inst = get_n3_gtp_instance();
|
||||
instance_t f1inst = get_f1_gtp_instance();
|
||||
|
||||
@@ -269,7 +275,9 @@ void e1_bearer_release_cmd(const e1ap_bearer_release_cmd_t *cmd)
|
||||
if (f1inst >= 0) // is there F1-U?
|
||||
newGtpuDeleteAllTunnels(f1inst, cmd->gNB_cu_up_ue_id);
|
||||
nr_pdcp_remove_UE(cmd->gNB_cu_up_ue_id);
|
||||
cu_remove_f1_ue_data(cmd->gNB_cu_up_ue_id);
|
||||
if (need_ue_id_mgmt) {
|
||||
cu_remove_f1_ue_data(cmd->gNB_cu_up_ue_id);
|
||||
}
|
||||
|
||||
e1ap_bearer_release_cplt_t cplt = {
|
||||
.gNB_cu_cp_ue_id = cmd->gNB_cu_cp_ue_id,
|
||||
|
||||
@@ -22,14 +22,22 @@
|
||||
#include "cuup_cucp_if.h"
|
||||
|
||||
static e1_if_t e1_if;
|
||||
static bool g_uses_e1;
|
||||
|
||||
e1_if_t *get_e1_if(void)
|
||||
{
|
||||
return &e1_if;
|
||||
}
|
||||
|
||||
bool e1_used(void)
|
||||
{
|
||||
return g_uses_e1;
|
||||
}
|
||||
|
||||
void nr_pdcp_e1_if_init(bool uses_e1)
|
||||
{
|
||||
g_uses_e1 = uses_e1;
|
||||
|
||||
if (uses_e1)
|
||||
cuup_cucp_init_e1ap(&e1_if);
|
||||
else
|
||||
|
||||
@@ -38,6 +38,7 @@ typedef struct e1_if_t {
|
||||
} e1_if_t;
|
||||
|
||||
e1_if_t *get_e1_if(void);
|
||||
bool e1_used(void);
|
||||
void nr_pdcp_e1_if_init(bool uses_e1);
|
||||
|
||||
void cuup_cucp_init_direct(e1_if_t *iface);
|
||||
|
||||
Reference in New Issue
Block a user