Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 8931e13363 Merge branch 'integration_2024_w10' into 'develop'
Integration: `2024.w10`

See merge request oai/openairinterface5g!2608

* !2427 Scan build: Result of operation is garbage or undefined
* !2477 cleanup of nfapi_nr_interface.h and more
* !2523 CI: AW2S pipeline - test with 16 UEs including RAN code fixes
* !2530 Rework of MAC UE handling of DAI
* !2583 Small-bug-from- cdb18d38bfa6aee288a68d9e8881615a48addd83-and-one-gcc-warning
* !2592 NR DMRS RX comments
* !2599 Log module small cleaning
* CI: mark as failed if UE log analysis fails
* !2465 NVIDIA Aerial Integration
* !2409 Ue rework keep sync in frame
* !2603 tx_timestamp computation doesnt count slots from rx timestamp, and a small...
* !2607 preventing negative RX absolute slot in NR softmodem
* !2606 Instructions on how to debug using container images and core dump of CI
* !2609 Upgrade Open Cells Project UICC/SIM programming tool and rename FR2 SA configuration file
* fixup after merge of Aerial
2024-03-11 16:57:07 +00:00
Robert Schmidt f992bee903 Merge remote-tracking branch 'origin/NR_SA_Tutorials_2' into integration_2024_w10 2024-03-11 10:51:52 +01:00
Robert Schmidt fe9d871ac7 Merge remote-tracking branch 'origin/doc-ci-segv-debug' into integration_2024_w10 2024-03-11 10:51:45 +01:00
Robert Schmidt 127ae812f7 Merge remote-tracking branch 'origin/NR_absslot_rx_hotfix' into integration_2024_w10 2024-03-08 18:57:13 +01:00
Robert Schmidt 12517b55f6 Merge remote-tracking branch 'origin/gnb-tx_timestamp-compute-bug' into integration_2024_w10 2024-03-08 18:57:05 +01:00
Robert Schmidt e9e67b40fe Merge remote-tracking branch 'origin/ue-rework-keep-sync-in-frame' into integration_2024_w10 2024-03-08 18:56:50 +01:00
Robert Schmidt 53c3e5ce1d Merge remote-tracking branch 'origin/Aerial_Integration' into integration_2024_w10 2024-03-08 17:50:06 +01:00
Robert Schmidt 0eba3d75b8 CI: mark as failed if UE log analysis fails 2024-03-08 17:50:01 +01:00
1fadd7adb6 Add Aerial platform into CI
- create XML files for the Aerial pipeline
- create docker-compose to automate deployment
- add documentation
- add to main Jenkinsfile

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
Co-authored-by: Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
Co-authored-by: Rúben Soares da Silva <rsilva@allbesmart.pt>
2024-03-08 16:15:18 +01:00
Robert Schmidt e615321eb2 Rewrite debugging instructions for CI fail 2024-03-08 15:32:32 +01:00
Robert Schmidt 06820d372f Add debugging script for image+coredump 2024-03-08 15:32:32 +01:00
Robert Schmidt 2d4e3a0515 Merge remote-tracking branch 'origin/simplify-log-module-interface' into integration_2024_w10 2024-03-08 07:19:55 +01:00
Robert Schmidt 132949c226 Merge remote-tracking branch 'origin/NR_DMRS_rx_improved_comments' into integration_2024_w10 2024-03-08 07:19:47 +01:00
Robert Schmidt d1c2d60d16 Merge remote-tracking branch 'origin/small-bug-from-cdb18d38bfa6aee288a68d9e8881615a48addd83-and-one-gcc-warning' into integration_2024_w10 2024-03-08 07:19:42 +01:00
Robert Schmidt 03619e1ccd Merge remote-tracking branch 'origin/NR_MAC_UE_rework_DAI' into integration_2024_w10 2024-03-08 07:19:35 +01:00
Robert Schmidt 66bdd0e801 Merge remote-tracking branch 'origin/ci-aw2s-test-15' into integration_2024_w10 2024-03-08 07:16:11 +01:00
Robert Schmidt e24f5d635c Merge remote-tracking branch 'origin/cleanup_fapi_and_more' into integration_2024_w10 2024-03-08 07:16:04 +01:00
Robert Schmidt 0128945922 nr_fill_indication(): protect with mutex
nr_fill_indication() fills CRC and RX requests, to be sent from L1 to
L2. Before this commit, nr_fill_indication() is called when
- we finally decoded LDPC (or not)
- low signal on PUSCH
This might happen at the same time, i.e., nr_fill_indication() might try
to fill both CRC and RX, in the same list, from different threads. This
can lead to this assertion:

