Commit Graph
11597 Commits
Author SHA1 Message Date
Guido Casati 9e9bd278a9 Minor: RCconfig_NR_CU_E1 function description and logging 2025-01-14 14:13:49 +01:00
Guido Casati bcd1270237 Refactor SCTP association response handler
* this function is used by both CU-CP and CU-UP
* it behaves differently depending on the type of E1 instance:
  CU-CP: inform RRC of E1 connection loss with CU-UP
  CU-UP: trigger a new SCTP association request by sending an ITTI to the CU-UP task
* after receiving the E1AP register request, the CU-UP will send a new association request to
  SCTP until new E1 connection is achieved by sending a TIMER_HAS_EXPIRED message to the CU-UP
  task. The function e1apHandleTimer() is basically triggering a new E1 association request
  until new E1 connection is achieved
* print SCTP association state in e1ap.c whenever needed

Related to #878
2025-01-14 14:13:49 +01:00
Guido Casati b922fd2649 Clean up NGAP Setup Failure messages: there's no such message in 3GPP TS 38.413
* the list of PDU Session Resources Failed to Setup shall be sent in the Response message
2025-01-14 14:13:49 +01:00
Guido Casati a1abf90d5b Handle PDU Session Resource to Setup Failure in (PDU Session Resource/Initial Context) Setup Response
* add function to check whether cu-up is connected
* add functions to send the relevant response messages with the failed list
  e.g. to fill PDU Session Resource Failed to Setup items
* set return value of trigger_bearer_setup to bool and handle the
  failure by sending setup response messages with list of PDU sessions failed to setup
  i.e. send failed list of items when no CU-UP is associated to the CU-CP
  note: it considers all PDU Sessions as failed to setup in the considered failure scenarios
* e.g. send a list of failed PDU session resources in the response message to reject
  PDU Session Resource Setup in rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ
* the Initial Context Setup has a Failure message, but for the considered failure scenario
  when no CU-UP is available the current design is just sending a list of failed to setup
  items in the Response message
* transfer PDU Session Resource/Initial Context Setup Request NAS PDU to UE

closes #878
2025-01-14 14:13:49 +01:00
Guido Casati f00a7a0197 Refactor NGAP cause
* new struct definition including both NGAP cause group and value
* add encoding function, temporarily in ngap_common.c
  (in the long term to be place in a enc/dec NGAP library)
* extend Radio Network cause enum values
* add cause member to Setup Failure
2025-01-14 14:13:49 +01:00
Jaroslava Fiedlerova a82b1450e4 Merge remote-tracking branch 'origin/develop-fix-tpmi' into integration_2024_w51 (!3154)
Fix TPMI for UL retransmissions

If the ul_ri of srs_feedback changes between a UL transmission and a
retransmission, we use the TPMI of transmission.

Closes #879

Assertion ((*nrOfLayers==1 && srs_feedback->tpmi <= 1) || (*nrOfLayers==2 && srs_feedback->tpmi == 0)) failed!
In compute_precoding_information() /home/user/openairinterface5g/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c:2896
TPMI 1 is invalid!
2024-12-20 15:59:39 +01:00
Robert Schmidt d820c187fc OPT: Replace AssertFatal with static_assert
See parent commit
2024-12-19 03:26:27 +01:00
Robert Schmidt 2f43b343b6 gnb_config: Replace AssertFatal with static_assert
See parent commit
2024-12-19 03:25:04 +01:00
Robert Schmidt f02bd8b453 enb_config: Replace AssertFatal with static_assert, align length
See parent commit
2024-12-19 03:24:37 +01:00
Robert Schmidt 5473ee904f E1AP: Replace AssertFatal with static_assert
See parent commit
2024-12-19 03:22:30 +01:00
rmagueta c66a625dc5 If the ul_ri of srs_feedback changes between a UL 1st transmission and a retransmission, we use the TPMI of 1st transmission 2024-12-17 14:18:16 +00:00
Robert Schmidt 0d4c7364b4 Merge remote-tracking branch 'origin/telnet-o1' into integration_2024_w50 (!3125)
Add support for O1 in O-DU via telnet

This change set adds a simple telnet interface to nr-softmodem. Together
with oai/o1-adapter>, this implements a part of the O1 interface, for
the DU only. Currently supported uses cases:

- some stats are send to an SMO (such as bandwidth, PLMN, frequency, ...)
- re-configuration of bandwidth, frequency
- stop/start of the softmodem, while keeping the CU and L2 running
- the o1-adapter implements two alarms, load overload and base station
  offline, using this interface.

It is possible to use the telnet interface by itself (i.e., "o1" without
the o1-adapter). To do this, compile with telnet support (./build_oai
--build-lib telnetsrv) and start the nr-softmodem with O1 module
(./nr-softmodem --telnetsrv --telnetsrv.shrmod o1). You can then do the
following:

- see some statistics as exposed to o1-adapter, in JSON: echo o1 stats | nc 127.0.0.1 9090 && echo
- stop the L1: echo o1 stop_modem | nc 127.0.0.1 9090 && echo
- reconfigure bandwidth: e.g., echo o1 bwconfig 20 | nc 127.0.0.1 9090 && echo (also supported: 40, 60, 100)
- start the L1: echo o1 start_modem | nc 127.0.0.1 9090 && echo

Note that the reconfiguration works with split-8 radios. Notably, it
does not work yet out-of-the-box with 7.2 radios, because they have to
be manually reconfigured on bandwith/frequency switch. The planned
M-plane should allow such use case, though.

To help with the above, this branch also includes fixes (for more
information, refer to the corresponding commits):

- fixes for stopping the L1, notably stop threads in right order, stop
  thread pool of RU
- collect some general MAC metrics, fix some bugs in MAC
- fix problems in F1AP gNB-DU configuration update message, update test
- fix some problems in RRC
2024-12-16 19:42:28 +01:00
Robert Schmidt bcba876fcb Do not free inside gnb_du_configuration_update_f1ap()
The consumer of this function just passes a pointer to something to be
sent. This function should not free this memory, it's simply not it's
task. This is the same bug as above in
"CU_handle_gNB_DU_CONFIGURATION_UPDATE(): don't free the message of RRC"
2024-12-16 16:18:11 +01:00
Robert Schmidt 70a746a445 Provide O1 telnet interface to remove all UEs 2024-12-16 16:18:11 +01:00
Robert Schmidt 511b5f8ebd Expose F1 primitives for next commits
Need to proper forward declaration, as we otherwise need to make
telnet_o1 module dependent on F1.  Make functions publicly accessible,
as the F1 functions are used in an upcoming commit to start the L1.
2024-12-16 16:18:10 +01:00
Robert Schmidt 0c24f1ff13 Upon RRC exit: stop ongoing timer 2024-12-16 16:18:10 +01:00
Robert Schmidt 6b852a6fff CU_handle_gNB_DU_CONFIGURATION_UPDATE(): don't free the message of RRC
The message is already freed at reception at RRC.
2024-12-16 16:18:10 +01:00
Robert Schmidt 8e44b2d22e RRC: fix double free, already freed in scope of caller of this function 2024-12-16 16:18:10 +01:00
Robert Schmidt 3e63f1dab2 Correctly handle received gNB-DU config update ack 2024-12-16 16:18:10 +01:00
Robert Schmidt 9858a733c1 gnb_du_configuration_update_f1ap(): send to correct task 2024-12-16 16:18:10 +01:00
Robert Schmidt 3e8636ce98 Test gNB-DU config update: cell to add/delete 2024-12-16 16:18:10 +01:00
Robert Schmidt adbbbaeaba Properly implement eq/cp() functions of gNB-DU config update, fix test
Implement those functions following more closely 38.473, i.e., check all
mandatory fields. Add mandatory fields in the test.
2024-12-16 16:18:10 +01:00
Robert Schmidt 509cc8cc58 Use PLMNID_TO_MCC_MNC() to decode PLMN ID 2024-12-16 16:18:10 +01:00
Robert Schmidt 3de8a746fe Fix eq_f1ap_cell_info(): correct TAC comparison
Check that both a->tac/b->tac are present, or both not present. Then,
check they are equal if present.
2024-12-16 16:18:10 +01:00
Robert Schmidt 6b7055bb37 eq_f1ap_sys_info(): correct check
a and b can only be equal if both NULL or both set (and all fields the
same). Check for this.
2024-12-16 16:18:10 +01:00
Robert Schmidt ed876a53b2 F1: refactor out served_cell_info/du system info
Split out these functions, to be reused in a follow-up commit to
correctly have gNB-DU configuration update message working.

Change the return type copy_f1ap_served_cell_info(), to return the copy,
which IMO is more intuitive then passing target and source in
parentheses.
2024-12-16 16:18:10 +01:00
Robert Schmidt c852d9337c nr_rrc_config_ul_tda(): ensure not double initialization
For the "restart" feature, earlier versions where creating multiple UL
TDA. This is not a problem (anymore), but to avoid that we call this
multiple times, add this assert.
2024-12-16 16:18:10 +01:00
Robert Schmidt 3c94b9a18f rrc_gNB_du.c: avoid potential double-free
Set pointer to NULL when freeing to avoid potential double frees.
2024-12-16 16:18:10 +01:00
Robert Schmidt 462d1a6a8b RLF: avoid encoder problem 2024-12-16 16:18:10 +01:00
Robert Schmidt f804a355ad Trigger F1 UE context release if no UE context in RRC 2024-12-16 16:16:43 +01:00
Robert Schmidt c80821e578 NR MAC: save total/used PRBs aggregate 2024-12-16 16:16:43 +01:00
Robert Schmidt 5785bc1894 Msg4 RNTI not found: abort RA 2024-12-16 16:16:43 +01:00
Robert Schmidt deba36a5d1 Merge remote-tracking branch 'origin/NGAP-FAILMESSAGE' into integration_2024_w50 (!3163)
NGAP-Initial Context Setup Failure

