Commit Graph
25550 Commits
Author SHA1 Message Date
Raphael Defosseux 4ca52ef456 fix(ci): PACKAGE_VERSION is missing from nr-cuup executable
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-02-12 11:48:52 +01:00
Jaroslava Fiedlerova 223c63826d Merge remote-tracking branch 'origin/handle_issue_730' into integration_2024_w06 2024-02-09 12:39:03 +01:00
Jaroslava Fiedlerova c3e7cb7e35 Merge remote-tracking branch 'origin/update-rc-sm' into integration_2024_w06 2024-02-09 12:37:12 +01:00
Jaroslava Fiedlerova 638acd6040 Merge remote-tracking branch 'origin/NR_UE_msg3_buffer' into integration_2024_w06 2024-02-09 12:07:48 +01:00
Jaroslava Fiedlerova 83d46bb516 Merge remote-tracking branch 'origin/NR_UE_rework_LC_config' into integration_2024_w06 2024-02-09 12:06:36 +01:00
francescomani f3c61b12fe remove pointer to logicalChannelConfig in LC ordered info and store actual values in the list 2024-02-08 15:16:56 +01:00
francescomani 29ddb924e3 do not call RCconfig_NR_L1 twice in monolithic mode 2024-02-08 13:59:28 +01:00
francescomani c093e4ed4f reworking configuration of LogicalChannelConfig at MAC UE 2024-02-08 13:19:48 +01:00
Teodora 1675e6e155 Update FlexRIC commit and E2AP README 2024-02-07 17:19:18 +01:00
Teodora d7ff30db55 Enable multiple RC subscriptions
- create hash table to save ric_req_id (key) and array of ran_param_id(s) (values), per each subscription
  - create RB tree to store list of ric_req_id(s) for each ran_param_id
    => when the async event occurs, it is easier and faster to search per ran_param_id and send the indication message to all xApps (ric_req_id(s)) subscribed to the same ran_param_id
  - it is important to mention that both data structures need to be maintained, especially when unsubscription occurs (free_aperiodic_subscription)
2024-02-07 15:14:27 +01:00
Teodora 3cc3bbbabc Support RC aperiodic subscription
- subscribe to "UE RRC State Change" RAN Parameter ID
  - expected asynchronous events from E2 node
2024-02-07 14:32:23 +01:00
Raphael Defosseux 2b796874ca fix(ci): hot-fix for E2-agent build w/ latest version of ASN1C
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-02-06 13:52:02 +01:00
Robert Schmidt ff1cc7b378 Merge branch 'integration_2024_w05' into 'develop'
Integration: 2024.w05

See merge request oai/openairinterface5g!2549

* !2537 Fix for UE PUSCH scheduler DURATION_RX_TO_TX assertion
* !2538 Fix for UE MAC PDU LCID handling
* !2542 Fix L1_SSB_CSI_RSRP table mapping and check validity
* !2544 NR UE RRC timers improvement
* !2546 Correcting the location of packages
* !2493 Fix for computing SSB subcarrier offset
* !2496 MCS for retransmission fix in case of dci failed detection at NR UE
* !2503 Handle PDU Sessions in NG Initial UE context Setup and forward 5G-S-TMSI to core
* enable caching in the docker build of the CI build steps
* !2541 Fix RA bug, improve overall logging
2024-02-06 10:14:17 +00:00
Raphael Defosseux ef0f33b4a1 fix(ci): the .git folder is excluded by default in the build-config pod. Adding it back
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-02-05 14:53:01 +01:00
Jaroslava Fiedlerova 3b2355ce4c Merge remote-tracking branch 'origin/fix-ra-reduce-logs' into integration_2024_w05 2024-02-05 13:27:12 +01:00
Robert Schmidt be3d37159f Enable some caching in CI build steps 2024-02-05 10:38:34 +01:00
Jaroslava Fiedlerova 3de71d11bf Merge remote-tracking branch 'origin/pdu-session-initial-setup' into integration_2024_w05 2024-02-05 09:27:10 +01:00
Jaroslava Fiedlerova 9af66c9ec6 Merge remote-tracking branch 'origin/NR_UE_fix_no_mcs_dci_failed_detection' into integration_2024_w05 2024-02-05 09:23:52 +01:00
Jaroslava Fiedlerova 905fb9b6fd Merge remote-tracking branch 'origin/fix_computing_ssb_subcarrier_offset' into integration_2024_w05 2024-02-05 09:21:16 +01:00
Robert Schmidt 4a7d7975ce Send RRC UECapabilityEnquiry after reconfig, trigger UE update if necessary
We used to trigger the UECapabilityEnquiry right after
SecurityModeComplete, and before the RRCReconfiguration (which we call
"default" reconfiguration). However, 38.401 tells us that we should send
the RRCReconfiguration right after the SecurityModeComplete. In fact,
even though we get the UE capabilities, we cannot use them during this
reconfiguration, as we would first need to update the DU with a UE
Context Modification Request, which we cannot, as we just sent the UE
Context Setup Request, and the DU relies on first getting the
RRCReconfiguration.

