Commit Graph
673 Commits
Author SHA1 Message Date
Guido Casati 9d951b109f Return in nr_ue_get_sdu when mac->lc_ordered_list.count is 0
This count is used to size the dynamic array lcids_bj_pos. In case
count is zero, this would lead to runtime error. With this change,
the function will indicate to the caller that no SDUs are present and
will print an error.
2025-06-09 20:12:12 +02:00
Jaroslava Fiedlerova 3bf3b78cb6 Merge remote-tracking branch 'origin/fix-msg3-datarace' into integration_2025_w23 (!3443)
Fix data race in NR UE MSG3 scheduling

Fixed a data race between DL processing of RAR and UL scheduler, which might
result in dropping MSG3.

It was possible that the UL scheduler for the UL slot which RAR indicates as
MSG3 slot was already run by the time the RAR was decoded.

Therefore when DCI for RAR is decoded, assume worst case and halt UL scheduler
for next slot until RAR is decoded solving the data race. This also in turn
halts all later scheduling due to sequential nature of the UL scheduler calls.

Closes #962
2025-06-03 18:59:16 +02:00
Bartosz Podrygajlo 85f3e62caf Fix data race in NR UE MSG3 scheduling
Fixed a data race between DL processing of RAR and UL scheduler, which
might result in dropping MSG3.

It was possible that the UL scheduler for the UL slot which RAR
indicates as MSG3 slot was already run by the time the RAR was decoded.

Therefore when DCI for RAR is decoded, assume worst case and halt the
earliest corresponding UL scheduler call until RAR is decoded solving
the data race. This also in turn halts all later scheduling due to
sequential nature of the UL scheduler calls.
2025-06-03 14:41:06 +02:00
Bartosz Podrygajlo e676d0d2cc Relax NR_UE_CAPABILITY_SLOT_RX_TO_TX asserts
Relax the UEs requirements on k1/k2 value.
2025-06-03 08:56:31 +02:00
Sakthivel Velumani 18c9a3720d Fix asn1c double free
The UE stores PDCCH search spaces from the network in NR_BWP_PDCCH_t
struct within NR_UE_MAC_INST_t. After storing, the pointers otherSI_SS,
ra_SS and paging_SS are updated to point to the stored SS. Multiple
pointers could point to the same stored SS struct depending on
configuration. Then when the UE wants to release the SS, the pointers
are used to free the stored SS using ASN_STRUCT_RESET(). If multiple
pointers point to the same SS, calling ASN_STRUCT_RESET() on all
pointers would lead to double free. So one needs to check for dangling
pointer before freeing.

Instead of using pointers and assigning them during configuration, we
use SS id for otherSI_SS, ra_SS and paging_SS to retrieve the pointers
whenever needed. When the UE wants to release the SS, we make them -1
indicating an invalid SS id.
2025-04-25 15:40:07 -04:00
francescomani bdb3555825 NR specific mac_rlc_status_ind function 2025-04-01 11:46:58 +02:00
francescomani 5a1d7a75dc NR specific mac_rlc_data_req function 2025-04-01 11:46:58 +02:00
Raghavendra Dinavahi b141faaf30 K-offset updated with configured sub carrier spacing
According to 38.331 , cell specific K-OFFSET provided in SIB19 is provided in number of slots as per 15Khz SCS
Koffset before being applied, needs to be updated to the slots according to the configured subcarrier spacing.
2025-03-28 16:44:51 +01:00
francescomani dcf7e4ddcd Merge remote-tracking branch 'origin/issue_907' into integration_2025_w11 2025-03-17 16:50:56 +01:00
francescomani 44692187b8 use sleep to delay UE to allow the convergence of the IIR filter on PRACH noise measurements at gNB side instead of counting frames 2025-03-13 11:53:58 +01:00
francescomani 7ecedfced0 UE fix when completing RA with C-RNTI in MSG3 2025-03-13 11:53:58 +01:00
francescomani 3f35d462e9 separate DL and UL timers at UE 2025-03-12 10:30:17 +01:00
francescomani 65bc749ee6 start the rar reception window in PRACH slots but take into account the additional slots difference wrt when we actually would need to start it (in first DCI occasion) 2025-03-12 10:30:17 +01:00
francescomani 5df6153024 remove unnecessary nr_ue_manage_ra_procedure function 2025-03-12 10:30:17 +01:00
francescomani dcc17a9d70 signaling RRC RA problems (leading to possible radio link failure) 2025-03-12 10:30:17 +01:00
francescomani e958822a73 Procedures for Contention Resolution 2025-03-12 10:21:27 +01:00
francescomani cc154da549 Procedures for Random Access Response reception 2025-03-12 10:21:27 +01:00
francescomani 108fdae159 removing unnecessary nr_Msg1_transmitted function 2025-03-12 10:15:49 +01:00
francescomani 9f3f7b041c clearing old structures and functions for rach occasions 2025-03-12 10:15:49 +01:00
francescomani 24fed617b5 reworking prach scheduler to use new rach occasion information 2025-03-12 10:15:49 +01:00
francescomani 220af3f669 move function to build ssb list after common configuration (reception of SSB information)
also removed unnecessary BWP dependence
2025-03-12 10:11:38 +01:00
francescomani a7e3e8a312 harmonization of functions to get info from PRACH config tables 2025-03-12 10:11:38 +01:00
francescomani 95971514a0 Random Access Resource selection for 4- and 2-step RA 2025-03-12 09:49:54 +01:00
francescomani c17881e8d5 implmenent RA trigger for PDCCH order (DCI initiated RA) 2025-03-12 09:49:54 +01:00
francescomani 796c2a61a3 improvements in RA init procedures according to 5.1.1 in 38.321 2025-03-12 09:49:54 +01:00
francescomani 939ce850a5 improved management of RA functions at UE 2025-03-12 09:49:54 +01:00
francescomani 20accaaceb Merge remote-tracking branch 'origin/use_slot_type' into integration_2025_w10 2025-03-10 18:02:28 +01:00
Bartosz Podrygajlo 75f04874d1 Handle changing N_TA_offset on the UE correctly in higher layers
Send new N_TA_offset in config_request to PHY. Remove N_TA_offset update
from ta_command.
2025-03-10 16:00:54 +01:00
francescomani e92f3484b6 Merge remote-tracking branch 'origin/remove_some_mac_extern' into integration_2025_w10 2025-03-07 08:35:47 +01:00
francescomani d8911ff19d use slot type for slots in NR 2025-03-04 18:04:12 +01:00
francescomani 3852320af5 improvements in ul_port_config function 2025-03-03 17:00:26 +01:00
francescomani a04e7af63e formatting 2025-03-03 17:00:26 +01:00
francescomani 67cf66c65c remove mac_extern at UE 2025-03-03 17:00:26 +01:00
francescomani f265729e68 functions for 7-3-1-1-2 tables 2025-03-03 17:00:26 +01:00
francescomani ab11e1a58c function for precoding information parameters 2025-03-03 17:00:26 +01:00
francescomani 38734ee31c remove nr_mac_extern file 2025-03-03 17:00:26 +01:00
francescomani 00ac4f0b46 functions to read BSR tables 2025-03-03 17:00:26 +01:00
Sakthivel Velumani 4814443ba4 Fix RA-RNTI computation according to 3GPP
t_id for long prach formats is computed with mu = 0.
2025-02-25 11:58:41 -05:00
Sakthivel Velumani b144ca7049 fix delta_preamble for long format 2025-02-23 16:18:01 -05:00
Sakthivel Velumani 8f5aa740bd Fix function nr_get_prach_mu for L839
function returns mu of UL BWP if msg1-SubcarrierSpacing absent instead
of asserting. The mu retured by this function is used to compute the
slot number of PRACH. In case of long format, the slot number is as per
UL mu.
2025-02-23 16:17:58 -05:00
Robert Schmidt 7d574ffcfb Merge remote-tracking branch 'origin/fix_ntn_leo' into integration_2025_w07 (!3194)
fix NTN LEO scenarios

