Commit 7597a582 authored by luis_pereira87's avatar luis_pereira87

Merge remote-tracking branch 'origin/NR_RRC_processing_timer' into Dedicated-BWPs

# Conflicts:
#	openair2/GNB_APP/gnb_config.c
#	openair2/LAYER2/NR_MAC_gNB/config.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
parents 0e2a0065 114dcc6a
...@@ -165,7 +165,7 @@ From the `cmake_targets/ran_build/build` folder: ...@@ -165,7 +165,7 @@ From the `cmake_targets/ran_build/build` folder:
gNB on machine 1: gNB on machine 1:
`sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --sa` `sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa`
UE on machine 2: UE on machine 2:
...@@ -173,7 +173,7 @@ UE on machine 2: ...@@ -173,7 +173,7 @@ UE on machine 2:
With the RF simulator (on the same machine): With the RF simulator (on the same machine):
`sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --rfsim --sa` `sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa`
`sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 -s 516 --rfsim --sa` `sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 -s 516 --rfsim --sa`
......
...@@ -383,7 +383,7 @@ void prepare_scd(NR_ServingCellConfig_t *scd) { ...@@ -383,7 +383,7 @@ void prepare_scd(NR_ServingCellConfig_t *scd) {
*scd->defaultDownlinkBWP_Id = 0; *scd->defaultDownlinkBWP_Id = 0;
for (int j = 0; j < NR_MAX_NUM_BWP; j++) { for (int j = 0; j < NR_MAX_NUM_BWP; j++) {
// Downlink bandwidth part // Downlink bandwidth part
NR_BWP_Downlink_t *bwp = calloc(1, sizeof(*bwp)); NR_BWP_Downlink_t *bwp = calloc(1, sizeof(*bwp));
bwp->bwp_Id = j+1; bwp->bwp_Id = j+1;
...@@ -1030,7 +1030,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) { ...@@ -1030,7 +1030,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
prepare_scd(scd); prepare_scd(scd);
paramdef_t SCDsParams[] = SCDPARAMS_DESC(scd); paramdef_t SCDsParams[] = SCDPARAMS_DESC(scd);
paramlist_def_t SCDsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGDEDICATED, NULL, 0}; paramlist_def_t SCDsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGDEDICATED, NULL, 0};
////////// Physical parameters ////////// Physical parameters
/* get global parameters, defined outside any section in the config file */ /* get global parameters, defined outside any section in the config file */
...@@ -2114,8 +2114,7 @@ void configure_gnb_du_mac(int inst) { ...@@ -2114,8 +2114,7 @@ void configure_gnb_du_mac(int inst) {
NULL, NULL,
0, 0,
0, // rnti 0, // rnti
NULL, NULL);
0);
} }
......
...@@ -449,6 +449,26 @@ void config_common(int Mod_idP, int ssb_SubcarrierOffset, rrc_pdsch_AntennaPorts ...@@ -449,6 +449,26 @@ void config_common(int Mod_idP, int ssb_SubcarrierOffset, rrc_pdsch_AntennaPorts
} }
int nr_mac_enable_ue_rrc_processing_timer(module_id_t Mod_idP, rnti_t rnti, NR_SubcarrierSpacing_t subcarrierSpacing, uint32_t rrc_reconfiguration_delay) {
if (rrc_reconfiguration_delay == 0) {
return -1;
}
const int UE_id = find_nr_UE_id(Mod_idP,rnti);
if (UE_id < 0) {
LOG_W(NR_MAC, "Could not find UE for RNTI 0x%04x\n", rnti);
return -1;
}
NR_UE_info_t *UE_info = &RC.nrmac[Mod_idP]->UE_info;
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
const uint16_t sf_ahead = 6/(0x01<<subcarrierSpacing) + ((6%(0x01<<subcarrierSpacing))>0);
const uint16_t sl_ahead = sf_ahead * (0x01<<subcarrierSpacing);
sched_ctrl->rrc_processing_timer = (rrc_reconfiguration_delay<<subcarrierSpacing) + sl_ahead;
LOG_I(NR_MAC, "Activating RRC processing timer for UE %d\n", UE_id);
return 0;
}
int rrc_mac_config_req_gNB(module_id_t Mod_idP, int rrc_mac_config_req_gNB(module_id_t Mod_idP,
int ssb_SubcarrierOffset, int ssb_SubcarrierOffset,
...@@ -705,10 +725,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, ...@@ -705,10 +725,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
sched_ctrl->maxL = 2; sched_ctrl->maxL = 2;
} }
} }
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
return 0;
return 0;
}// END rrc_mac_config_req_gNB }// END rrc_mac_config_req_gNB
...@@ -346,10 +346,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -346,10 +346,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
LOG_I(NR_MAC,"Frame.Slot %d.%d\n%s\n",frame,slot,stats_output); LOG_I(NR_MAC,"Frame.Slot %d.%d\n%s\n",frame,slot,stats_output);
} }
// This updates the timers running at MAC layer
nr_mac_update_timers(module_idP, frame, slot); nr_mac_update_timers(module_idP, frame, slot);
// This schedules the BWP switching
schedule_nr_bwp_switch(module_idP, frame, slot); schedule_nr_bwp_switch(module_idP, frame, slot);
// This schedules MIB // This schedules MIB
......
...@@ -915,7 +915,7 @@ void pf_dl(module_id_t module_id, ...@@ -915,7 +915,7 @@ void pf_dl(module_id_t module_id,
NR_sched_pdsch_t *sched_pdsch = &sched_ctrl->sched_pdsch; NR_sched_pdsch_t *sched_pdsch = &sched_ctrl->sched_pdsch;
NR_pdsch_semi_static_t *ps = &sched_ctrl->pdsch_semi_static; NR_pdsch_semi_static_t *ps = &sched_ctrl->pdsch_semi_static;
if (ps->nrOfLayers != layers[UE_id] || ps->time_domain_allocation != tda || sched_ctrl->update_pdsch_ps) { if (ps->nrOfLayers != layers[UE_id] || ps->time_domain_allocation != tda) {
nr_set_pdsch_semi_static(sib1, nr_set_pdsch_semi_static(sib1,
scc, scc,
UE_info->CellGroup[UE_id], UE_info->CellGroup[UE_id],
......
...@@ -579,7 +579,11 @@ void nr_set_pdsch_semi_static(const NR_SIB1_t *sib1, ...@@ -579,7 +579,11 @@ void nr_set_pdsch_semi_static(const NR_SIB1_t *sib1,
bwpd = (NR_BWP_DownlinkDedicated_t*)bwpd0; bwpd = (NR_BWP_DownlinkDedicated_t*)bwpd0;
} }
if (sched_ctrl->update_pdsch_ps == true) { // Prevent gNB to enable 256QAM table while the RRCProcessing timer is running.
// For example, after the RRC created RRC Reconfiguration message we need to prevent gNB to apply another MCS table
// before the RRC Reconfiguration being received by the UE, otherwise UE will not be able to decode PDSCH
// and the connection will drop.
if (sched_ctrl->rrc_processing_timer == 0) {
if (bwpd && if (bwpd &&
bwpd->pdsch_Config && bwpd->pdsch_Config &&
bwpd->pdsch_Config->choice.setup && bwpd->pdsch_Config->choice.setup &&
...@@ -592,7 +596,6 @@ void nr_set_pdsch_semi_static(const NR_SIB1_t *sib1, ...@@ -592,7 +596,6 @@ void nr_set_pdsch_semi_static(const NR_SIB1_t *sib1,
} else { } else {
ps->mcsTableIdx = 0; ps->mcsTableIdx = 0;
} }
sched_ctrl->update_pdsch_ps = false;
} }
LOG_D(NR_MAC,"MCS Table Index: %d\n",ps->mcsTableIdx); LOG_D(NR_MAC,"MCS Table Index: %d\n",ps->mcsTableIdx);
...@@ -2812,39 +2815,65 @@ void nr_mac_update_timers(module_id_t module_id, ...@@ -2812,39 +2815,65 @@ void nr_mac_update_timers(module_id_t module_id,
const NR_list_t *UE_list = &UE_info->list; const NR_list_t *UE_list = &UE_info->list;
for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) { for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) {
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
if (sched_ctrl->rrc_processing_timer > 0) { if (sched_ctrl->rrc_processing_timer > 0) {
sched_ctrl->rrc_processing_timer--; sched_ctrl->rrc_processing_timer--;
if (sched_ctrl->rrc_processing_timer == 0) { if (sched_ctrl->rrc_processing_timer == 0) {
LOG_I(NR_MAC, "(%d.%d) De-activating RRC processing timer for UE %d\n", frame, slot, UE_id); LOG_I(NR_MAC, "(%d.%d) De-activating RRC processing timer for UE %d\n", frame, slot, UE_id);
const NR_ServingCellConfig_t *spCellConfigDedicated = UE_info->CellGroup[UE_id] && UE_info->CellGroup[UE_id]->spCellConfig ?
UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated : NULL;
// If needed, update the Dedicated BWP // If needed, update the Dedicated BWP
const int current_bwp_id = sched_ctrl->active_bwp ? sched_ctrl->active_bwp->bwp_Id : 0; const int current_bwp_id = sched_ctrl->active_bwp ? sched_ctrl->active_bwp->bwp_Id : 0;
const int current_ubwp_id = sched_ctrl->active_ubwp ? sched_ctrl->active_ubwp->bwp_Id : 0; const int current_ubwp_id = sched_ctrl->active_ubwp ? sched_ctrl->active_ubwp->bwp_Id : 0;
if(UE_info->CellGroup[UE_id] && if(spCellConfigDedicated &&
UE_info->CellGroup[UE_id]->spCellConfig && spCellConfigDedicated->downlinkBWP_ToAddModList &&
UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated && spCellConfigDedicated->uplinkConfig &&
UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList && spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList) {
UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated->uplinkConfig && if(*spCellConfigDedicated->firstActiveDownlinkBWP_Id != current_bwp_id) {
UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList) { sched_ctrl->active_bwp = spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[*spCellConfigDedicated->firstActiveDownlinkBWP_Id - 1];
const NR_ServingCellConfig_t *servingCellConfig = UE_info->CellGroup[UE_id]->spCellConfig->spCellConfigDedicated;
if(*servingCellConfig->firstActiveDownlinkBWP_Id != current_bwp_id) {
sched_ctrl->active_bwp = servingCellConfig->downlinkBWP_ToAddModList->list.array[*servingCellConfig->firstActiveDownlinkBWP_Id - 1];
LOG_I(NR_MAC, "Changing to DL-BWP %li\n", sched_ctrl->active_bwp->bwp_Id); LOG_I(NR_MAC, "Changing to DL-BWP %li\n", sched_ctrl->active_bwp->bwp_Id);
} }
if(*servingCellConfig->uplinkConfig->firstActiveUplinkBWP_Id != current_ubwp_id) { if(*spCellConfigDedicated->uplinkConfig->firstActiveUplinkBWP_Id != current_ubwp_id) {
sched_ctrl->active_ubwp = servingCellConfig->uplinkConfig->uplinkBWP_ToAddModList->list.array[*servingCellConfig->uplinkConfig->firstActiveUplinkBWP_Id - 1]; sched_ctrl->active_ubwp = spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[*spCellConfigDedicated->uplinkConfig->firstActiveUplinkBWP_Id - 1];
LOG_I(NR_MAC, "Changing to UL-BWP %li\n", sched_ctrl->active_ubwp->bwp_Id); LOG_I(NR_MAC, "Changing to UL-BWP %li\n", sched_ctrl->active_ubwp->bwp_Id);
} }
} }
sched_ctrl->update_pdsch_ps = true; const NR_SIB1_t *sib1 = RC.nrmac[module_id]->common_channels[0].sib1 ? RC.nrmac[module_id]->common_channels[0].sib1->message.choice.c1->choice.systemInformationBlockType1 : NULL;
sched_ctrl->update_pusch_ps = true; NR_ServingCellConfigCommon_t *scc = RC.nrmac[module_id]->common_channels[0].ServingCellConfigCommon;
NR_BWP_DownlinkDedicated_t *bwpd = spCellConfigDedicated ? spCellConfigDedicated->initialDownlinkBWP : NULL;
const uint8_t layers = set_dl_nrOfLayers(sched_ctrl);
const int tda = RC.nrmac[module_id]->preferred_dl_tda[sched_ctrl->active_bwp ? sched_ctrl->active_bwp->bwp_Id : 0][slot];
nr_set_pdsch_semi_static(sib1,
scc,
UE_info->CellGroup[UE_id],
sched_ctrl->active_bwp,
bwpd,
tda >= 0 ? tda : sched_ctrl->pdsch_semi_static.time_domain_allocation,
layers,
sched_ctrl,
&sched_ctrl->pdsch_semi_static);
NR_BWP_UplinkDedicated_t *ubwpd = spCellConfigDedicated &&
spCellConfigDedicated->uplinkConfig ?
spCellConfigDedicated->uplinkConfig->initialUplinkBWP : NULL;
const uint8_t num_dmrs_cdm_grps_no_data = (sched_ctrl->active_ubwp || ubwpd) ? 1 : 2;
int dci_format = get_dci_format(sched_ctrl);
const int utda = sched_ctrl->active_ubwp ? RC.nrmac[module_id]->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0;
nr_set_pusch_semi_static(sib1,
scc,
sched_ctrl->active_ubwp,
ubwpd,
dci_format,
utda >= 0 ? utda : sched_ctrl->pusch_semi_static.time_domain_allocation,
num_dmrs_cdm_grps_no_data,
&sched_ctrl->pusch_semi_static);
} }
} }
} }
......
...@@ -988,8 +988,7 @@ bool allocate_ul_retransmission(module_id_t module_id, ...@@ -988,8 +988,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
if (ps->time_domain_allocation != tda if (ps->time_domain_allocation != tda
|| ps->dci_format != dci_format || ps->dci_format != dci_format
|| ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data) {
|| sched_ctrl->update_pusch_ps) {
nr_set_pusch_semi_static(sib1, nr_set_pusch_semi_static(sib1,
scc, scc,
sched_ctrl->active_ubwp, sched_ctrl->active_ubwp,
...@@ -998,7 +997,6 @@ bool allocate_ul_retransmission(module_id_t module_id, ...@@ -998,7 +997,6 @@ bool allocate_ul_retransmission(module_id_t module_id,
tda, tda,
num_dmrs_cdm_grps_no_data, num_dmrs_cdm_grps_no_data,
ps); ps);
sched_ctrl->update_pusch_ps = false;
} }
/* Check the resource is enough for retransmission */ /* Check the resource is enough for retransmission */
...@@ -1247,8 +1245,7 @@ void pf_ul(module_id_t module_id, ...@@ -1247,8 +1245,7 @@ void pf_ul(module_id_t module_id,
const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0; const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0;
if (ps->time_domain_allocation != tda if (ps->time_domain_allocation != tda
|| ps->dci_format != dci_format || ps->dci_format != dci_format
|| ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data) {
|| sched_ctrl->update_pusch_ps) {
nr_set_pusch_semi_static(sib1, nr_set_pusch_semi_static(sib1,
scc, scc,
sched_ctrl->active_ubwp, sched_ctrl->active_ubwp,
...@@ -1257,7 +1254,6 @@ void pf_ul(module_id_t module_id, ...@@ -1257,7 +1254,6 @@ void pf_ul(module_id_t module_id,
tda, tda,
num_dmrs_cdm_grps_no_data, num_dmrs_cdm_grps_no_data,
ps); ps);
sched_ctrl->update_pusch_ps = false;
} }
LOG_D(NR_MAC,"Looking for min_rb %d RBs, starting at %d\n", min_rb, rbStart); LOG_D(NR_MAC,"Looking for min_rb %d RBs, starting at %d\n", min_rb, rbStart);
...@@ -1385,8 +1381,7 @@ void pf_ul(module_id_t module_id, ...@@ -1385,8 +1381,7 @@ void pf_ul(module_id_t module_id,
const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0; const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0;
if (ps->time_domain_allocation != tda if (ps->time_domain_allocation != tda
|| ps->dci_format != dci_format || ps->dci_format != dci_format
|| ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data) {
|| sched_ctrl->update_pusch_ps) {
nr_set_pusch_semi_static(sib1, nr_set_pusch_semi_static(sib1,
scc, scc,
sched_ctrl->active_ubwp, sched_ctrl->active_ubwp,
...@@ -1395,7 +1390,6 @@ void pf_ul(module_id_t module_id, ...@@ -1395,7 +1390,6 @@ void pf_ul(module_id_t module_id,
tda, tda,
num_dmrs_cdm_grps_no_data, num_dmrs_cdm_grps_no_data,
ps); ps);
sched_ctrl->update_pusch_ps = false;
} }
update_ul_ue_R_Qm(sched_pusch, ps); update_ul_ue_R_Qm(sched_pusch, ps);
......
...@@ -46,6 +46,11 @@ void config_common(int Mod_idP, ...@@ -46,6 +46,11 @@ void config_common(int Mod_idP,
int pusch_AntennaPorts, int pusch_AntennaPorts,
NR_ServingCellConfigCommon_t *scc); NR_ServingCellConfigCommon_t *scc);
int nr_mac_enable_ue_rrc_processing_timer(module_id_t Mod_idP,
rnti_t rnti,
NR_SubcarrierSpacing_t subcarrierSpacing,
uint32_t rrc_reconfiguration_delay);
int rrc_mac_config_req_gNB(module_id_t Mod_idP, int rrc_mac_config_req_gNB(module_id_t Mod_idP,
int ssb_SubcarrierOffset, int ssb_SubcarrierOffset,
rrc_pdsch_AntennaPorts_t pdsch_AntennaPorts, rrc_pdsch_AntennaPorts_t pdsch_AntennaPorts,
...@@ -509,6 +514,7 @@ void set_dl_mcs(NR_sched_pdsch_t *sched_pdsch, ...@@ -509,6 +514,7 @@ void set_dl_mcs(NR_sched_pdsch_t *sched_pdsch,
uint8_t set_dl_nrOfLayers(NR_UE_sched_ctrl_t *sched_ctrl); uint8_t set_dl_nrOfLayers(NR_UE_sched_ctrl_t *sched_ctrl);
int get_dci_format(NR_UE_sched_ctrl_t *sched_ctrl);
void calculate_preferred_dl_tda(module_id_t module_id, const NR_BWP_Downlink_t *bwp); void calculate_preferred_dl_tda(module_id_t module_id, const NR_BWP_Downlink_t *bwp);
void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ubwp); void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ubwp);
......
...@@ -647,8 +647,6 @@ typedef struct { ...@@ -647,8 +647,6 @@ typedef struct {
int ul_failure; int ul_failure;
struct CSI_Report CSI_report; struct CSI_Report CSI_report;
bool SR; bool SR;
bool update_pdsch_ps;
bool update_pusch_ps;
bool set_mcs; bool set_mcs;
/// information about every HARQ process /// information about every HARQ process
NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES]; NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES];
......
...@@ -832,6 +832,13 @@ rrc_gNB_generate_defaultRRCReconfiguration( ...@@ -832,6 +832,13 @@ rrc_gNB_generate_defaultRRCReconfiguration(
default : default :
LOG_W(NR_RRC, "Unknown node type %d\n", RC.nrrrc[ctxt_pP->module_id]->node_type); LOG_W(NR_RRC, "Unknown node type %d\n", RC.nrrrc[ctxt_pP->module_id]->node_type);
} }
if (NODE_IS_DU(rrc->node_type) || NODE_IS_MONOLITHIC(rrc->node_type)) {
nr_mac_enable_ue_rrc_processing_timer(ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
*rrc->carrier.servingcellconfigcommon->ssbSubcarrierSpacing,
NR_RRC_RECONFIGURATION_DELAY_MS);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -1089,6 +1096,13 @@ rrc_gNB_generate_dedicatedRRCReconfiguration( ...@@ -1089,6 +1096,13 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
buffer, buffer,
PDCP_TRANSMISSION_MODE_CONTROL); PDCP_TRANSMISSION_MODE_CONTROL);
#endif #endif
if (NODE_IS_DU(rrc->node_type) || NODE_IS_MONOLITHIC(rrc->node_type)) {
nr_mac_enable_ue_rrc_processing_timer(ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
*rrc->carrier.servingcellconfigcommon->ssbSubcarrierSpacing,
NR_RRC_RECONFIGURATION_DELAY_MS);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -1285,6 +1299,13 @@ rrc_gNB_modify_dedicatedRRCReconfiguration( ...@@ -1285,6 +1299,13 @@ rrc_gNB_modify_dedicatedRRCReconfiguration(
buffer, buffer,
PDCP_TRANSMISSION_MODE_CONTROL); PDCP_TRANSMISSION_MODE_CONTROL);
#endif #endif
if (NODE_IS_DU(RC.nrrrc[ctxt_pP->module_id]->node_type) || NODE_IS_MONOLITHIC(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
nr_mac_enable_ue_rrc_processing_timer(ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
*RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->ssbSubcarrierSpacing,
NR_RRC_RECONFIGURATION_DELAY_MS);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -1408,6 +1429,13 @@ rrc_gNB_generate_dedicatedRRCReconfiguration_release( ...@@ -1408,6 +1429,13 @@ rrc_gNB_generate_dedicatedRRCReconfiguration_release(
buffer, buffer,
PDCP_TRANSMISSION_MODE_CONTROL); PDCP_TRANSMISSION_MODE_CONTROL);
#endif #endif
if (NODE_IS_DU(RC.nrrrc[ctxt_pP->module_id]->node_type) || NODE_IS_MONOLITHIC(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
nr_mac_enable_ue_rrc_processing_timer(ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
*RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->ssbSubcarrierSpacing,
NR_RRC_RECONFIGURATION_DELAY_MS);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -1990,6 +2018,13 @@ rrc_gNB_process_RRCConnectionReestablishmentComplete( ...@@ -1990,6 +2018,13 @@ rrc_gNB_process_RRCConnectionReestablishmentComplete(
PDCP_TRANSMISSION_MODE_CONTROL); PDCP_TRANSMISSION_MODE_CONTROL);
#endif #endif
} }
if (NODE_IS_DU(RC.nrrrc[ctxt_pP->module_id]->node_type) || NODE_IS_MONOLITHIC(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
nr_mac_enable_ue_rrc_processing_timer(ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
*RC.nrrrc[ctxt_pP->module_id]->carrier.servingcellconfigcommon->ssbSubcarrierSpacing,
NR_RRC_RECONFIGURATION_DELAY_MS);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
......
...@@ -19,10 +19,6 @@ gNBs = ...@@ -19,10 +19,6 @@ gNBs =
{ {
sst = 1; sst = 1;
sd = 0x1; // 0 false, else true sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
} }
); );
...@@ -33,7 +29,7 @@ gNBs = ...@@ -33,7 +29,7 @@ gNBs =
////////// Physical parameters: ////////// Physical parameters:
ssb_SubcarrierOffset = 0; ssb_SubcarrierOffset = 0;
min_rxtxtime = 6; min_rxtxtime = 2;
do_SRS = 1; do_SRS = 1;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
...@@ -276,7 +272,7 @@ L1s = ( ...@@ -276,7 +272,7 @@ L1s = (
num_cc = 1; num_cc = 1;
tr_n_preference = "local_mac"; tr_n_preference = "local_mac";
prach_dtx_threshold = 120; prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150; pucch0_dtx_threshold = 100;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0 ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
} }
); );
...@@ -286,12 +282,11 @@ RUs = ( ...@@ -286,12 +282,11 @@ RUs = (
local_rf = "yes" local_rf = "yes"
nb_tx = 1 nb_tx = 1
nb_rx = 1 nb_rx = 1
att_tx = 0 att_tx = 6;
att_rx = 0; att_rx = 6;
bands = [41]; bands = [41];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 114; max_rxgain = 114;
sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
#beamforming 1x4 matrix: #beamforming 1x4 matrix:
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
......
...@@ -19,10 +19,6 @@ gNBs = ...@@ -19,10 +19,6 @@ gNBs =
{ {
sst = 1; sst = 1;
sd = 0x1; // 0 false, else true sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
} }
); );
...@@ -292,7 +288,6 @@ RUs = ( ...@@ -292,7 +288,6 @@ RUs = (
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 75; max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
##beamforming 1x2 matrix: 1 layer x 2 antennas ##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000]; bf_weights = [0x00007fff, 0x0000];
......
...@@ -19,10 +19,6 @@ gNBs = ...@@ -19,10 +19,6 @@ gNBs =
{ {
sst = 1; sst = 1;
sd = 0x1; // 0 false, else true sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
} }
); );
...@@ -33,7 +29,7 @@ gNBs = ...@@ -33,7 +29,7 @@ gNBs =
////////// Physical parameters: ////////// Physical parameters:
ssb_SubcarrierOffset = 0; ssb_SubcarrierOffset = 0;
min_rxtxtime = 6; min_rxtxtime = 2;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -275,7 +271,7 @@ L1s = ( ...@@ -275,7 +271,7 @@ L1s = (
num_cc = 1; num_cc = 1;
tr_n_preference = "local_mac"; tr_n_preference = "local_mac";
prach_dtx_threshold = 120; prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150; pucch0_dtx_threshold = 100;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0 ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
} }
); );
...@@ -285,12 +281,11 @@ RUs = ( ...@@ -285,12 +281,11 @@ RUs = (
local_rf = "yes" local_rf = "yes"
nb_tx = 1 nb_tx = 1
nb_rx = 1 nb_rx = 1
att_tx = 0 att_tx = 6;
att_rx = 0; att_rx = 6;
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 114; max_rxgain = 114;
sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
#beamforming 1x4 matrix: #beamforming 1x4 matrix:
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
......
...@@ -19,10 +19,6 @@ gNBs = ...@@ -19,10 +19,6 @@ gNBs =
{ {
sst = 1; sst = 1;
sd = 0x1; // 0 false, else true sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
} }
); );
...@@ -33,7 +29,7 @@ gNBs = ...@@ -33,7 +29,7 @@ gNBs =
////////// Physical parameters: ////////// Physical parameters:
ssb_SubcarrierOffset = 0; ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts_N1 = 2; pdsch_AntennaPorts_N1 = 1;
pusch_AntennaPorts = 2; pusch_AntennaPorts = 2;
ul_prbblacklist = "79,80,81,82" ul_prbblacklist = "79,80,81,82"
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
...@@ -207,7 +203,7 @@ MACRLCs = ( ...@@ -207,7 +203,7 @@ MACRLCs = (
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 200; pusch_TargetSNRx10 = 150;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200;
ulsch_max_frame_inactivity = 0; ulsch_max_frame_inactivity = 0;
} }
...@@ -218,7 +214,7 @@ L1s = ( ...@@ -218,7 +214,7 @@ L1s = (
num_cc = 1; num_cc = 1;
tr_n_preference = "local_mac"; tr_n_preference = "local_mac";
prach_dtx_threshold = 120; prach_dtx_threshold = 120;
pucch0_dtx_threshold = 120; pucch0_dtx_threshold = 100;
} }
); );
...@@ -232,7 +228,6 @@ RUs = ( ...@@ -232,7 +228,6 @@ RUs = (
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 75; max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
##beamforming 1x2 matrix: 1 layer x 2 antennas ##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000]; bf_weights = [0x00007fff, 0x0000];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment