Commit Graph
606 Commits
Author SHA1 Message Date
rmagueta 6ce4d78c19 Refactor get_MeasConfig(): create subfunctions 2025-07-11 18:09:23 +01:00
Robert Schmidt 6a1203bb15 Set RRC reject waitTime to 10 2025-07-02 18:56:47 +02:00
Robert Schmidt 9a34b31470 Merge remote-tracking branch 'origin/nr-rlc-pdcp-config-file' into integration_2025_w24 (!3383)
Add configurable values of NR RLC and NR PDCP to the configuration file

This is for the gNB (the UE gets the values from the gNB).

The physical simulators were also adapted (we put the previously
hardcoded values that were everywhere in the code into the simulators
themselves). I don't think we need to have those values configurable for
the simulators, but I can study the possibility to add this if someone
tells me it's important (if not important I prefer not to do it, I am
not sure if it is trivial to do or not).
2025-06-10 15:02:05 +02:00
Guido Casati a937eaec23 Rework RRCReconfiguration handling in RRC/ASN1
according to TS 38.331, RRCReconfiguration messages can be carried
in a container by different RRC messages, e.g. HandoverPreparationInformation,
HandoverCommand, RRCResume etc.. therefore before the introduction of new
RRCReconfiguration messages, e.g. for handover, a new design seems to be necessary
in order to improve modularity and maintainability of the code.

The goal of this commit is to make the generation of RRCReconfiguration
messages more modular by (1) preparing the RRCReconfiguration parameters
data in RRC (2) pass it to ASN1 for IEs allocation (3) encode to buffer

The following changes are introduced:
(1) introduce struct nr_rrc_reconfig_param_t to store the RRC parameters relevant
    to encode the RRCReconfiguration IEs
(2) add RRC function get_RRCReconfiguration_params to fetch nr_rrc_reconfig_param_t
    data from the UE context and
(3) pass it to the ASN1 encoder, e.g. do_RRCReconfiguration
(4) add a function build_RRCReconfiguration_IEs to allocate memory and build the
    ASN1 NR_RRCReconfiguration_IEs_t and
(5) adopt it in do_RRCReconfiguration
(4) add free_RRCReconfiguration_params for memory management of nr_rrc_reconfig_param_t data
(6) add test for rrc_reconfiguration

get_RRCReconfiguration_params:

This function prepares RRCReconfigurationParams for RRC encoding.

Motivation of this change: depending on the RRCReconfiguration
message to be encoded, the ownership of ASN1 memory allocation
should belong to the ASN1 layer, therefore this function is
preparing the nr_rrc_reconfig_param_t data to pass to the
ASN1 encoder to build the ASN1 message and encode to buffer

The function is preparing the params for the IEs that are
either mandatory or shared among different RRC messages.
Specific fields that depend on the message to be encoded are then
added afterwards in the caller. The input param to indicate
re-establishment has been split between SRBs and DRBs, since
depending on the scenario the PDCP re-establishment can vary.
This will be addressed in a later commit.

This function is also handling xid.

build_RRCReconfiguration_IE:

The long term goal is to transfer ownership of memory allocation in ASN1 encoding to
build_RRCReconfiguration_IE, then by calling ASN_STRUCT_FREE_CONTENTS_ONLY
on dl_dcch_msg, all IEs allocated in the context are freed after encoding to buffer.
In the long term, createDRBlist, createSRBlist can also be brought into the context
of build_RRCReconfiguration_IEs and free the ASN1 structure after encoding.
This improves maintability and helps preventing memory leaks.

Currently, what is not allocated in the context, is nulled and freed outside.

free_RRCReconfiguration_params:

this function frees memory allocated to build the nr_rrc_reconfig_param_t data,
including the NR_DRB_ToAddModList_t and NR_SRB_ToAddModList_t. The function
freeDRBlist has been removed since no longer necessary.

dedicated_NAS_msg_list:

dedicated_NAS_msg_list handling has also been refactored, by:

(1) fetch the NAS PDUs from the UE context in get_RRCReconfiguration_params,
which translates to (2) passing an array of dedicatedNAS-MessageList + size
to the ASN1 encoding function where (3) the ASN1 encoding logic for the
dedicated_NAS_msg_list IE has been moved

Note, 3GPP TS 38.331:
dedicatedNAS-MessageList: SEQUENCE (SIZE(1..maxDRB)) OF DedicatedNAS-Message
2025-06-09 20:43:04 +02:00
Cedric Roux 915f9d55d8 fix asn1 test compilation
encode_xx() are needed
2025-06-05 09:18:49 +02:00
Cedric Roux b9dffde03e adapt existing code to use NR RLC and NR PDCP values from configuration
- remove hardcoded values
- adapt gNB RRC code
- adapt gNB MAC code
- adapt physical simulators, where we put the hardcoded values
  that were everywhere else before; if there is a need for those
  simulators to get configurable values, more work is needed
  (but it's doubtful that it is needed)
2025-06-05 09:18:48 +02:00
Robert Schmidt ac01fcc1b4 Move RLC-BearerConfig file to nr_rrc_config.c
One of the next commits moves nr_rrc_config.c "down to" the MAC/DU. The
BearerConfig functions are only used at the DU, so move them here in the
corresponding file.
2025-06-02 11:43:40 +02:00
Robert Schmidt 67f04d828a Implement UE context addition in CU through F1 in do-ra/phy-test
Add functionality to trigger the addition of a new RRC UE context (in
the CU) for NSA modes, using F1. This commit makes do-ra and phy-test
modes work. "True" NSA will work in the next commit, which also sends
the X2 addition request answer message.
2025-05-04 09:34:41 +02:00
francescomani 85ee4647b5 remove NR/nr_rrc_defs.h dependency from asn1_msg.h 2025-04-24 18:40:49 +02:00
francescomani b05d1ff599 remove gNB structure dependency from get_MeasConfig in asn1_msg.c 2025-04-24 18:40:49 +02:00
francescomani bda64a05d9 remove gNB structure dependency from do_RRCReestablishment in asn1_msg.c 2025-04-24 18:40:49 +02:00
francescomani 368e74930c remove gNB structure dependency from do_RRCReconfiguration in asn1_msg.c 2025-04-24 18:40:49 +02:00
francescomani 735a631499 remove gNB structure dependency from do_RRCSetup in asn1_msg.c 2025-04-24 18:40:49 +02:00
Robert Schmidt 98d4dff509 Merge remote-tracking branch 'origin/NR_gNB_SIB2' into integration_2025_w15 (!3184)
NR SIB2

- Transmission of SIB2
- Fixes for transmission and reception of SIB19

Closes #901
2025-04-14 17:01:28 +02:00
francescomani 535d8e7765 other SIBs scheduling configuration in SIB1 2025-04-14 10:15:45 +02:00
francescomani 4b23c7ea65 F1 transmission from CU to DU of SIB2 2025-04-11 15:37:08 +02:00
Robert Schmidt 05d393a399 Encapsulate cmake asn1c call, suppress useless output
Encapsulate the asn1c call from cmake in a cmake function run_asn1c().
As a notable change to the previous manual add_custom_command()
invocation, in suppresses the output of asn1c by default [1] and stores
it in a log file. In case of asn1c4 error, the output will output on
stdout.

Use the new run_asn1c() in all occasions for code generation.

[1] it is quite verbose, with many warnings that we cannot influence nor
suppress, and lists all generated files which is verified by the build
system automatically, anyway.
2025-04-09 14:35:29 +00:00
francescomani bc27d1e691 improvements in SIB2 message (info taken from commercial gNB) 2025-04-08 18:09:18 +02:00
francescomani 7506d6343e Merge remote-tracking branch 'origin/f1-handover-minor-fixes' into integration_2025_w10 2025-03-10 09:17:05 +01:00
francescomani 59d2809450 remove nr_rrc_extern.h 2025-03-03 17:00:26 +01:00
Guido Casati 6370ad25fa Use calloc_or_fail whenever possible 2025-02-28 14:28:59 +01:00
Guido Casati 48a307e172 Use 5G-S-TMSI in RRC connection setup procedures
* Use the 5G-S-TMSI stored in RRC to be used as UE identity
* Use 5G-S-TMSI part 1 in RRCSetupRequest encoding (TS 38.331 clause 5.3.3.3)
* Set the ng-5G-S-TMSI-Value in RRCSetupComplete to ng-5G-S-TMSI-Part2 (5.3.3.4 of 3GPP TS 38.331)
* current and only scenario: RRCSetup is received in response to an RRCSetupRequest
2025-02-19 15:02:11 +01:00
Laurent THOMAS 5416be3736 move byte2m128i in a more logical place 2025-01-30 17:14:10 +01:00
Guido Casati eb39836b0a Refactor includes in RRC files
* used open source IWYU tool + manual review
* deleted unused nr_rrc_common.c
2024-11-18 11:25:02 +01:00
746dc29a46 Add HandoverPreparationInformation() ASN.1 encoder function
HandoverPreparationInformation will be used in the follow-up commit to
trigger a handover.

Co-authored-by: batuhanduyuler <batuhan.duyuler@firecell.io>
Co-authored-by: rmagueta <rmagueta@allbesmart.pt>
2024-10-25 20:10:26 +02:00
Robert Schmidt a5a746ee36 Cleanup: Pass UE context directly into rrc_gNB_generate_UECapabilityEnquiry() 2024-10-17 19:06:45 +02:00
Robert Schmidt 65b9af543a Cleanup rrc_gNB_generate_SecurityModeCommand()
Cleanup this function: pass UE context directly, remove protocol_ctxt_t.
2024-10-16 19:13:48 +02:00
Robert Schmidt d6d7064c0b A3 Event is for a PCI: Rename variable to make this clear 2024-09-06 10:20:08 +02:00
Roberto MaguetaandLuis Pereira 327baf2938 Bugfix: an A3 configuration is for a specific PCI
Co-authored-by: Luis Pereira <lpereira@allbesmart.pt>
2024-09-06 10:20:08 +02:00
Robert Schmidt 44d427bf7b Rename RRC_BUF_SIZE for 5G to increase size
A maximum RRC buffer size of 1024 might be very small. We should
increase it, but then the 5G RRC_BUF_SIZE does conflict with other
definitions. To make it unique, also rename to NR_RRC_BUF_SIZE.
2024-09-06 10:20:08 +02:00
Bartosz Podrygajlo f325d02d33 Fix several ASN.1 message related memory leaks in NR 2024-07-03 07:29:02 +02:00
batuhan duyuler c51b2a64fb Prepare Measurement Configuration according to neighbour measurement configuration
Neighbor configuration can be given by gNB.conf

get_MeasConfig function is extended as it will prepare A2 / A3 Report
Configs. Single Meas Obj is used for all.

rrc_gNB_process_MeasurementReport function is extended to process A2 /
A3 measurement events.  helper functions are written to fetch neighbour
cell informations from sequence containers.
(get_neighbour_cell_information, get_neighbour_config)
2024-06-04 07:54:00 +02:00
Cedric Roux 31274f6c64 bugfix/cleanup: remove uint8_t to encode size plus some cleanup
The starting point was the function do_NR_DLInformationTransfer() which
may deal with more than 256 bytes.

Then why not cleanup all the functions in the same file.
(And do a bit of formattting fixing while we're here.)

Then cleanup the callers of those functions.

Then, because of do_SIB23_NR() let's also cleanup in some
structures.

Not all the codebase was cleaned up, there surely remain some uint8_t
(and char/short/uint16_t) which are wrong.
2024-05-27 09:45:22 +02:00
Robert Schmidt 9fd1b9ac69 Correct buffer size for do_NR_DLInformationTransfer()
uper_encode_to_buffer() of asn1c returns the number of BITS that have
been encoded; if we use this, we need to calculate the resulting number
of bytes (rounding up) to get the right buffer size.

Note that do_NR_ULInformationTransfer() uses
uper_encode_to_new_buffer() which returns the number of BYTES, hence, in
this similar function, we should not modify the return value.
2024-05-16 11:59:55 +02:00
Robert Schmidt 177ddaa079 Fill RRC MeasConfig with correct SSB values from DU 2024-05-06 11:45:18 +02:00
Guido Casati 7a9b3485b1 Remove hardcoding of 5G-S-TMSI on nrUE 2024-04-19 10:58:09 +02:00
francescomani 1fa6be2a3d fix procedure after T300 expiry 2024-03-19 09:55:05 +01:00
francescomani bb19306797 transmission of RRCReestablishmentRequest message 2024-03-13 17:57:28 +01:00
francescomani 1b9f674572 clean asn1_msg from mod_id 2024-01-19 11:33:27 +01:00
francescomani 90c8e7dfd1 improvements in UE detachment, including sending a message from NAS and signaling to MAC and fixing some memory leaks when terminating UE 2024-01-04 14:28:49 +01:00
sriharsha f248b2fdff fix: avoid freeing rlc config structure 2023-11-16 09:07:05 +01:00
Laurent THOMAS dd059343d9 ue-rrc-coarse-cleaning 2023-11-10 17:43:59 +01:00
Robert Schmidt 91a30e9a2a Correct return type of do_RRCSetupRequest() 2023-10-10 15:40:26 +02:00
Robert Schmidt f3910e7707 MeasConfig: give SSB ARFCN, not Point A
The UE should measure on the SSB, otherwise it does not see anything.
Hence, this commit fixes the meas-config to request the UE to measure
on the right frequency.
2023-10-03 11:19:09 +02:00
Robert Schmidt 6f8a222698 Free default MeasConfig 2023-09-22 08:22:15 +02:00
Robert Schmidt 885a029abc Fix memory leaks in do_NR_DLInformationTransfer() 2023-09-22 08:22:15 +02:00
Robert Schmidt a4c75620ee Fix memory leaks in do_NR_RRCRelease() 2023-09-22 08:22:15 +02:00
Robert Schmidt a3382f8faa Fix memory leaks in do_RRCSetup() 2023-09-22 08:22:15 +02:00
Robert Schmidt 1b171e798d Fix memory leaks in do_RRCReconfiguration() 2023-09-22 08:22:15 +02:00
Robert Schmidt c325c6a232 Correctly free memory in do_NR_SA_UECapabilityEnquiry() 2023-09-22 08:22:15 +02:00