Commit 557b67b7 authored by Guido Casati's avatar Guido Casati

Fixes to F1 Setup Failure

* added missing Transaction ID to te F1 Setup Failure message struct
* fill F1 Setup Failure transaction ID in RRC before calling the F1 Setup Failure function
parent 22cc2ab1
...@@ -220,7 +220,9 @@ typedef struct f1ap_gnb_cu_configuration_update_s { ...@@ -220,7 +220,9 @@ typedef struct f1ap_gnb_cu_configuration_update_s {
typedef struct f1ap_setup_failure_s { typedef struct f1ap_setup_failure_s {
uint16_t cause; uint16_t cause;
uint16_t time_to_wait; uint16_t time_to_wait;
uint16_t criticality_diagnostics; uint16_t criticality_diagnostics;
/// Transaction ID (M)
uint64_t transaction_id;
} f1ap_setup_failure_t; } f1ap_setup_failure_t;
typedef struct f1ap_gnb_cu_configuration_update_acknowledge_s { typedef struct f1ap_gnb_cu_configuration_update_acknowledge_s {
......
...@@ -120,6 +120,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id) ...@@ -120,6 +120,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
if (req->num_cells_available != 1) { if (req->num_cells_available != 1) {
LOG_E(NR_RRC, "can only handle on DU cell, but gNB_DU %ld has %d\n", req->gNB_DU_id, req->num_cells_available); LOG_E(NR_RRC, "can only handle on DU cell, but gNB_DU %ld has %d\n", req->gNB_DU_id, req->num_cells_available);
f1ap_setup_failure_t fail = {.cause = F1AP_CauseRadioNetwork_gNB_CU_Cell_Capacity_Exceeded}; f1ap_setup_failure_t fail = {.cause = F1AP_CauseRadioNetwork_gNB_CU_Cell_Capacity_Exceeded};
fail.transaction_id = F1AP_get_next_transaction_identifier(0, 0);
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail); rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
return; return;
} }
...@@ -132,6 +133,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id) ...@@ -132,6 +133,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
cell_info->plmn.mcc, cell_info->plmn.mcc,
cell_info->plmn.mnc); cell_info->plmn.mnc);
f1ap_setup_failure_t fail = {.cause = F1AP_CauseRadioNetwork_plmn_not_served_by_the_gNB_CU}; f1ap_setup_failure_t fail = {.cause = F1AP_CauseRadioNetwork_plmn_not_served_by_the_gNB_CU};
fail.transaction_id = F1AP_get_next_transaction_identifier(0, 0);
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail); rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
return; return;
} }
...@@ -144,6 +146,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id) ...@@ -144,6 +146,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
it->assoc_id, it->assoc_id,
it->setup_req->gNB_DU_id); it->setup_req->gNB_DU_id);
f1ap_setup_failure_t fail = {.cause = F1AP_CauseMisc_unspecified}; f1ap_setup_failure_t fail = {.cause = F1AP_CauseMisc_unspecified};
fail.transaction_id = F1AP_get_next_transaction_identifier(0, 0);
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail); rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
return; return;
} }
...@@ -161,6 +164,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id) ...@@ -161,6 +164,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
new_info->nr_cellid, new_info->nr_cellid,
new_info->nr_pci); new_info->nr_pci);
f1ap_setup_failure_t fail = {.cause = F1AP_CauseMisc_unspecified}; f1ap_setup_failure_t fail = {.cause = F1AP_CauseMisc_unspecified};
fail.transaction_id = F1AP_get_next_transaction_identifier(0, 0);
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail); rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
return; return;
} }
...@@ -179,6 +183,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id) ...@@ -179,6 +183,7 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
if (!extract_sys_info(sys_info, &mib, &sib1)) { if (!extract_sys_info(sys_info, &mib, &sib1)) {
LOG_W(RRC, "rejecting DU ID %ld\n", req->gNB_DU_id); LOG_W(RRC, "rejecting DU ID %ld\n", req->gNB_DU_id);
f1ap_setup_failure_t fail = {.cause = F1AP_CauseProtocol_semantic_error}; f1ap_setup_failure_t fail = {.cause = F1AP_CauseProtocol_semantic_error};
fail.transaction_id = F1AP_get_next_transaction_identifier(0, 0);
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail); rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
ASN_STRUCT_FREE(asn_DEF_NR_MeasurementTimingConfiguration, mtc); ASN_STRUCT_FREE(asn_DEF_NR_MeasurementTimingConfiguration, mtc);
return; return;
......
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