Draft: DU beamforming and beam API for RU beamforming
To be merged after !3827 (merged).
This MR implements beamforming in the DU and a beam API to pass beam ID to O-RU (part of MR !3683) and split 8 RU (MR !3938). Following are the list of notable changes:
- The DLSCH precoding function
nr_layer_precoder_simdis modified to perform both precoding and beamforming. In DL, the function is called to perform precoding, beamforming or both depending on the information in the FAPI PDU. In UL, the function is used only for beamforming, if applicable. The L1 decides whether to perform beamforming based on the MSB bit of beam ID sent by L2. - DL signals beamformed in this MR
- PDSCH
- SSB
- PDCCH
- CSI-RS
- UL signals
- PRACH
- PUSCH
- PUCCH
- SRS?
- If the MSB of beam ID is set, L1 skips beamforming and passes the beam ID to RU. This is done using a new struct
nr_gridthat holds information on which time freq resources are allocated in a slot and the corresponding beam ID for each logical antenna ports. A new RU API callfh_south_out_ctrlis introduced to send the beam ID to RU. - Removed the
beam_idarray from RU and PHY structs as it is now replaced by the new struct. - Removed analog beamforming TLV because the L1 is now transparent and need not know the beamforming mode.
- To support the new buffer dimensions from !3827 (merged),
trx_set_beams()has been modified to take an array of pointers to the logical ports and an array of beam IDs each corresponds to a logical port.trx_set_beams2(),trx_read_beams_func()andtrx_write_beam_func()has been removed.
TODO:
- Test beam switching in rfsim
- Test beam switching with liteON
- Test SSB on multiple baseband ports
Edited by Sakthivel Velumani