Assertion (crc->rnti == rx->rnti) failed!
In handle_nr_ulsch() ../../../openair2/NR_PHY_INTERFACE/NR_IF_Module.c:190
mis-match between CRC RNTI e071 and RX RNTI 5e3b

e.g., e071 is low energy, and while 5e3b related message are filled in
one thread, e071 is being put into the message structure as well.

At least that is my understanding. I could not actually reproduce this
assertion; to be seen if it still happens.
2024-03-07 09:56:33 +01:00
Robert Schmidt e80d8a01f3 delete dead code 2024-03-07 09:56:33 +01:00
Robert Schmidt c189591827 Add header guards inr nr_ulsch.h to avoid circular dependencies 2024-03-07 09:56:20 +01:00
Robert Schmidt 09a75009ce nr_fill_ulsch(): gracefully handle case of no ulsch found 2024-03-07 09:56:20 +01:00
Robert Schmidt 8d87f0c4e2 get_phy_stats(): full list is non-fatal
Do not assert if the list of phy statistics is full; instead return
NULL.

In most places, this is handled appropriately (we do not store anything
if we can't). In nr_decode_pucch0(), the return value of get_phy_stats()
is used a little bit all over the function, and a constant
  if (uci_stats)
    uci_stats->variable++;
would look ugly, so make uci_stats point to the stack if we cannot store
in the phy_stats.
2024-03-07 09:56:20 +01:00
Robert Schmidt 98c309ffe3 Refactor nr_decode_pucch0() to not rely on uci_stats
the uci_stats variable (pointing to per-UE statistics for UCI) is used
in function nr_decode_pucch0() to store information which is important
beyond statistics, e.g., uci_stats->pucch0_thres as a threshold (which
comes from somewhere else)

This commit refactors to use original or intermediate variables to not
mix uci_stats usage with actual processing.

Also, group uci_stats a bit more.
2024-03-07 09:56:20 +01:00
Robert Schmidt 711518ba00 Move NUMBER_FRAMES_PHY_UE_INACTIVE to smaller scope 2024-03-07 09:56:20 +01:00
Robert Schmidt 7ea8833529 Use MAX_MOBILES_PER_GNB in 5G NR code
NUMBER_OF_UE_MAX is a 4G constant, use 5G one instead
2024-03-07 09:56:20 +01:00
Robert Schmidt 70be05381f remove unused UE_PF_PO and ue_pf_po_mutex
They use 4G NUMBER_OF_UE_MAX, which is not supposed to be present in 5G.
Further, the mutex and variable are global state; for Paging, we should
use F1.
2024-03-07 09:56:20 +01:00
Robert Schmidt 885611cd00 SRS config: make explicit that > 30 UEs don't work, handle gracefully at runtime
We can only support up to 30 UEs for SRS. In this commit, we change:
- if the total number of UEs is > 32, throw error during compilation to
  raise awareness (32 so that a multiple of two still works, everything
  else is confusing, see also next point)
- during runtime, handle gracefully if UID is 30 or 31 to not abort (we
  can simply not allocate SRS resources)

Also, refactor config_srs() to always give back new memory; the code is
shorter and clearer. Rename to get_contig_srs() to make it explicit.
2024-03-07 09:56:20 +01:00
Robert Schmidt b99e856733 Merge branch 'integration_2024_w09' into 'develop'
Integration: 2024.w09

See merge request oai/openairinterface5g!2593

* !2558 Fixed for the PRB allocation issue assert in DLSCH scheduler
* !2562 Fix FR2 SSB start subcarrier
* !2582 BugFix "PDCP: Handle sdap header."
* !2584 NGAP: Fix byte order of NSSAI SD
* !2590 T tracer: textlog: remove GUI code
* !2572 Harmonize computation of RA-RNTI
* !2577 Fix name clashes between OAI and E2 Agent
* !2545 E1 Re-establishment
* !2553 fix issues related to tx timing advance for HW RF board unpaired RX/TX timestaps and for 5G UE TA algorithm
* !2571 Add SDAP reconfiguration, fixes, and documentation updates
* !2576 RFSIM: cleanup and documentation
* !2586 Better dci decoding
* !2596 CI: maintenance/stability fixes
* !2601 CI: use tini for container process mgmt, describe core dump recovery
* !2589 gNB: increase some configuration defaults
* !2521 CI: Modifs of UndeployObject - log collection
2024-03-05 18:37:28 +00:00
Robert Schmidt 543250e933 Merge remote-tracking branch 'origin/ci-log-collection-modif' into integration_2024_w09 2024-03-05 15:14:58 +01:00
Robert Schmidt fc97e197fa Merge remote-tracking branch 'origin/gnb-improve-defaults' into integration_2024_w09 2024-03-05 11:11:55 +01:00
Robert Schmidt 2653897689 Merge remote-tracking branch 'origin/ci-exit-info-core-dumps' into integration_2024_w09 2024-03-05 11:06:10 +01:00
Robert Schmidt 56acd1d6d3 Add doc on how to retrieve core dumps 2024-03-05 11:02:38 +01:00
Robert Schmidt adbb051bb7 Set ulimit for core to -1
Set ulimit of core to -1 enable core dumps for file-based core dumping.
Note that it is not necessary for e.g., systemd-coredumpd, but put it
for completeness.
2024-03-05 11:02:38 +01:00
Robert Schmidt d7c3806f13 Use tini as init in all containers
- Print problems, e.g., segfault
- Handle signals and zombie processes properly
2024-03-05 11:02:38 +01:00
Robert Schmidt 549652353b Merge remote-tracking branch 'origin/ci-maintenance-fixes' into integration_2024_w09 2024-03-05 10:31:07 +01:00
Robert Schmidt 331fb1ce8e Merge remote-tracking branch 'origin/better-dci-decoding' into integration_2024_w09 2024-03-05 08:58:52 +01:00
Robert Schmidt 3c1ed92b80 Return success/failure of copyin()/copyout
- Return code says if copying succeeded
- Improve handling of the recursive code paths, which copy files or
  directories recursively into another directory
- both for RemoteCmd/LocalCmd
2024-03-05 08:48:54 +01:00
Robert Schmidt e9f0541ad0 BuildProxy: report success, correctly print HTML 2024-03-05 08:30:26 +01:00
Robert Schmidt 961981f456 CI: make docker volume always succeed in startup
Some CI users (OAI developers) expressed that the warning of the `docker
volume prune` before starting RFsim is confusing. To avoid the warning in
the HTML, force the removal; if the volume does not exist, no warning is
emitted.

To still catch possible problems, do not do this in the `terminate.xml`
so we might still see if there are other problems.
2024-03-05 08:30:26 +01:00
Robert Schmidt b7a1b4b405 Always stop Quectel on XML terminate 2024-03-05 08:30:26 +01:00
Robert Schmidt 58c2f04b40 Adapt timing-phytest stats to new LDPC decoder iterations 2024-03-05 08:04:11 +01:00
Robert Schmidt d60273e200 Update tutorials after default config setting changes 2024-03-05 08:04:11 +01:00
Robert Schmidt 6c015f8099 Test: reduce max_ulsch_frame_inactivity, use default of 10 2024-03-05 08:04:11 +01:00
Robert Schmidt 9a44d4b88f Increase default UL max MCS to 28
The original UL max MCS of 9 was chosen for performance reasons. In the
meantime, machines became faster, and the ULSCH decoding faster. Improve
UL max MCS to be 28 by default to use the complete range of possible
MCS.
2024-03-05 08:04:11 +01:00
Robert Schmidt 29ca077b66 Increase default max LDPC iter to 8
Doing only 5 LDPC iterations by default leads to a poor reception
performance, and correspondingly many retransmissions. Increase to 8 as
the new default to improve user experience.
2024-03-05 08:03:45 +01:00
Robert Schmidt ebe1b711ac Print core_pattern in all entrypoint scripts 2024-03-04 15:12:41 +01:00
Robert Schmidt a724dfba4f Merge remote-tracking branch 'origin/e1-reestablishment' into integration_2024_w09 2024-03-04 08:45:47 +01:00
Robert Schmidt 9af386c761 CI: RFsim tests: Wait for IP
Ensure that the UE has an IP address before continuing the test.
Otherwise, it might happen we ping before the UE is connected.

Do not do this in do-ra and phytest, as they use --noS1, which implies
statically assigned IP address, so IP address check always succeeds(!).
2024-03-01 13:06:59 +01:00
Robert Schmidt e845a9c3b7 CI: Make RFsim start-up faster
Make RFsim start up faster by starting core and RAN start at the same
time. This speeds up because we do not wait for "healthy" containers
serially, but parallely.

For the RAN, it is safe to start gNB and UE at the same time in SA mode
(as the UE will only attach once the radio, and hence the full gNB, is
ready).

We do not start in parallel in do-ra and phytest, as in these modes the
gNB first has to write a UE-specific configuration file. If we start
both gNB and UE at the same time, the UE might try to read the file
before it is written, leading to a failure.
2024-03-01 13:05:20 +01:00
Robert Schmidt 60447a24a1 E1: add reestablishment test 2024-03-01 09:48:42 +01:00
Robert Schmidt 06c2ce1777 E1 Sabox test: shorten ping 2024-03-01 09:48:42 +01:00
Robert Schmidt b1f9e9d57a Reestablishment: preserve additional secondaryUE data
The previous code removed the "secondary UE" data (about DU association,
DU UE ID, associated CU UP), and only filled the F1-related data. In
other words, the associated CU-UP was lost. This commit reworks this
piece of code to retrieve old data, and update the relevant data without
destroying other.
2024-02-28 11:58:59 +01:00
Robert Schmidt 080510568d Merge branch 'integration_2024_w08' into 'develop'
CI: Integration Branch 2024 week 08

See merge request oai/openairinterface5g!2585

* !2540 NR UE max MIMO layers from UEcap
* !2554 NR UE RRC minor improvements
* !2563 Add missing backtick for proper code style in README.md
* !2567 Avoid integer overflows, buffer overflows, in channel levelling
* !2574 NR UE fix for configuring coreset0 and SS0
* !2575 NR UE fix init PDCP phy-test
* !2551 NR UE improvements for contention resolution timer
* !2570 CI: Replace nrmodule2 by up2
2024-02-27 07:51:59 +00:00
Robert Schmidt 2f313c9aee Merge remote-tracking branch 'origin/ci-replace-nrmodule2' into integration_2024_w08 2024-02-26 15:29:23 +01:00
Robert Schmidt c599e172f1 Add v2.1.0 to change log 2024-02-16 14:57:15 +01:00
Robert SchmidtandLuis Pereira fd8fc31a6f Create 5G RFsim FR2 SA test
Transform the previous FR2 do-ra test to FR2 RA.

Co-authored-by: Luis Pereira <lpereira@allbesmart.pt>
2024-02-14 11:11:01 +00:00
Robert Schmidt 3f3a98696f Merge branch 'integration_2024_w06' into 'develop'
Integration: 2024.w06

Closes #733 and #732

See merge request oai/openairinterface5g!2564

* !2490 reworking configuration of LogicalChannelConfig at MAC UE
* !2548 NR UE MSG3 buffer
* !2556 Support RC SM aperiodic subscription for "UE RRC State Change"
* !2557 fix duplicate call of RCconfig_NR_L1
* !2550 use pointer to structure instead of module_id inside MAC
* address #733
* !2560 chore(ci): force rebuild of ran-base for integration branches
* !2495 Sidelink configuration passed from RRC->MAC
* !2220 L1 tx thread
* !2559 FH 7.2 improvements
* !2566 Provide right E1 instance when creating E2 agent in CU-UP
* !2513 Update NR SA tutorials
2024-02-14 07:24:12 +00:00
Robert Schmidt 24c707c33e Merge remote-tracking branch 'origin/NR_SA_Tutorials' into integration_2024_w06 2024-02-14 07:30:19 +01:00
Robert Schmidt 6069cd6b5d Merge remote-tracking branch 'origin/fix-e2-agent-cuup' into integration_2024_w06 2024-02-14 07:30:09 +01:00
Robert Schmidt 15cf5c116e Provide right E1 instance when creating E2 agent in CU-UP
CUuniqInstance is also used for GTP module identification, which
uses the UDP server socket as its ID. This leads to arbitrary IDs (>0),
which is wrong.
2024-02-13 20:13:57 +01:00
Robert Schmidt 713c84e4d4 Merge remote-tracking branch 'origin/stability-7.2-improv' into integration_2024_w06 2024-02-13 19:28:02 +01:00
Robert Schmidt 9890410a18 Merge remote-tracking branch 'origin/l1_tx_thread' into integration_2024_w06 2024-02-13 19:28:02 +01:00
Robert Schmidt d01c147014 Merge remote-tracking branch 'origin/NR_PSBCH_MERGE2' into integration_2024_w06 2024-02-13 19:28:02 +01:00
Robert Schmidt 0e531b44e0 Merge remote-tracking branch 'origin/ci-integration-test' into integration_2024_w06 2024-02-13 19:28:02 +01:00
Robert Schmidt ddd53b0ba3 build_oai: correct doxygen path in logging statement
Correctly show the path: it was missing cmake_targets/, although it is
there.

Closes: #733
2024-02-13 19:28:02 +01:00
Robert Schmidt f04e5d97fa Merge remote-tracking branch 'origin/NR_UE_use_MAC_pointer_internally' into integration_2024_w06 2024-02-13 10:42:55 +01:00
Robert Schmidt a7f56d0d52 O-RAN 7.2/doc: Update info on frame jumps 2024-02-12 19:17:37 +01:00
Robert Schmidt 5421a4d172 O-RAN 7.2/doc: Update info on L1_tx_thread (diff d.txt ../graphs/_dijkstraData.txt ) 2024-02-12 18:42:49 +01:00
Robert Schmidt 6fe655c7d4 ORAN 7.2/doc: update s-plane info 2024-02-12 18:41:42 +01:00
Robert Schmidt 4353763984 ORAN 7.2/doc: update NIC info 2024-02-12 18:41:26 +01:00
Robert Schmidt c33a308dff Remove comments on L1_tx_thread_core param: is merged 2024-02-12 18:29:53 +01:00
Robert Schmidt 0a1651e45c Periodically check for stats freeing to prevent assert
Not periodically checking stats freeing can lead to asserts if these
lists are full. Check it once a frame to ensure that lists remain
non-empty.
2024-02-12 18:29:53 +01:00
Robert Schmidt f3bba45bfe Update some timing stats 2024-02-12 18:29:53 +01:00
Robert Schmidt 362bc481bd Remove misleading PUSCH decoding
PUSCH decoding is started multiple times in nr_ulsch_procedures() for
each ULSCH segment, and stopped once inside
phy_procedures_gNB_uespec_RX(). Not only is it not clear if that works
with the API, it also might measure more than just PUSCH decoding.

Remove the PUSCH decoding, it is misleading. Check L1 RX processing
instead.
2024-02-12 12:04:55 +01:00
Robert Schmidt 418024835b Add 100 MHz 2x2 phytest-timing test 2024-02-12 12:04:55 +01:00
Robert Schmidt 003567675c CI: phytest-timing: detect deviation from normalized values above/below
The CI would only detect a deviation from the normalized value based on
a configurable threshold, typically 1.25 (so we would tolerate a 25%
increase). However, it often happens that a timing gets shorter (e.g.,
forgot to put the timing measurements). This commit introduces a
"Deviation Threshold" (smaller than 1) to not only check that we exceed
1.0 + "Deviation Threshold" (as before), but also that are not below 1.0
- "Deviation Threshold".

In other words, assuming a maximum divergence of 25%, instead of just
checking if val > 1.25, we now also check if val < 0.75 (and flag
error).
2024-02-12 12:04:55 +01:00
Robert Schmidt 6ba8716700 Add Slot Indication to monitoring 2024-02-12 12:04:55 +01:00
Robert Schmidt e9d6081abc Add slot indication timing 2024-02-12 12:04:55 +01:00
Robert Schmidt fb69d9c635 Remove unused UL_INFO_mutex
The UL_INFO_mutex is used in only one place, and therefore useless.
Also, the scheduler uses a lock internally to prevent concurrent access.
Hence, the UL_INFO_mutex is not needed.

Remove kill_gNB_proc(), as it is now dead code.
2024-02-12 11:25:30 +01:00
Robert Schmidt 88852dc9af Introduce slot indication tick to run (DL) scheduler
The next commit introduces a separate gNB TX processing thread. To
properly separate DL scheduler (for scheduling decisions) from UL
indication handling (for UL packets), this commit introduces a slot
indication "tick" to run the DL scheduler which will be put into the gNB
TX processing chain instead of the UL indication.
2024-02-12 11:25:26 +01:00
Robert Schmidt d5f11902b7 Handle PUCCH frame/slot mismatches gracefully
For different reasons, the frame/slot numbers might jump (e.g., gNB and
RU machines not properly synced). The scheduler would assert for PUCCH
allocations. Handle this gracefully by printing an error message, and
resetting the PUCCH structure.
2024-02-09 13:38:12 +01:00
Robert Schmidt c5211b0f8c O-RAN 7.2: modify patch to switch of DPDK telemetry, bump version
Disable DPDK telemetry to skip creation of one/two threads (depending on
DPDK version). To force users to do this, bump the version of the patch
checked by cmake.

More information on DPDK telemetry:
https://doc.dpdk.org/guides/howto/telemetry.html

Closes: #732 (suggestion 2)
Suggested-by: Andrew Sergeev <andrew.sergeev@adtran.com>
2024-02-09 13:22:26 +01:00
Robert Schmidt b5ba3a69f1 O-RAN 7.2: set CPU affinity for ru_thread explicitly
Force the CPU affinity for ru_thread explicitly to ru_thread_core. It is
already done via threadCreate(), but force again as per change request.

Delete commented 7.2 code that did the equivalent. We cannot set it in
the driver, as we don't have access to variable ru->ru_thread_core.

Closes: #732 (suggestion 2)
Suggested-by: Andrew Sergeev <andrew.sergeev@adtran.com>
2024-02-09 13:02:50 +01:00
Robert Schmidt b32b9e836f O-RAN 7.2: make DPDK system core configurable
system_core is the core reserved for DPDK control threads. It was
hardcoded to 0, but it seems that one some systems, CPU 0 cannot be
reasonably isolated from kernel threads. Make it therefore configurable
(default: 0)

Closes: #732 (suggestion 1)
Suggested-by: Andrew Sergeev <andrew.sergeev@adtran.com>
2024-02-09 12:42:21 +01:00
Robert Schmidt 702c608ca1 O-RAN 7.2 doc: explain layer mapping, streamline start gNB section 2024-02-09 11:49:47 +01:00
Robert Schmidt b612e5f021 O-RAN 7.2 doc: make section Configuration, DPDK before gNB config
The gNB configuration depends on DPDK (e.g., PCI addresses). Therefore,
put DPDK config before, to keep it logically ordered.
2024-02-09 11:42:49 +01:00
Robert Schmidt 4085544f28 O-RAN 7.2 patch: don't ignore user's PKG_CONFIG_PATH 2024-02-08 10:13:39 +01:00
Robert Schmidt fd3c50b6c8 O-RAN 7.2 doc: Correct NUMA node capitalization 2024-02-08 10:13:39 +01:00
Robert Schmidt 970e7855c4 O-RAN 7.2 doc: describe how to interpret counters 2024-02-08 10:13:39 +01:00
Robert Schmidt a22335a89f FH 7.2: ignore packets with no payload instead of asserting 2024-02-08 10:13:28 +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
Robert Schmidt be3d37159f Enable some caching in CI build steps 2024-02-05 10:38:34 +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