Code does nothing: gtpv1u_data_g never populated, always HASH_TABLE_KEY_NOT_EXISTS
This commit is contained in:
@@ -46,7 +46,6 @@ struct gNB_RRC_INST_s;
|
|||||||
struct eNB_MAC_INST_s;
|
struct eNB_MAC_INST_s;
|
||||||
struct eNB_MAC_INST_NB_IoT_s;
|
struct eNB_MAC_INST_NB_IoT_s;
|
||||||
struct gNB_MAC_INST_s;
|
struct gNB_MAC_INST_s;
|
||||||
struct gtpv1u_data_s;
|
|
||||||
struct RU_t_s;
|
struct RU_t_s;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -100,8 +99,6 @@ typedef struct {
|
|||||||
struct eNB_MAC_INST_NB_IoT_s **nb_iot_mac;
|
struct eNB_MAC_INST_NB_IoT_s **nb_iot_mac;
|
||||||
/// NR MAC context variables
|
/// NR MAC context variables
|
||||||
struct gNB_MAC_INST_s **nrmac;
|
struct gNB_MAC_INST_s **nrmac;
|
||||||
/// GTPu descriptor
|
|
||||||
struct gtpv1u_data_s *gtpv1u_data_g;
|
|
||||||
/// RU descriptors. These describe what each radio unit is supposed to do and contain the necessary functions for fronthaul interfaces
|
/// RU descriptors. These describe what each radio unit is supposed to do and contain the necessary functions for fronthaul interfaces
|
||||||
struct RU_t_s **ru;
|
struct RU_t_s **ru;
|
||||||
/// Mask to indicate fronthaul setup status of RU (hard-limit to 64 RUs)
|
/// Mask to indicate fronthaul setup status of RU (hard-limit to 64 RUs)
|
||||||
|
|||||||
@@ -7721,9 +7721,6 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
|
|||||||
|
|
||||||
case X2AP_HANDOVER_REQ_ACK: {
|
case X2AP_HANDOVER_REQ_ACK: {
|
||||||
struct rrc_eNB_ue_context_s *ue_context_p = NULL;
|
struct rrc_eNB_ue_context_s *ue_context_p = NULL;
|
||||||
x2ap_handover_req_ack_t *x2ap_handover_req_ack = NULL;
|
|
||||||
hashtable_rc_t hash_rc = HASH_TABLE_KEY_NOT_EXISTS;
|
|
||||||
gtpv1u_ue_data_t *gtpv1u_ue_data_p = NULL;
|
|
||||||
ue_context_p = rrc_eNB_get_ue_context(RC.rrc[instance], X2AP_HANDOVER_REQ_ACK(msg_p).rnti);
|
ue_context_p = rrc_eNB_get_ue_context(RC.rrc[instance], X2AP_HANDOVER_REQ_ACK(msg_p).rnti);
|
||||||
|
|
||||||
if (ue_context_p == NULL) {
|
if (ue_context_p == NULL) {
|
||||||
@@ -7738,40 +7735,6 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
|
|||||||
if (ue_context_p->ue_context.handover_info->state != HO_REQUEST)
|
if (ue_context_p->ue_context.handover_info->state != HO_REQUEST)
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
hash_rc = hashtable_get(RC.gtpv1u_data_g->ue_mapping, ue_context_p->ue_context.rnti, (void **)>pv1u_ue_data_p);
|
|
||||||
|
|
||||||
/* set target enb gtp teid */
|
|
||||||
if (hash_rc == HASH_TABLE_KEY_NOT_EXISTS) {
|
|
||||||
LOG_E(RRC, "X2AP_HANDOVER_REQ_ACK func(), hashtable_get failed: while getting ue rnti %x in hashtable ue_mapping\n", ue_context_p->ue_context.rnti);
|
|
||||||
} else {
|
|
||||||
uint8_t nb_e_rabs_tobesetup = 0;
|
|
||||||
ebi_t eps_bearer_id = 0;
|
|
||||||
int ip_offset = 0;
|
|
||||||
in_addr_t in_addr;
|
|
||||||
x2ap_handover_req_ack = &X2AP_HANDOVER_REQ_ACK(msg_p);
|
|
||||||
nb_e_rabs_tobesetup = x2ap_handover_req_ack->nb_e_rabs_tobesetup;
|
|
||||||
ue_context_p->ue_context.nb_x2u_e_rabs = nb_e_rabs_tobesetup;
|
|
||||||
|
|
||||||
for (int i = 0; i < nb_e_rabs_tobesetup; i++) {
|
|
||||||
ip_offset = 0;
|
|
||||||
eps_bearer_id = x2ap_handover_req_ack->e_rabs_tobesetup[i].e_rab_id;
|
|
||||||
ue_context_p->ue_context.enb_gtp_x2u_ebi[i] = eps_bearer_id;
|
|
||||||
ue_context_p->ue_context.enb_gtp_x2u_teid[i] = x2ap_handover_req_ack->e_rabs_tobesetup[i].gtp_teid;
|
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_teNB = x2ap_handover_req_ack->e_rabs_tobesetup[i].gtp_teid;
|
|
||||||
|
|
||||||
if ((x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.length == 4) || (x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.length == 20)) {
|
|
||||||
in_addr = *((in_addr_t *)x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.buffer);
|
|
||||||
ip_offset = 4;
|
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].tenb_ip_addr = in_addr;
|
|
||||||
ue_context_p->ue_context.enb_gtp_x2u_addrs[i] = x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.length == 16) || (x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.length == 20)) {
|
|
||||||
memcpy(gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].tenb_ip6_addr.s6_addr, &x2ap_handover_req_ack->e_rabs_tobesetup[i].eNB_addr.buffer[ip_offset], 16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rrc_eNB_process_handoverCommand(instance, ue_context_p, &X2AP_HANDOVER_REQ_ACK(msg_p));
|
rrc_eNB_process_handoverCommand(instance, ue_context_p, &X2AP_HANDOVER_REQ_ACK(msg_p));
|
||||||
ue_context_p->ue_context.handover_info->state = HO_PREPARE;
|
ue_context_p->ue_context.handover_info->state = HO_PREPARE;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user