NGAP Failure message - Initial Context Setup Failure.  When an Initial
Context Setup Request is received with the UE context as null, it
triggers Initial Context Setup failure
2024-12-16 15:27:38 +01:00
Robert Schmidt 0b78a18d47 Merge remote-tracking branch 'origin/sib19-ue-utilization' into integration_2024_w50 (!3019)
SIB19 utilization on UE

Following SIB19 initialization and scheduling on gNB (!2899 - merged)
and Receive SIB19 on nrUE (!2920 - merged), this merge request aims to
introduce the actual use of the SIB19 provided parameters by gNB in UE.
Changes needed for utilization include: initialization of position
coordinates parameters for UE (which are needed to calculate propagation
delay between UE and SAT), propagation delay calculations and timing
advance adjusts. Moreover, this change removes the now unused arguments
for ntn_koffset, ntn_ta_common and ntn_ta_commondrift
2024-12-16 15:26:48 +01:00
Robert Schmidt 85440e2d4e Merge remote-tracking branch 'origin/gtpv1u-data-no-itti' into integration_2024_w50 (!3158)
GTP: use direct call instead of ITTI

Using ITTI calls for user plane implies (1) a memory allocation, (2)
mutexes, and (3) queueing messages for each user plane packet, which is
heavy. Use a direct API call instead to reduce overhead.
2024-12-16 15:25:18 +01:00
Madhuri.G 7cfa482107 Initial Context Setup Failure
NGAP Failure message - Initial Context Setup Failure.
When an Initial Context Setup Request is received with the UE context as null, it triggers Initial Context Setup failure.
2024-12-13 15:35:43 +05:30
Roberto RoscaandRobert Schmidt ef55aaa7c9 Store position coordinates in NR_UE_RRC_INST_t
position_coordinates will be allocated and populated upon receiving SIB19

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2024-12-11 13:01:50 +02:00
Robert Schmidt 3f74749aa6 Simplify position reading 2024-12-11 13:01:50 +02:00
Robert Schmidt 2989bb592b handle position from RRC 2024-12-11 13:01:50 +02:00
Roberto Rosca be618b069e Added message-based communication between L2 and L1 regarding NTN configuration parameters 2024-12-11 13:01:50 +02:00
Roberto Rosca bd7fb492fd Removed SIB19 related UE arguments
- Removed ntn_koffset, ntn_ta_common, ntn_ta_commondrift arguments in order to be used directly from SIB19
   - Removed global NTN_UE_Koffset variable and it's use
   - Introduced getter functions for ntn related parameters
2024-12-11 13:01:42 +02:00
Robert Schmidt 27f1c0db65 Remove GTPV1U_TUNNEL_DATA_REQ ITTI message: it is not used 2024-12-11 10:34:08 +01:00
Robert Schmidt ad9645ffb9 LTE PDCP: Use GTP direct API instead of ITTI
See parent commit for more information.

LTE PDCP uses GTP, so need to link GTP into the corresponding library.
2024-12-11 10:32:18 +01:00
Robert Schmidt 2ffb674d58 F1AP: Use GTP direct API instead of ITTI
See parent commit for more information.
2024-12-11 10:31:52 +01:00
Robert Schmidt 3c5e999f6d SDAP: Use GTP direct API instead of ITTI
Using ITTI calls for user plane implies (1) a memory allocation, (2)
mutexes, and (3) queueing messages for each user plane packet, which is
heavy. Use a direct API call instead to reduce overhead.
2024-12-11 10:31:52 +01:00
Roberto Rosca 486f4f5f96 Adding second layer timing advance
- Renamed position coordinates function (better readability)
   - Introduced large timing advance compensation mechanism
2024-12-11 10:23:11 +02:00
Roberto Rosca f88c47ba3e Adding first layer timing advance
- Added new structure to hold timing advance parameters
   - Made SIB19 related calculation to save to this struct
   - Modified in ra to get ta struct values
2024-12-11 10:20:35 +02:00
Roberto Rosca 698ff73c7f Added SIB19 related calculations on UE 2024-12-11 10:20:34 +02:00
Roberto Rosca 06c0374ec8 Added UE support for position coordinates taken from conf files 2024-12-11 10:20:34 +02:00
Sakthivel Velumani 5ac703b580 Code cleanup
Add const to function input pointer.
2024-12-10 09:50:27 -05:00