Commit Graph
10919 Commits
Author SHA1 Message Date
Robert Schmidt 7db4732ce1 Merge remote-tracking branch 'origin/N2_HO_Measurement_config' into integration_2024_w22 2024-06-04 09:29:42 +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
batuhan duyuler cec6b8925a Preparation of Neighbour Configuration & Measurement Configuration | Parsing the configuration
- neighbour_config.conf file includes neighbour and measurement related parameters
Neighbour List:
 - nr_cellid: the identity of existing cell who has neighbour
 - neighbour_cell_configuration(list): includes the identity parameters
   of the neighbour cell such:
    - gNBID (incase of N2 Handover / to be identified from AMF)
    - nr_cell_id (target gNB needs to consider)
    - physical_cellId (needed for measurement reporting)
    - absoluteFrequencySSB (needed for measurement reporting)
    - subcarrierSpacing (needed for measurement reporting)
    - plmn / tracking area code (incase of N2 Handover / needed for AMF
      to identify / allow HO)

NR Measurement Configuration
 - Periodical
    - enable (default is 0, 1 enables the reporting)
    - includeBeamMeasurements, maxNrOfRS_IndexesToReport (configurable
      reporting parameters)
 - A2
    - enable (default is 0, 1 enables the reporting)
    - threshold , timeToTrigger (configurable reporting parameters)
 - A3
    - cell_id (the nr_cellid of neighbour cell. So this A3 parameters
      will be used for the neighbour
        - [-1] means default. so it can be applied to any neighbour if
          there is no specific config
        - Neighbour specific A3 Threshold can be used or default can be
          selected depending to the neighbour planning
        - The neighbour-config.conf specifies, apply default A3 for
          neighbours 3 and 4 | apply specific one for neighbour 2

    - offset, hysteresis, timeToTrigger (configurable reporting parameters)

the neighbour_config.conf can be included in the gNB.conf file. Example
is given: gnb.sa.band78.106prb.rfsim.neighbour.conf

A sequence array container is used for neighbour cell configuration. RRC
structure has this container.  A Measurement configuration structure is
defined. This structure has Periodical / A2 Event structures and also a
sequence container for A3 Event List.

These structures are filled during the initialization. While F1 Setup
Response is coming from DU to CU, the intra frequency / inter frequency
neighbour decision is given for the existing cell. Also new neighbours
could be added here if needed.
2024-06-04 07:54:00 +02:00
batuhan duyuler e5afdcdd43 Move cell-value lookup functions (SSB ARFCN, ...) to rrc_gNB_du.c
The functions are needed in a later commit in both rrc_gNB_du.c and
rrc_gNB.c, so move to the rrc_gNB_du.c file concerned with DUs (cells).
2024-06-04 07:43:54 +02:00
Robert Schmidt 9465ae778b Merge remote-tracking branch 'origin/softmodem-caps' into integration_2024_w22 2024-06-03 21:37:35 +02:00
Robert Schmidt 092047984a Merge remote-tracking branch 'origin/initial_gNB_NTN_support' into integration_2024_w22 2024-06-03 21:36:00 +02:00
Robert Schmidt 5b53f4ee0f Merge remote-tracking branch 'origin/NR_UE_cell_search' into integration_2024_w22 2024-06-03 21:35:51 +02:00
Robert Schmidt 9b3ab10c20 Make failed TUN socket operation non-fatal
It might be desirable to run the UE without superuser rights. More
concretely, it might run without NET_ADMIN. In this case, various
corresponding operations on the TUN socket fd might fail. In this
commit,

- improve error reports to make them more clear
- do not automatically exit(1), but return from the function to ensure
  continuity of the softmodem
2024-06-03 14:00:49 +02:00
Thomas Schlichter f1938acbab gNB: make ue_TimersAndConstants configurable via conf file 2024-06-03 11:54:55 +02:00
Thomas Schlichter 90fa3d5534 gNB: make SR timers configurable in CONF file 2024-06-03 11:54:55 +02:00
Thomas Schlichter 4cdf4d61f3 gNB: add sr_ProhibitTimer_v1700 2024-06-03 11:54:55 +02:00
Thomas Schlichter be41a4ea60 gNB: use 2 * K2 for contention_resolution_timer, as the timer starts with Msg2 transmission and ends with Msg4 ACK reception 2024-06-03 11:54:55 +02:00
Thomas Schlichter 0ce0282238 gNB: make checks for missed feedbacks more robust w.r.t. frame number warp-around in find_harq() 2024-06-03 11:54:55 +02:00
Thomas Schlichter 6b01cfb8e2 gNB: fix phytest scheduler in case no HARQ processes are available
In case no HARQ processes are available (because all are waiting for feedback), we skip scheduling...
2024-06-03 11:54:55 +02:00
Thomas Schlichter 8e4526e221 gNB: change TA update interval to 100 frames instead of 10
The RTT for GEO satellites is more than 500 ms.
And as the TA update interval must be greater than the RTT, we increase it to 1 second instead of 100 ms.
Should also do no harm for terrestrial networks.
2024-06-03 11:54:55 +02:00
Thomas Schlichter ccba7c875d gNB: add NTN specific parameter cellSpecificKoffset_r17 and use it for UL scheduling
According to the RRC specification, cellSpecificKoffset is:
Scheduling offset used for the timing relationships that are modified for NTN (see TS 38.213 [13]).
The unit of the field K_offset is number of slots for a given subcarrier spacing of 15 kHz.
If the field is absent UE assumes value 0

This parameter `cellSpecificKoffset_r17` can be set in the gNB conf file, in the section `servingCellConfigCommon`
2024-06-03 11:54:55 +02:00
Robert Schmidt 76f06a9386 Correctly compute array size to prevent buffer overflow
Reviewed-By: Laurent THOMAS <laurent.thomas@open-cells.com>
2024-05-31 15:25:53 +02:00
Sakthivel Velumani ca93e68410 Use command line option for sell search
There is already a command line option called 'ue-scan-carrier' which
seemed to blindly look for SSB by changing the center frequency by
+/-100Hz if the previous attempt failed. This is probably copied from
LTE and is not suitable for NR. This commit uses this option to either
1. Perform initial sync on one GSCN if the SSB position if known
2. Or scan the all GSCN (if the SSB postion is unknown)

Also, the following is done for re-synchronization
1. Scan all GSCN when UE comes back from IDLE state
2. Scan one GSCN when UE does re-estabishment

Removed dependency of lte-softmodem.h in nr-softmodem.c.
CONFIG_HLP_UESCAN is declared also in lte-softmodem.h.
2024-05-30 10:20:55 -04:00
Sakthivel Velumani 043da0c440 NR UE scan for SSB within current bandwidth
Till this commit, the UE gets the position of SSB in frequency from
command line and does the syncronization by locating the SSB in time. It
does this by generating a PSS time signal during initialization with the
SSB offset given via command line. Then PSS detection is done by
correlation.

In this commit, the UE computes a list of GSCN in the current NR band
that falls within the current bandwidth for the set center frequency.
For each GSCN in the list, the UE starts a thread and performs the
following:
1. Generate PSS time signal with SSB offset for current GSCN.
2. Detect PSS, SSS and decode PBCH (this step remains the same).
After all threads finishes, the results are collected.

For now, only the first detected PBCH is used to proceed further. So
this PBCH is indicated to MAC and UE exits initial sync.

Future work: The cell search can be standalone feature where the UE
could scan for SSB in the entire NR band. This would require changing
radio's frequency on the fly as the UE's bandwidth would not cover an
entire NR band. The cell detection can futher be imporved by looking
for SIB1 for each decoded PBCH.
2024-05-30 10:20:45 -04:00
Robert Schmidt bedcd5a1be Merge remote-tracking branch 'origin/maxMIMO-layers-parameter' into integration_2024_w22 2024-05-30 13:01:33 +02:00
Robert Schmidt e6f0f80c9f Over-estimate short and long BSR
38.321 6.1.3.1 says: "The size of the RLC headers and MAC subheaders are
not considered in the buffer size computation" [for BSR]. However, prior
to this commit, we take the size signaled of the BSR and schedule the UE
with that amount of data, making it impossible for the UE to transmit
all its data at once (because it is the size signaled + headers).

In this commit, over-estimate the buffer status size. As we cannot know
the exact number and size of headers, we simply use "BSR size + n", as
done in function overestim_bsr_index().
2024-05-30 08:07:37 +02:00
francescomani 95442d6075 adding a control to the maxMIMO_layers input and updating RUNMODEM.md 2024-05-29 15:26:28 +02:00
Raymond Knopp 15488a18e3 added parameter to limit the maxMIMO-layers on DL (i.e. to 2 for 4x4) 2024-05-29 14:46:50 +02:00
Robert Schmidt 1f6d4a6cfe Merge remote-tracking branch 'origin/hotfix-uint8_t-size' into integration_2024_w21c 2024-05-27 12:18:26 +02:00
Robert Schmidt c202e9173f Merge remote-tracking branch 'origin/hotfix-fdbk-for-msg2-sib' into integration_2024_w21c 2024-05-27 12:18:13 +02:00
Robert Schmidt c0b7ac9a7e Merge remote-tracking branch 'origin/fix-dci11-rb_bitmap-filling-bug' into integration_2024_w21c 2024-05-27 12:18:07 +02:00
Robert Schmidt 7ffc403098 Demote log to debug for Msg3 infeasibility
It can happen that in the current DL slot, we cannot send an allocation
for Msg3 in a later UL slot. Up to this commit, MAC printed a warning.
However, this is not really a warning, as it will likely work in the
next or a later slot. So demote this to debug.
2024-05-27 11:48:21 +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
Bartosz Podrygajlo 4a5d924375 Remove accumulated_delta_PUCCH from UE nfapi interface. 2024-05-27 09:22:42 +02:00
Bartosz Podrygajlo 3fd119ff29 Do not send PUCCH ACK on DLSCH that doesnt require it.
UE was attempting to send ACK on MSG2 - was caused by missing brackets in if statement.
2024-05-27 09:17:39 +02:00
Robert Schmidt bfc41d1038 Merge remote-tracking branch 'origin/Fix_Aerial_Memory_Leak' into integration_2024_w21c 2024-05-25 12:35:26 +02:00
Robert Schmidt 1127a9850b Merge remote-tracking branch 'origin/Fix_array_for_debug_ongoing_transactions' into integration_2024_w21c 2024-05-25 12:34:46 +02:00
Robert Schmidt e30552c23a Merge remote-tracking branch 'origin/refactor-lcid-gnb-mac' into integration_2024_w21c 2024-05-24 17:54:32 +02:00
Robert Schmidt 5686b2a26d Merge remote-tracking branch 'origin/phr_handling_for_develop' into integration_2024_w21c 2024-05-24 17:53:50 +02:00
Rúben Soares da Silva a516a632d4 Fix memory leak related to RX_DATA.indication message 2024-05-24 14:49:45 +01:00
Robert Schmidt 8820a57547 Merge remote-tracking branch 'origin/fix-ue-ul-retransmissions-payload-copy' into integration_2024_w21c 2024-05-24 11:53:16 +02:00
Robert Schmidt c76a9d43f2 Merge remote-tracking branch 'origin/remove_some_enb_references_in_nr' into integration_2024_w21c 2024-05-24 11:50:17 +02:00
Robert Schmidt 87a1ff5b37 Merge remote-tracking branch 'origin/fix_reverse_n_bits' into integration_2024_w21c 2024-05-24 11:49:13 +02:00
Robert Schmidt 98df398dc3 Remove empty/useless process_CellGroupConfig() 2024-05-24 11:42:50 +02:00
Robert Schmidt d7ba96f4ee Add new RA as part of nr_mac_add_test_ue() and refactor
A to-be-added UE's RA is added through nr_mac_add_test_ue() (the name is
misleading, it is not a "test UE") through its CellGroupConfig. Using
the process_CellGroupConfig() is unfortunate, because it is not really
clear what part of the CellGroupConfig gets evaluated (it is certainly
not all). Move the code for adding a new RA directly in the user-add
function, and refactor this one.
2024-05-24 11:42:50 +02:00
Robert Schmidt 6c71775ea1 Sort LCs by priority
Introduce new LC configuration "priority", as specified in 38.321, and
use to sort LCs by priority. We set the priority of an SRB according to
38.331 Section 9.2.1, and for a DRB to be the minimum priority of the
QoS flows associated to this DRB.
2024-05-24 11:42:50 +02:00
Robert Schmidt ee9570993d Add functions for LC add/release at MAC
Introduce new functions to add/release LCs without needing to go through
the intermediate CellGroupConfig. This harmonizes LC handling at the "DU
handler" to keep it consistent with RLC bearer handling.