Since we rely on a subsequent reconfiguration anyway, we can safely
trigger the UECapabilityEnquiry after RRCReconfigurationComplete.
(38.331 also says we can send UECapabilityEnquiry at any point.)

To cater for the possibility that there might not be any reconfiguration
coming afterwards, we check if a DRB has been set up. If not, we assume
a reconfiguration will come, and do not trigger one only for the UE
capabilities (this is what we do before this commit). If we already have
DRBs set up, they might have been set up during the "default" RRC
Reconfiguration, and another reconfiguration might not follow soon; in
this case, we trigger the reconfiguration by sending the UE capabilities
to the DU right away.
2024-02-03 11:28:43 +01:00
Robert Schmidt 0f100a6e94 Delay PDU session resource setup request if necessary
The next commit moves the UE Capability Enquiry after the first
reconfiguration. This has the effect that for some UEs (e.g., iPhone),
the Setup Requests come too close to each other, triggering RRC
Reconfigurations while previous transactions are ongoing.

I think the "true" solution would be to implement some tracking of
transactions across RRC, F1AP, E1AP, but this might require many
changes. For the moment, limit to delaying PDU session resource setups
to prevent above problem. Delaying is done using ITTI timers (to be able
to serve other UEs), waiting 10ms each time, up to 20 times (to not
deadlock the transaction -- after all, if the UE is unhappy, it will
drop the connection).
2024-02-03 11:28:43 +01:00
Robert Schmidt d6dd87ae8c RRC transaction IDs: clean up
- Put consistently transaction IDs
- Remove transaction IDs when transaction finished, or in places that do
  not trigger an RRC transaction
2024-02-03 11:28:43 +01:00
Robert Schmidt d2cd7c862a Add transactions IDs to logs for RRC reconfig/uecap enq 2024-02-03 11:28:43 +01:00
Robert Schmidt 8302a060fa RRC transactions: mark UE Capability transaction 2024-02-03 11:28:43 +01:00
Robert Schmidt 62200cdee5 RRC transactions: mark "no action" 2024-02-03 11:28:43 +01:00
Robert Schmidt c643abd83e DRB handling: handle E1AP default DRB logic properly 2024-02-03 11:28:43 +01:00
Robert Schmidt 6642b467e1 Implement PDU session estab through NGAP Initial UE Context Setup
This commit allows the gNB to handle PDU sessions that the core requests
to setup during the NGAP Initial UE Context Setup. Previously, we only
managed them as part of PDU Session Resource Setup Request.

The RRC will, depending on whether a PDU session is in the NGAP Initial
UE Context Setup, either directly trigger the Security Command, or first
do a bearer setup at the CU-UP. Some asserts have been lifted, as now
the PDU sessions might be present before the RRC Connection is fully
established.

Implement the correct forwarding of the bearers in an F1 UE Context
Setup Request message.

This solves bug #672.
2024-02-03 11:28:43 +01:00
Robert Schmidt c818e9b5fe F1 UE Ctxt modif response: look up PDU sessions 2024-02-03 11:28:43 +01:00
Robert Schmidt 59b69e240a correctly free NAS pdus: avoid possible double-frees 2024-02-03 11:28:43 +01:00
Robert Schmidt f81ec9c2cc Simplify RRC DRB handling code
Prior to this commit, the handling of DRBs is complex: first the RRC
"guessed" a DRB ID when setting up DRBs via E1AP (in
rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ()), and later chose one for
real in fill_DRB_Configlist() (called in
rrc_gNB_generate_dedicatedRRCReconfiguration()).

To simplify, remove fill_DRB_Configlist(), and instead allocate the DRB
using generateDRB() before sending the message via E1AP, in
rrc_gNB_generate_dedicatedRRCReconfiguration(). The rest of the logic is
the same.

For PDU sessions, always mark PDU sessions as "done" to match pdu
session state logic.
2024-02-03 11:28:43 +01:00
Robert Schmidt a47eab5262 F1 UE Ctxt modification: forward multiple PDU sessions, including NSSAI 2024-02-03 11:28:43 +01:00
Robert Schmidt 2800203eff Provide means to look-up if UE has a CU-UP
It might happen that a UE has no CU-UP (e.g., never requested a PDU
session). When triggering a release, we previously and implicitly
associated a CU-UP in that case. That is not good, and confusing.

This commit adds a function to look up if the UE has an associated
CU-UP. We only send a release if it is the case.

