An error occurred fetching the project authors.
- 16 Feb, 2024 3 commits
-
-
Guido Casati authored
- many structs and definitions are overlapping between the two different E1 procedures - introduced naming specific to E1 Bearer Context Modification to improve readability - grouped SDAP and PDCP configuration IEs for better reusability and readability - introduced functions to set and get default PDCP config (DRBs and Bearer Contexts) see !MR2545 for more context
-
Guido Casati authored
- according to specs, in NR there are 4 SRBs - in OAI the relevant define is used in the RRC procedures - this commit harmonizes code by removing redundancy
-
Guido Casati authored
- the goal is to improve maintanability
-
- 07 Feb, 2024 1 commit
-
-
Teodora authored
- subscribe to "UE RRC State Change" RAN Parameter ID - expected asynchronous events from E2 node
-
- 03 Feb, 2024 26 commits
-
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
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).
-
Robert Schmidt authored
- Put consistently transaction IDs - Remove transaction IDs when transaction finished, or in places that do not trigger an RRC transaction
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
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).
-
Robert Schmidt authored
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
If we are in one of these procedures, we basically must be in SA mode, everything else is illogical. It also does not seem plausible to check for this, as it is not apparent why only these couple of calls should not be executed if not in SA. Hence, remove.
-
Robert Schmidt authored
-
Robert Schmidt authored
This implementation might work, but it simply triggers RRC setup on the new DU when we might send a RRC reestablishment speeding up the whole connection setup. For this: - we should send the F1 UE context setup to the new DU - we should still do the reestablishment, containing the reestablishment message The latter should be sent once we received the F1 UE context setup response. We don't need a new context. send a release to the old DU (and don't release our own context!!). We might also send the reestablishment to the UE encapsulated with the F1 UE context setup response. Need to investigate if this is feasible (because if the DU rejects [can that happen here?], the UE will still send reestablishment complete -- what then?). Also, we would need to send the E1 bearer context modification to the CU-UP.
-
Robert Schmidt authored
Keeping track if AS security is activated. This is important for a later commit, where we use this to decide if we send a F1 UE Context Setup Req with security command after receiving the E1 bearer context setup response. The corresponding AssertFatal() removed in the same commit implementing PDU session handling in NGAP Initial UE Context Setup.
-
- 02 Feb, 2024 1 commit
-
-
Robert Schmidt authored
-
- 31 Jan, 2024 2 commits
-
-
Robert Schmidt authored
-
Robert Schmidt authored
-
- 25 Jan, 2024 3 commits
-
-
Guido Casati authored
-
Guido Casati authored
- it triggers the RRC callback after SCTP SHUTDOWN indication - CUUP entity cleanup at RRC level
-
Guido Casati authored
-
- 19 Jan, 2024 1 commit
-
-
francescomani authored
-
- 18 Jan, 2024 1 commit
-
-
Robert Schmidt authored
For LiteOn DU, we do not receive the MIB/SIB1 in the F1 Setup Request. This is not a problem in itself, but it might happen that certain procedures are executed without MIB/SIB1. Check for it and handle appropriately: - During normal connection establishment, we might not be able to calculate measurement config - During reestablishment, we might not be able to calculate ARFCN SSB and cannot do reestablishment; do RRC setup instead.
-
- 20 Dec, 2023 2 commits
-
-
Robert Schmidt authored
When setting up bearer(s) through F1, the corresponding F1 message has QoS fields for the DRB(s) to be set up, as well as for all flows associated to this DRB. In this commit, set the DRB QoS field to be equal to the first flow (it is unclear/unspecified how it should be set up, based on the flows), which was not set before and therefore contained unitialized data. The F1 module uses this data, and in split mode, F1 message generation failed due to uninitialized data.
-
Robert Schmidt authored
We reuse RRC UE IDs at the RRC. Previous to this commit, we did not release a UE at the CU-CP's PDCP (for SRBs). Thus, when reconnecting a UE, the PDCP might not be in a good state, since we did not release the previous PDCP UE context.
-