PLMN check F1 Setup: cellId does not necessarily match
Multiple DUs host cells, whose cell ID cannot match (to identify them uniquely). Hence, don't check for equality with CU, because otherwise, we can never connect multiple DUs.
This commit is contained in:
@@ -45,8 +45,7 @@ static bool rrc_gNB_plmn_matches(const gNB_RRC_INST *rrc, const f1ap_served_cell
|
||||
const gNB_RrcConfigurationReq *conf = &rrc->configuration;
|
||||
return conf->num_plmn == 1 // F1 supports only one
|
||||
&& conf->mcc[0] == info->plmn.mcc
|
||||
&& conf->mnc[0] == info->plmn.mnc
|
||||
&& rrc->nr_cellid == info->nr_cellid;
|
||||
&& conf->mnc[0] == info->plmn.mnc;
|
||||
}
|
||||
|
||||
void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
|
||||
@@ -71,13 +70,11 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req, sctp_assoc_t assoc_id)
|
||||
f1ap_served_cell_info_t *cell_info = &req->cell[0].info;
|
||||
if (!rrc_gNB_plmn_matches(rrc, cell_info)) {
|
||||
LOG_E(NR_RRC,
|
||||
"PLMN mismatch: CU %d%d cellID %ld, DU %d%d cellID %ld\n",
|
||||
"PLMN mismatch: CU %d%d, DU %d%d\n",
|
||||
rrc->configuration.mcc[0],
|
||||
rrc->configuration.mnc[0],
|
||||
rrc->nr_cellid,
|
||||
cell_info->plmn.mcc,
|
||||
cell_info->plmn.mnc,
|
||||
cell_info->nr_cellid);
|
||||
cell_info->plmn.mnc);
|
||||
f1ap_setup_failure_t fail = {.cause = F1AP_CauseRadioNetwork_plmn_not_served_by_the_gNB_CU};
|
||||
rrc->mac_rrc.f1_setup_failure(assoc_id, &fail);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user