- gNB: add support for NTN parameter ta-CommonDrift-r17
- NR UE: fix application of NTN TA information
- NR UE: add command line parameter ntn-initial-time-drift to compensate
  time drift during initial sync
- NR UE: fix writeTimestamp inconsistencies
- NR UE: add MAC state UE_RECEIVING_SIB ensuring to start RA only after
  successfully receiving SIBs
- rfsimulator: update earth radius for LEO simulation to match UE
  position in ue.conf file
- update conf files for NTN LEO scenario
- update description how to run NTN scenarios in RUNMODEM.md
- fix: ta-Common is a round-trip-time, not a one-way delay
- NR UE: simplify calculation of next_tx_slot_and_frame by moving up
  assignment of duration_rx_to_tx
- cellbarredNTN indicates notbarred in SIB1 if NTN access is available
- Removed b66 NTN and enabled B254 NTN conf file in CI
- NR UE: RRC layer now explicitly tells MAC layer when the RA procedure
  can be started
- move NTN LEO config to band 254 and update doc/RUNMODEM.md

Closes #901
2025-02-17 15:09:24 +01:00
Thomas Schlichter f1ae1025ad fix: ta-Common is a round-trip-time, not a one-way delay 2025-02-14 17:03:56 +00:00
Thomas Schlichter be2ed07911 NR UE: add MAC state UE_RECEIVING_SIB ensuring to start RA only after successfully receiving SIBs 2025-02-14 17:03:56 +00:00
Thomas Schlichter e7122ad789 NR UE: fix application of NTN TA information 2025-02-14 17:03:48 +00:00
francescomani ad66c75a33 frame_structure used also at UE 2025-02-12 18:01:51 +01:00
Robert Schmidt f7617f8c9b nFAPI time conversion: handle numerologies flexibly
At both the PNF and the VNF, introduce a separate numerology field, and
pass the numerology when converting time information using macros from
nfapi_interface.h. The actually numerology is still hardcoded to 1 (as it
was before), but the follow-up commits will put a suitable numerology.

In both cases, but the numerology next to the frame/slot information.
2025-01-27 10:59:19 +01:00
Robert Schmidt b96dfadae9 Fix compilation problem when defining ENABLE_MAC_PAYLOAD_DEBUG
Reported-by:  Abdo Gaber <abdo.nasser.ali.gaber@emerson.com>
2025-01-14 08:03:54 +01:00
Robert Schmidt 54c88a4a4a UE MAC: in phy-test/do-ra, fill TB randomly
Commit d641a76196 ("fix BSR report malformed, add SHORT BSR when it
can") removed code to fill the remainder of a TB, if it is not filled
with data from RLC, with random data when using phy-test or do-ra modes.
This random data filling is intentional, as it might prove useful for
demos or when debugging (e.g., to see used spectrum instead of 0, etc.).
Reintroduce the functionality, but unlike the original code, make it
dependent on the mode, not RFsim.

See also discussion in #888.

Fixup: d641a76196
2025-01-09 15:24:23 +01: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