Merge remote-tracking branch 'origin/RedCap_InitialBWP' into integration_2025_w15 (!3358)

RedCap InitialBWP

Prevent RedCap UEs to move to DedicatedBWP

  This allows the coexistence of RedCap UEs and non-RedCap UEs in the
  same cell by having an InitialBWP with 20MHz and a larger
  DedicatedBWP.

Update example RedCap configuration file to have 20 MHz InitialBWP and
40 MHz DedicatedBWP
This commit is contained in:
Robert Schmidt
2025-04-11 07:36:51 +02:00
4 changed files with 17 additions and 3 deletions
@@ -3322,7 +3322,7 @@ bool prepare_initial_ul_rrc_message(gNB_MAC_INST *mac, NR_UE_info_t *UE)
int CC_id = 0; int CC_id = 0;
int srb_id = 1; int srb_id = 1;
const NR_ServingCellConfigCommon_t *scc = mac->common_channels[CC_id].ServingCellConfigCommon; const NR_ServingCellConfigCommon_t *scc = mac->common_channels[CC_id].ServingCellConfigCommon;
const NR_ServingCellConfig_t *sccd = mac->common_channels[CC_id].pre_ServingCellConfig; const NR_ServingCellConfig_t *sccd = UE->is_redcap ? NULL : mac->common_channels[CC_id].pre_ServingCellConfig;
NR_CellGroupConfig_t *cellGroupConfig = get_initial_cellGroupConfig(UE->uid, scc, sccd, &mac->radio_config); NR_CellGroupConfig_t *cellGroupConfig = get_initial_cellGroupConfig(UE->uid, scc, sccd, &mac->radio_config);
ASN_STRUCT_FREE(asn_DEF_NR_CellGroupConfig, UE->CellGroup); ASN_STRUCT_FREE(asn_DEF_NR_CellGroupConfig, UE->CellGroup);
UE->CellGroup = cellGroupConfig; UE->CellGroup = cellGroupConfig;
@@ -350,6 +350,7 @@ static int nr_process_mac_pdu(instance_t module_idP,
if (lcid == UL_SCH_LCID_CCCH_48_BITS_REDCAP) { if (lcid == UL_SCH_LCID_CCCH_48_BITS_REDCAP) {
LOG_I(MAC, "UE with RNTI %04x is RedCap\n", UE->rnti); LOG_I(MAC, "UE with RNTI %04x is RedCap\n", UE->rnti);
UE->is_redcap = true;
} }
if (prepare_initial_ul_rrc_message(RC.nrmac[module_idP], UE)) { if (prepare_initial_ul_rrc_message(RC.nrmac[module_idP], UE)) {
+1
View File
@@ -783,6 +783,7 @@ typedef struct {
float ul_thr_ue; float ul_thr_ue;
float dl_thr_ue; float dl_thr_ue;
long pdsch_HARQ_ACK_Codebook; long pdsch_HARQ_ACK_Codebook;
bool is_redcap;
} NR_UE_info_t; } NR_UE_info_t;
typedef struct { typedef struct {
@@ -35,7 +35,7 @@ gNBs:
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing: 1 dl_subcarrierSpacing: 1
dl_carrierBandwidth: 51 dl_carrierBandwidth: 106
#initialDownlinkBWP #initialDownlinkBWP
#genericParameters #genericParameters
# this is RBstart=0,L=51 (275*(L-1))+RBstart # this is RBstart=0,L=51 (275*(L-1))+RBstart
@@ -54,7 +54,7 @@ gNBs:
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing: 1 ul_subcarrierSpacing: 1
ul_carrierBandwidth: 51 ul_carrierBandwidth: 106
pMax: 20 pMax: 20
#initialUplinkBWP #initialUplinkBWP
#genericParameters #genericParameters
@@ -134,6 +134,18 @@ gNBs:
nrofUplinkSymbols: 4 nrofUplinkSymbols: 4
ssPBCH_BlockPower: -25 ssPBCH_BlockPower: -25
servingCellConfigDedicated:
- dl_bwp-Id_1: 1
dl_bwp1_locationAndBandwidth: 28875
dl_bwp1_subcarrierSpacing: 1
firstActiveDownlinkBWP-Id: 1
defaultDownlinkBWP-Id: 1
ul_bwp-Id_1: 1
ul_bwp1_locationAndBandwidth: 28875
ul_bwp1_subcarrierSpacing: 1
firstActiveUplinkBWP-Id: 1
RedCap: RedCap:
cellBarredRedCap1Rx_r17: 1 cellBarredRedCap1Rx_r17: 1
cellBarredRedCap2Rx_r17: 1 cellBarredRedCap2Rx_r17: 1