- 22 Jul, 2026 3 commits
-
-
Robert Schmidt authored
Signed-off-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Laurent THOMAS authored
nr_fill_rx_indication() increments itself, remove full memset for the related struct (100 elements, one used) Signed-off-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Laurent THOMAS authored
Instead of this somewhat opaque function, fill the struct in place to make it clearer what gets filled. This should make the code clearer in general. Co-authored-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Signed-off-by:
Laurent THOMAS <laurent.thomas@open-cells.com> Signed-off-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
- 17 Jul, 2026 7 commits
-
-
Robert Schmidt authored
Integration: 2026.w29 - #280 Optimize syscalls in GTP receiver/sender, GTP F1 UL callback optimization - #287 demote LOG_E for RRC Release with deprioritisationReq - #259 [FHI72] Remove xran F release support - #286 NR_PHY: Optimize layer demapping for PDSCH/PUSCH receiver performance - #248 Allocate multiple UEs in one slot (DL/UL) - #283 Update WLS library dependencies - #284 Update OpenAirInterface repository links to the new Duranta Project repository - #301 fix(t2): Accept CBs decoded across separate HARQ rounds - #302 fix(phy): Fix an uninitialized variable bug in dot_product - #303 fix(phy): use simde_mm_setr_epi16 to initialize alpha_128 in rotate_cpx_vector - #298 ITTI: cleanup memset after alloc, adopt calloc_or_fail - #299 Update the OAI UE config parameters check range with the standard SST and SD values - #268 nfapi: support SRS channel reports for 64 gNB antenna elements - fix for WLS PR - #304 fix(PHY): compare NID2 instead of NID1 in rx_sss_nr() coherence check - #277 chore: migrate FlexRIC submodule to GitHub - #195 Add cell-level E2SM-KPM measurements - #300 CI: Update Aerial setup to 26-1 Closes: #296
-
Robert Schmidt authored
CI: Update Aerial setup to 26-1 (#300) This PR updates the cuBB image in the Aerial setup to release 26-1. Reviewed-By:Rúben Soares Silva <rsilva@allbesmart.pt>
-
Robert Schmidt authored
Add cell-level E2SM-KPM measurements (#195) This PR adds five 3GPP TS 28.552 cell-level measurements, exposed through the E2SM-KPM service model. The five metrics are: | Metric | 3GPP TS 28.552 | Object class | Advertised by | |---------------------|----------------|--------------|---------------------------| | `CARR.PDSCHMCSDist` | §5.1.1.12.1 | NRCellDU | DU, monolithic gNB | | `CARR.PUSCHMCSDist` | §5.1.1.12.2 | NRCellDU | DU, monolithic gNB | | `L1M.SS-RSRP` | §5.1.1.22.1 | Beam | CU, CU-CP, monolithic gNB | | `MR.NRScSSSINR` | §5.1.1.32 | NRCellCU | CU, CU-CP, monolithic gNB | | `RRC.ConnMean` | §5.1.1.4.1 | NRCellCU | CU, monolithic gNB | Each metric is delivered as one signed commit. Metrics: CARR.PDSCHMCSDist — §5.1.1.12.1: PRB-weighted distribution of the MCS used on PDSCH, modelled as a 3D histogram over (rank, MCS-table, MCS-index). The collection hook in the DL scheduling path increments the matching bin by the number of scheduled PDSCH RBs. Carried as E2SM-KPM Style 1 / Indication Message Format 1 with the `distBinX/Y/Z` measurement labels. CARR.PUSCHMCSDist — §5.1.1.12.2: Uplink counterpart of the above, over (rank, MCS-table-family, MCS-index) for PUSCH. The UL scheduling hook increments the bin by the number of scheduled PUSCH RBs. L1M.SS-RSRP — §5.1.1.22.1: Distribution of the SS-RSRP reported by UEs, resolved per SSB beam. The RRC layer accumulates a per-beam histogram from each periodic Measurement Report; RSRP level `L` maps to `L − 157` dBm (TS 38.133 §10.1.6). The reader returns the per-beam value when the `ssbIndex` label is present, or the cell-wide sum over beams otherwise. MR.NRScSSSINR — §5.1.1.32: Distribution of the NR serving-cell SS-SINR reported by UEs. The RRC layer accumulates a per-cell histogram from each periodic Measurement Report; level `L` maps to `(L − 46) / 2` dB (0.5 dB steps, TS 38.133 §10.1.16). RRC.ConnMean — §5.1.1.4.1: Mean number of UEs in RRC-CONNECTED state over the granularity period. The RRC task samples the connected-UE count at a fixed interval and accumulates a running `{sum, samples}`. The reported mean is the delta of that cumulative accumulator between two consecutive readings. Notes: - All five metrics are carried as E2SM-KPM **Measurement Report Style 1** - Distribution metrics use the standard `distBinX/Y/Z` (and `ssbIndex` where applicable) measurement labels; bins are 1-based on the wire and mapped to 0-based array indices. Where TS 28.552 defines no scalar aggregate, a request without the required label or a `noLabel` subscriptions, are answered with `NO_VALUE`. Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Teodora Vladić <teodora.vladic@openairinterface.org>
-
Robert Schmidt authored
chore: migrate FlexRIC submodule to GitHub (#277) This PR migrates the FlexRIC submodule from the EURECOM GitLab repository to the GitHub repository under the duranta-project organization. - Update the FlexRIC submodule URL. - Remove submodule branch remotes/origin/service-models-integration from .gitmodules introduced in the commit 2fef830d. After removing the explicit branch configuration, git submodule update --remote will follow the default branch of the FlexRIC remote repository (in this case, dev) Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Teodora Vladić <teodora.vladic@openairinterface.org>
-
Robert Schmidt authored
fix(PHY): compare NID2 instead of NID1 in rx_sss_nr() coherence check (#304) target_Nid_cell was being decomposed with GET_NID1() and compared against pss->nid2 (the detected PSS NID2). Since Nid1 != Nid2 in almost all cases, the coherence check always failed, forcing an exhaustive 336-hypothesis SSS search instead of the intended single-candidate fast path when validating a known neighbor PCI, and spamming LOG_E on every such call. Closes: #296 Reviewed-by:Francesco Mani <email@francescomani.it>
-
Teodora Vladić authored
Relevant PR: * https://github.com/duranta-project/openairinterface5g/pull/259 * https://github.com/duranta-project/openairinterface5g/pull/293Signed-off-by:
Teodora Vladić <teodora.vladic@openairinterface.org> Signed-off-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
- 16 Jul, 2026 7 commits
-
-
Noemi Giustini authored
Implement RRC.ConnMean (3GPP TS 28.552 §5.1.1.4.1): mean number of UEs in RRC-CONNECTED state over the granularity period, computed as a time-average of periodic samples. - ran_func_kpm.c: append RRC.ConnMean to kpm_node_meas_cu[] and kpm_node_meas_gnb[]. - ran_func_kpm_subs.h: add rrc_conn_count_sum and rrc_conn_count_samples to e2_node_level_stats_t for per-report start/end snapshots. - ran_func_kpm_subs.c: add fill_RRC_ConnMean(); snapshots the live RRC counters into node_stats[1], computes the mean as Δsum/Δsamples over the granularity window, returns a real-valued record (noLabel); extend cp_node_level_stats() to copy the two new fields; add dispatch entry to lst_measure[]. - nr_rrc_defs.h: add rrc_conn_count_sum and rrc_conn_count_samples to gNB_RRC_INST. - rrc_gNB.c: add nr_rrc_sample_conn_count(); it samples the connected-UE count and accumulates it into the cumulative counters, invoked from the existing stats timer in the RRC task loop. It is always compiled: counting is harmless when the E2 agent is disabled, and it leaves the timer setup and write_rrc_stats() untouched. Advertised by CU and monolithic gNB node types. Signed-off-by:Noemi Giustini <giustini.n@northeastern.edu>
-
Noemi Giustini authored
Implement MR.NRScSSSINR (3GPP TS 28.552 §5.1.1.32): distribution of the NR serving-cell SS-SINR reported by UEs. Level L maps to (L-46)/2 dB (0.5 dB steps, range -23..+40.5 dB) per TS 38.133 §10.1.16. This is the RRC serving-cell SS-SINR (TS 38.331 Measurement Report), so it is collected at RRC and kept as a per-cell RRC statistic. - ran_func_kpm.c: introduce kpm_node_meas_cu[] with MR.NRScSSSINR; add it to kpm_node_meas_gnb[]; wire kpm_node_meas_cu into the ran_def_kpm table for the CU and CU-CP rows. - ran_func_kpm_subs.c: add fill_MR_NRScSSSINR(); distBinX (SINR level) is 0-based on the wire (valid range 0..127) and used directly as the array index, returning RC.nrrrc[0]->ss_sinr_cell_dist[bin]; requests without distBinX yield NO_VALUE; add dispatch entry to lst_measure[]. - nr_rrc_defs.h: add ss_sinr_cell_dist[128] to gNB_RRC_INST. - rrc_gNB.c: add nr_rrc_count_ss_sinr_dist(); it reads the serving-cell SINR of a periodic Measurement Report and increments the histogram. It is invoked from rrc_gNB_process_MeasurementReport() on the report itself, before process_Periodical_Measurement_Report() consumes it, so the latter keeps its original signature. It is always compiled: counting is harmless when the E2 agent is disabled. Advertised by CU, CU-CP, and monolithic gNB node types. Signed-off-by:Noemi Giustini <giustini.n@northeastern.edu>
-
Noemi Giustini authored
Implement L1M.SS-RSRP (3GPP TS 28.552 §5.1.1.22.1): distribution of the L1 SS-RSRP reported by UEs, resolved per SSB beam. Each bin accumulates the count of reports at a given (beam, RSRP-level); level L maps to (L-157) dBm per TS 38.133 §10.1.6. SS-RSRP used as L1-RSRP originates in L1 (TS 38.214), so it is collected at MAC when the per-beam L1-RSRP report is decoded, not from RRC Measurement Reports (which carry the L3-filtered RRC measurement). The histogram is therefore a per-cell DU statistic. - nr_mac_gNB.h: add ss_rsrp_ssb_dist[64][128] to NR_du_stats, plus the NR_KPM_NB_SSB / NR_KPM_SS_RSRP_NB_LEVELS dimensions. - gNB_scheduler_uci.c: in evaluate_rsrp_report(), for SS-RSRP (per-SSB) reports, increment ss_rsrp_ssb_dist[ssb][level] for every reported beam. RSRP is available in dBm; the 0..127 report level is recovered as (RSRP + 157), so that level L maps back to (L-157) dBm per TS 38.133 §10.1.6, and both the strongest beam and the differential beams are binned. - ran_func_kpm_subs.c: add fill_L1M_SS_RSRP(); distBinX (RSRP level) and the optional ssbIndex are 0-based on the wire and used directly as array indices (valid ranges 0..127 and 0..63); returns the per-beam value du_stats->ss_rsrp_ssb_dist[ssb][bin] or the cell-wide sum over beams when ssbIndex is absent; add dispatch entry to lst_measure[]. - ran_func_kpm.c: advertise L1M.SS-RSRP as a DU measurement (kpm_node_meas_du and kpm_node_meas_gnb). Advertised by DU and monolithic gNB node types. Signed-off-by:Noemi Giustini <giustini.n@northeastern.edu>
-
Noemi Giustini authored
Implement CARR.PUSCHMCSDist (3GPP TS 28.552 §5.1.1.12.2): uplink counterpart of CARR.PDSCHMCSDist; PRB-weighted 3D histogram over (rank, MCS-table, MCS-index) for PUSCH transmissions. PUSCH may use MCS tables 0 (64-QAM), 1 (256-QAM) and 3 (SC-FDMA), so the MCS-table dimension is indexed directly by current_BWP->mcs_table and sized to 4 (index 2 unused). Remapping the tables into fewer bins would lose the 64-QAM/256-QAM distinction, so no remapping is applied. - ran_func_kpm.c: register CARR.PUSCHMCSDist in the RAN Function Definition advertisement (kpm_node_meas_* lists). - ran_func_kpm_subs.c: add fill_CARR_PUSCHMCSDist(); distBinX (rank) is 1-based on the wire and converted to a 0-based index, while distBinY (MCS table, values 0/1/3) and distBinZ (MCS index) are 0-based and used directly, returning du_stats->pusch_mcs_dist[rank-1][table][mcs]; add dispatch entry to lst_measure[]. - nr_mac_gNB.h: the pusch_mcs_dist histogram was sized [8][2][32], too small for MCS table 3 (SC-FDMA) and thus overflowing at collection time; size the MCS-table dimension to 4 via NR_KPM_NB_MCS_TABLE_UL to hold tables 0, 1, 3. - gNB_scheduler_ulsch.c: the UL collection into pusch_mcs_dist already exists; align its surrounding DevAsserts with the KPM dimension macros (NR_KPM_MAX_LAYERS, NR_KPM_NB_MCS). Carried as E2SM-KPM Style 1 / Format 1 with distBinX/Y/Z labels. Advertised by DU and monolithic gNB node types. Signed-off-by:Noemi Giustini <giustini.n@northeastern.edu>
-
Noemi Giustini authored
CARR.PDSCHMCSDist (3GPP TS 28.552 §5.1.1.12.1) and its du_stats histogram already existed, but the metric was never collected and the reader indexed the histogram incorrectly. Rework it into a correct PRB-weighted 3D histogram over (rank, MCS-table, MCS-index). - gNB_scheduler_dlsch.c: add the missing collection hook in the DL scheduling path; increment the (rank, MCS-table, MCS) bin by the number of scheduled PRBs on each PDSCH. mcsTableIdx is 0-based (0..2), so it is used directly to index the MCS-table axis of the histogram. - ran_func_kpm_subs.c: make fill_CARR_PDSCHMCSDist() fully label-driven; reject with NO_VALUE if any of distBinX/Y/Z is absent. distBinX (rank) and distBinY (MCS table) are 1-based on the wire and converted to 0-based indices; distBinZ (MCS index) is already 0-based and used directly, reading du_stats->pdsch_mcs_dist[rank-1][table-1][mcs]. Carried as E2SM-KPM Style 1 measurement (Indication Message Format 1) with standard MeasurementLabel fields distBinX/Y/Z (INTEGER 1..65535). Advertised by DU and monolithic gNB node types. Signed-off-by:Noemi Giustini <giustini.n@northeastern.edu>
-
Mohammed Safwan authored
target_Nid_cell was being decomposed with GET_NID1() and compared against pss->nid2 (the detected PSS NID2). Since Nid1 != Nid2 in almost all cases, the coherence check spuriously failed, forcing an exhaustive 336-hypothesis SSS search instead of the intended single-candidate fast path when validating a known neighbor PCI, and spamming LOG_E on every such call. Fixes #296 Signed-off-by:Mohammed Safwan <mohammed.safwan@openairinterface.org>
-
Robert Schmidt authored
nfapi: support SRS channel reports for 64 gNB antenna elements (#268) This MR is part of the reciprocity-based dynamic BF series and goes together with #156 and #267. Additional MRs will follow with the FAPI changes to support Dynamic Beamforming, as well as adaptations to the scheduler. SRS-reciprocity workflows with Aerial mMIMO (Cat-B, 64-element arrays) return the normalized channel IQ matrix over FAPI, but the SRS.indication structs and codec were dimensioned for 8 gNB antenna elements. A 64-element report needs up to 272 PRGs × 4 UE ports × 64 elements × 4 B ≈ 272 KiB, which the current code truncates or silently drops. Changes: - Buffer dimensioning (nfapi_nr_interface_scf.h): new NFAPI_NR_SRS_MAX_* macros size channel_matrix and the SRS report TLV value[] for 64 antenna elements / 4 UE SRS ports / 272 PRGs. The two buffers are now sized consistently (previously the report TLV allowed more UE ports than channel_matrix could hold). - Integer overflow fixes on the SRS report path, which become fatal at these report sizes: * unpack_nr_srs_report_tlv_value(): last_idx was int16_t, overflowing for reports >= 128 KiB so the copy loop never ran and the report was dropped. Widened to int32_t, and oversized reports are now rejected instead of overrunning the value buffer. * pack/unpack_nr_srs_normalized_channel_iq_matrix(): channel_matrix_size was uint16_t (wraps at 64 KiB). Widened to uint32_t and bounded by sizeof(channel_matrix). * handle_nr_srs_measurements(): the SRS_IND_DEBUG print indexed the matrix with a uint16_t, which wraps for Nu·Ng·Np > 65535. Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-By:
Rúben Soares Silva <rsilva@allbesmart.pt>
-
- 15 Jul, 2026 19 commits
-
-
Robert Schmidt authored
Update the OAI UE config parameters check range with the standard SST and SD values (#299) This PR updates the SST and SD authorized range provided for OAI UE UICC configuration check as per the S-NSSAI as defined in TS 24.501 Sec. 9.11.2.8 and TS 23.003 Sec. 28.4.2. The standard SST range is from 0 to 127 (while 128 to 255 are reserved for operator-specific purposes) and standard SD range is from 0x000000 to 0xFFFFFF. Thanks to IOS-MCN, IISc for providing the IOS-MCN-CORE setup to test the ue-nas-simulator. Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
ITTI: cleanup memset after alloc, adopt calloc_or_fail (#298) In NGAP/RRC memset calls after itti_alloc_new_message are redundant since memory is already zero-initialized by itti_alloc_new_message via calloc(). Also, in itti_malloc, manual calloc + AssertFatal is replaced by calloc_or_fail, which provides better error messages and calls abort(). Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
fix(phy): use simde_mm_setr_epi16 to initialize alpha_128 in rotate_cpx_vector (#303) Avoid direct pointer-casting of the SIMD variable alpha_128 to int16_t * in rotate_cpx_vector(), which is a strict-aliasing violation and can cause undefined behavior or compiler optimization bugs. Instead, use the simde_mm_setr_epi16 intrinsic to initialize the vector. The bug was observed on an arm system, and would lead to non-deterministic results. Reviewed-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Robert Schmidt authored
fix(phy): Fix an uninitialized variable bug in dot_product (#302) This was only present on non x86 systems. Reviewed-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Robert Schmidt authored
fix(t2): Accept CBs decoded across separate HARQ rounds (#301) See commit 8481bd3e for more details. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
Update OpenAirInterface repository links to the new Duranta Project repository (#284) Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Shubhika Garg <shubhika.garg@openairinterface.org>
-
Robert Schmidt authored
Update WLS library dependencies (#283) This PR aims to upgrade the used WLS library and dependencies to align with Release K , following the drop of support for Release F previously used PR #259. This was tested locally after installing the new DPDK version and WLS library according to ORAN_FHI7.2_Tutorial.md and nfapi.md. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Teodora Vladić <teodora.vladic@openairinterface.org> Reviewed-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Allocate multiple UEs in one slot (DL/UL) (#248) This PR allows to schedule multiple UEs in one slot via a 2-pass loop. Since we still use type-1 RB allocation, we use start+length. Thus, once an allocation is made, it is non-trivial to change it if another UE has been allocated, because it would be necessary to change the allocation of multiple UEs retroactively. Thus, the two-pass algorithm - calculates the amount of RBs relevant for each UE, storing the number of requested RBs - makes allocations while accounting for excess RBs (excess RBs are given to the first UE(s) to preserve the PF property) Further, the number of DCIs in DL/UL is capped to 4 to prevent excessive computation times, as shown in nrdlbench. Also, increase the number of DCIs per slot to 12 (from 8, which might be reached with 4 DL/4 UL UEs) and add asserts. Reviewed-By:
Maxime Elkael <m.elkael@northeastern.edu> Reviewed-By:
Karim Boutiba <karim.boutiba@openairinterface.org>
-
Robert Schmidt authored
NR_PHY: Optimize layer demapping for PDSCH/PUSCH receiver performance (#286) Optimizes layer de-mapping in the NR receiver path and refactors the implementation into a common function shared by both the UE (PDSCH) and gNB (PUSCH) receive paths. Commit 1: [NR_UE_PDSCH] Optimize PDSCH layer de-mapping Uses a switch with a LAYER_DEMAPPING(MO) macro for modulation orders 2, 4, 6, and 8. Since the copy size is now known at compile time, the compiler can replace memcpy calls with inline fixed-size vector stores. Commit 2: [NR_PHY] Common layer de-mapping implementation Extract a common nr_layer_demapping() function for both UE and gNB. Update the UE and gNB receive paths to use the shared implementation, reducing code duplication while bringing the same optimization to the gNB PUSCH path. With ./nr_dlsim -s30 -b106 -R106 -n100 -e25 -x2 -y2 -z2 -P i.e. 64 QAM, 2 layers case, the layer demapping compute time reduces by ~35x times. Develop: |__ DLSCH_CHANNEL_COMPENSATION_STATS 3.03 us (1300 trials) ( 3.94 total [ms]) |__ DLSCH_LLR_STATS 17.54 us (100 trials) ( 1.75 total [ms]) |__ DLSCH_LAYER_DEMAPPING 571.11 us (100 trials) ( 57.11 total [ms]) Post-optimization: |__ DLSCH_CHANNEL_COMPENSATION_STATS 2.67 us (1300 trials) ( 3.47 total [ms]) |__ DLSCH_LLR_STATS 16.50 us (100 trials) ( 1.65 total [ms]) |__ DLSCH_LAYER_DEMAPPING 16.14 us (100 trials) ( 1.61 total [ms]) Mod 2 Layers (µs) 3 Layers (µs) 4 Layers (µs) develop PB speedup develop PB speedup develop PB speedup 64 QAM 571.11 16.14 35.39x 649.16 19.92 32.59x 953.22 30.00 31.77x 16 QAM 523.60 8.35 62.71x 651.99 13.39 48.69x 844.49 14.67 57.57x QPSK 32.43 8.09 4.01x 35.17 9.21 3.82x 63.64 11.44 5.56x Reviewed-By: Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org Reviewed-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Robert Schmidt authored
[FHI72] Remove xran F release support (#259) Additionally, downgrade required DPDK version from v24 to v22 for xran K release. Initially, we wanted to use more recent version, but for the compatibility with T2 card v22 is required. Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Bartosz Podrygajlo authored
Avoid direct pointer-casting of the SIMD variable `alpha_128` to `int16_t *` in rotate_cpx_vector(), which is a strict-aliasing violation and can cause undefined behavior or compiler optimization bugs. Instead, use the simde_mm_setr_epi16 intrinsic to initialize the vector. The bug was observed on an arm system, and would lead to non-deterministic results. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
This was only present on non x86 systems. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Rúben Soares Silva authored
Signed-off-by:Rúben Soares Silva <rsilva@allbesmart.pt>
-
Guido Casati authored
Manual calloc + AssertFatal is replaced by calloc_or_fail, which provides better error messages and calls abort(). Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Jaroslava Fiedlerova authored
Add/modify/remove required files for RAN-SA-AERIAL-CN5G Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Add/modify/remove required files for SA-AERIAL-OAIUE-CN5G Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Robert Schmidt authored
- As per the S-NSSAI as defined in TS 24.501 Sec. 9.11.2.8 and TS 23.003 Sec. 28.4.2 - Standard SST range is from 0 to 127 (128 to 255 is reserved) - Standard SD range is from 0x000000 to 0xFFFFFF Co-authored-by:Venkatareddy Akumalla <venkatareddy.akumalla@openairinterface.org> Signed-off-by:
Venkatareddy Akumalla <venkatareddy.akumalla@openairinterface.org>
-
Guido Casati authored
Memory is already zero-initialized by itti_alloc_new_message via calloc(). Improves performance by eliminating unnecessary memset operations. Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
- 14 Jul, 2026 1 commit
-
-
Jaroslava Fiedlerova authored
Since 28cff291, a transport block's payload (harq_process->b) is only assembled from its decoded code blocks if every single code block reports decodeSuccess in the same HARQ round. Previously, each code block was copied into b independently, as soon as its own decodeSuccess was true, regardless of the state of the others that round. This gate breaks HARQ combining for T2 that report a failure when re-decoding a code block that already succeeded in a previous round. The transport block is retransmitted until it is dropped. Restore per-segment copying into for current round: a code block that already succeeded keeps its previously-copied bytes untouched on any round where it is not currently reporting success. Fixes: 28cff291 ("Simplify TB_parameters, c, d, d_to_be_cleared") Signed-off-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
- 13 Jul, 2026 3 commits
-
-
Gabriele Gemmi authored
With 64 gNB antenna elements the SRS channel IQ matrix exceeds the ranges the SRS report code path was written for (272 PRGs * 2 UE ports * 64 elements * 4 B = 136 KiB per report): - unpack_nr_srs_report_tlv_value(): last_idx was int16_t, which overflows at report lengths >= 128 KiB, so the copy loop never ran and the report was silently dropped. Widen to int32_t and reject reports larger than the value buffer instead of overrunning it. - pack/unpack_nr_srs_normalized_channel_iq_matrix(): channel_matrix_size was uint16_t and wraps at 64 KiB, truncating the matrix. Widen to uint32_t and bound it by sizeof(channel_matrix). - handle_nr_srs_measurements(): the SRS_IND_DEBUG print indexed the matrix with a uint16_t, which wraps for Nu*Ng*Np > 65535. Assisted-by: Claude Code:claude-fable-5 Signed-off-by:Gabriele Gemmi <g.gemmi@northeastern.edu>
-
Gabriele Gemmi authored
The SRS.indication report structs were dimensioned for 8 gNB antenna elements: channel_matrix held 272*2*8*4 bytes and the report TLV value carried 64 KiB. A massive-MIMO L1 (Aerial) reporting the normalized channel IQ matrix for 64 antenna elements needs up to 272 PRGs * 4 UE ports * 64 elements * 4 B = 272 KiB per report. Introduce NFAPI_NR_SRS_MAX_* dimensioning macros and size both channel_matrix and the report TLV value from them, so the two buffers stay consistent (the report TLV previously allowed more UE ports than channel_matrix could hold). Assisted-by: Claude Code:claude-fable-5 Signed-off-by:Gabriele Gemmi <g.gemmi@northeastern.edu>
-
Robert Schmidt authored
demote LOG_E for RRC Release with deprioritisationReq (#287) Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-