omitting beam weigths in case of DAS

This commit is contained in:
francescomani
2025-06-11 10:19:23 +02:00
parent 1153721b19
commit ded3187734
3 changed files with 8 additions and 4 deletions
+2 -2
View File
@@ -20,9 +20,9 @@ In the `MACRLC` section of configuration files, there are three new parameters:
- `set_analog_beamforming` can be set to 1 or 0 to activate or desactivate analog beamforming (default value is 0) - `set_analog_beamforming` can be set to 1 or 0 to activate or desactivate analog beamforming (default value is 0)
- `beam_duration` is the number of slots (currently minimum duration of a beam) the scheduler is tied to a beam (default value is 1) - `beam_duration` is the number of slots (currently minimum duration of a beam) the scheduler is tied to a beam (default value is 1)
- `beams_per_period` is the number of concurrent beams the RU can handle in the beam duration (default value is 1) - `beams_per_period` is the number of concurrent beams the RU can handle in the beam duration (default value is 1)
- `beam_weights` is a vector field containing the set of beam indices to be provided by the OAI L1 to the RU is also required. In current implementation, the number of beam indices should be equal to the number of SSBs transmitted. - `beam_weights` is a vector field containing the set of beam indices to be provided by the OAI L1 to the RU is also required. In current implementation, the number of beam indices should be equal to the number of SSBs transmitted
DAS is enabled by setting to 1 the parameter `enable_das` in the L1 section of the configuration file. DAS is enabled by setting to 1 the parameter `enable_das` in the L1 section of the configuration file. In case of DAS enabled, the field `beam_weights` in `MACRLC` section can be omitted.
# Implementation in OAI scheduler # Implementation in OAI scheduler
+2 -2
View File
@@ -55,10 +55,10 @@ int beam_index_allocation(bool das,
{ {
if (!common_vars->beam_id) if (!common_vars->beam_id)
return 0; return 0;
if (das)
return fapi_beam_index;
int ru_beam_idx = analog_bf->analog_beam_list[fapi_beam_index].value; int ru_beam_idx = analog_bf->analog_beam_list[fapi_beam_index].value;
if (das)
return ru_beam_idx;
int idx = -1; int idx = -1;
for (int j = 0; j < common_vars->num_beams_period; j++) { for (int j = 0; j < common_vars->num_beams_period; j++) {
// L2 analog beam implementation is slot based, so we need to verify occupancy for the whole slot // L2 analog beam implementation is slot based, so we need to verify occupancy for the whole slot
+4
View File
@@ -1700,6 +1700,10 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
beam_info->beam_allocation_size = -1; // to be initialized once we have information on frame configuration beam_info->beam_allocation_size = -1; // to be initialized once we have information on frame configuration
} }
if (config_isparamset(MacRLC_ParamList.paramarray[j], MACRLC_BEAMWEIGHTS_IDX)) { if (config_isparamset(MacRLC_ParamList.paramarray[j], MACRLC_BEAMWEIGHTS_IDX)) {
if (NFAPI_MODE == NFAPI_MONOLITHIC) {
GET_PARAMS_LIST(L1_ParamList, L1_Params, L1PARAMS_DESC, CONFIG_STRING_L1_LIST, NULL);
AssertFatal(*(L1_ParamList.paramarray[j][L1_ANALOG_DAS].uptr) == 0, "No need to set beam weights in case of DAS\n");
}
int n = MacRLC_ParamList.paramarray[j][MACRLC_BEAMWEIGHTS_IDX].numelt; int n = MacRLC_ParamList.paramarray[j][MACRLC_BEAMWEIGHTS_IDX].numelt;
int num_beam = n; int num_beam = n;
if (!ab) { if (!ab) {