mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
fix (mac): gracefully handle unsupported 5QIs on DRB setup
When a CU sends a DRB with a non-dynamic 5QI that is not in the DU MAC lookup table, get_non_dynamic_priority() used to AssertFatal and abort. Return -1 and log a warning instead, and skip flows with negative priority when deriving the logical-channel priority so setup can continue. A more spec-aligned fix would require F1AP UE Context Setup/Modification Failure (not implemented) in case of a logical error in the DU: > Where the logical error occurs in a request message of a class 1 procedure, > and the procedure has a message to report this unsuccessful outcome, > this message shall be sent with an appropriate cause value. Signed-off-by: Guido Casati <guido.casati@openairinterface.org>
This commit is contained in:
@@ -265,8 +265,8 @@ static int get_non_dynamic_priority(int fiveqi)
|
||||
for (int i = 0; i < sizeofArray(qos_fiveqi); ++i)
|
||||
if (qos_fiveqi[i] == fiveqi)
|
||||
return qos_priority[i];
|
||||
AssertFatal(false, "illegal 5QI value %d\n", fiveqi);
|
||||
return 0;
|
||||
LOG_W(NR_MAC, "unsupported non-dynamic 5QI %d\n", fiveqi);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static NR_QoS_config_t get_qos_config(const f1ap_qos_flow_param_t *qos)
|
||||
@@ -319,6 +319,8 @@ static int handle_ue_context_drbs_setup(NR_UE_info_t *UE,
|
||||
int prio = 100;
|
||||
for (int q = 0; q < drb->nr.flows_len; ++q) {
|
||||
c.qos_config[q] = get_qos_config(&drb->nr.flows[q].param);
|
||||
if (c.qos_config[q].priority < 0)
|
||||
continue;
|
||||
prio = min(prio, c.qos_config[q].priority);
|
||||
}
|
||||
c.priority = prio;
|
||||
|
||||
Reference in New Issue
Block a user