These functions allow to group LC configuration handling, and we can
remove functions for setting NSSAIs and QoS by handling in one central
place (while adding LCs).

nr_mac_add_test_ue() is used by simulators and also in NSA mode to add a
new UE. Ideally, these users should also call the ue context setup
request handler to add a UE context; for the moment, respect the passed
list of LCs to add. Similarly, for do-ra, we require a dedicated
function to still parse the CellGroupConfig, so we keep that part of
functionality.

On reestablishment, since we do not process the CellGroupConfig from the
old UE, we need to add LCs for the new UE based on the onces from old
UE.
2024-05-24 11:42:45 +02:00
Robert Schmidt 7accbd9778 MAC: use seq_arr to group LC configuration
Use a common structure nr_lc_config_t to group LC configuration for one
logical channel. Use seq_arr for simple lookup, adding, removing of
elements without manual indexing logic.

This commit retains the previous logic of adding/releasing LCs through
the process_CellGroupConfig(), although we know while building the
CellGroupConfig if we add/release LCs. The next commit fixes this.
2024-05-24 11:35:15 +02:00
Robert Schmidt 850f26fc5c Move get_lcid_from_srbid/drbid() to central gNB MAC primitives
In later commits, we will call these functions from multiple places in
the scheduler, so move them to a central place.
2024-05-24 11:35:15 +02:00
Robert Schmidt 9e5c5497ab Avoid gigantic array
If we do not make this change, with the next commit, we get the
following error from gcc:

  openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm.c:299:46: error: assignment of read-only location '*(arr_ue_id.ue_info_list + (sizetype)(arr_ue_id.sz * 2444864))'
  |         arr_ue_id.ue_info_list[arr_ue_id.sz] = *ue;
2024-05-24 11:35:15 +02:00
Robert Schmidt 7cfd5a1f21 Remove outdated/useless comment 2024-05-24 11:35:15 +02:00
Robert Schmidt ec326e856e Remove compute_ph_factor() dump parameter, make LOG_D 2024-05-24 09:25:45 +02:00
Raymond Knopp e69e787ab0 testing use_deltaMCS=0 2024-05-24 09:25:45 +02:00
Raymond Knopp 70444f133a power control changes for deltaMCS mode and force_ul256qam_off
- addition of control of deltaMCS if enabled in configuration file.
- introduce separate parameter to disable 256QAM in UL
- put min_grant_prb configuration back in pf_ul() as default prb size.
2024-05-24 09:25:44 +02:00
Robert Schmidt 295f221a9b Merge remote-tracking branch 'origin/simpler-parallel-exclusion-ue-tx' into integration_2024_w21b 2024-05-24 08:13:41 +02:00