The function get_existing_cuup_for_ue() now instead verifies that a
CU-UP exist, and does not implicitly create an association (which might
be unwanted, see above).
2024-02-03 11:28:43 +01:00
Robert Schmidt 4c7080ec3f E1 bearer ctx handler: correctly index (single) DRB 2024-02-03 11:28:43 +01:00
Robert Schmidt ce4ec2965b E1 bearer ctxt setup handler: correct AssertFatal()
The number of tunnels corresponds to number of DRBs, so correctly
compare tunnels and DRBs.
2024-02-03 11:28:43 +01:00
Robert Schmidt 2494a7bc7c Remove unused variables 2024-02-03 11:28:43 +01:00
Robert Schmidt 5258acbf45 Remove unused variables in RRC 2024-02-03 11:28:43 +01:00
Robert Schmidt d5257ca820 Remove superfluous function, rename variable
The function rrc_gNB_process_RRCReconfigurationComplete() does almost
nothing, we can delete it.

The variable name ue_reconfiguration_after_reestablishment_counter is
misleading, as it counts all reconfigurations; rename to make it clear.
2024-02-03 11:28:43 +01:00
Robert Schmidt 1c2e4c7118 Remove drb_active array
The drb_active array keeps track of active DRBs. However, it only
replicates some of the information in established_drbs, and could lead
to a reuse of DRB IDs when two bearers are to be set up. Consider the
following:
1. trigger first DRB creation at RRC
2. DRB ID chosen from free drb_active entry
3. trigger second DRB creation at RRC
   -> The first reconfiguration has not been acknowledged
   -> drb_active is not marked as DRB_ACTIVE
4. The second DRB ID is chosen from a free drb_active entry, which is
   the same as in 2.

By reusing established_drbs everywhere, this cannot happen, as we
1. select the DRB to be used using next_available_drb() and then
2. use generateDRB(), which marks the DRB used
all from within fill_DRB_configList, which gives a new DRB.

The logic is still overly complex, though.
2024-02-03 11:28:43 +01:00
Robert Schmidt 37929dca6c Remove SRBs variable: it is simply not used 2024-02-03 11:28:43 +01:00
Robert Schmidt 3d0a7ecf28 DRB: do not activate in RRC, this is done through E1 2024-02-03 11:28:43 +01:00
Robert Schmidt 4b3b6b1e5e createDRBlist(): return NULL if no active DRB
If there are no active bearers, the function previously returned an
empty list. Return NULL if there are no bearers, so it is safe to call
this function even when no bearers are present. We can also pass it
every time to do_RRCReconfiguration(), which will not add an empty list
for DRBs.
2024-02-03 11:28:43 +01:00
Robert Schmidt 34b5e592f0 Add function to activate SRBs in gNB RRC
Create a single function to activate an SRB. This function derives the
corresponding keys, triggers the setup in PDCP, and marks the SRB as set
up, instead of doing all of this common functionality in individual
steps.  Use it at the corresponding places.
2024-02-03 11:28:40 +01:00
Luis Pereira 04c6c34d24 NR MAC stats: make more compact, update CI checker
- show MAC bytes in one line
- add MCS table idx
- show ulsch errors before ulsch DTX (as in DL)
- show if UE in-sync/out-of-sync
- show CU UE ID next to RNTI to stats

Since we modify the format of the statistics, fix the format in the retx
checkers of the CI.
2024-02-03 11:24:41 +01:00
Robert Schmidt f9a8498566 RRC: forward 5G-S-TMSI for NGAP Initial UE Message
Only fill the 5G-S-TMSI if if is present, and set the bit in the
presenceMask.
2024-02-03 11:24:41 +01:00
Robert Schmidt 1ee89735a2 Store 5G-S-TMSI from UE if received
This commit implements retrieval of 5G-S-TMSI from Parts 1&2, or the
entire 5G-S-TMSI, depending on what the UE sends. Further, if it has
been retrieved, print a log of all constituent parts of it.

The UE-specific variable ng_5G_S_TMSI_Part2 is not needed, as we compute
the full 5G-S-TMSI as soon as we have Part2 (and 1).

The correct forwarding to the core is implemented in the following
commit.
2024-02-03 11:24:41 +01:00
Robert Schmidt 642b6429a3 Fix NGAP encoding of PDUsession failed
We did not give a cause value, and therefore NGAP's "PDU sessions
failed" encoding failed. Give a cause value in all cases, so that this
cannot happen anymore.

To prevent against this, put an AssertFatal() into the encoder that
stops if an internally sent message does not have a correct cause value
(we can at least select a default).

Print an info message for all failed PDU sessions.

In rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP(): if a PDU session is
already established, don't count it as failed.
2024-02-03 11:24:41 +01:00
Robert Schmidt 8a5a1f2d22 NGAP: Correct encoding of AMF Pointer 5G-S-TMSI 2024-02-03 11:24:41 +01:00
Robert Schmidt 3371b53fda NGAP initial context setup: store NSSAI 2024-02-03 11:24:41 +01:00
Robert Schmidt d536c115d2 Replace custom bitStr_to_uint64() with common implementation 2024-02-03 11:24:41 +01:00
Robert Schmidt ba5c34c1f6 oai_asn1.h: const-correctness/signal input parameter 2024-02-03 11:24:41 +01:00