Merge remote-tracking branch 'gabri94/aerial-64l-srs' into integration_2026_w29
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>
Showing
Please register or sign in to comment