Commit 072567e5 authored by Marwan Hammouda's avatar Marwan Hammouda

HARQ32 enabled in conf files and also SA mode

parent 9c01fe12
...@@ -157,6 +157,8 @@ ...@@ -157,6 +157,8 @@
#define GNB_CONFIG_STRING_SCS_ULBWP3 "ul_bwp3_subcarrierSpacing" #define GNB_CONFIG_STRING_SCS_ULBWP3 "ul_bwp3_subcarrierSpacing"
#define GNB_CONFIG_STRING_SCS_ULBWP4 "ul_bwp4_subcarrierSpacing" #define GNB_CONFIG_STRING_SCS_ULBWP4 "ul_bwp4_subcarrierSpacing"
#define GNB_CONFIG_STRING_FIRSTACTIVEULBWP_ID "firstActiveUplinkBWP-Id" #define GNB_CONFIG_STRING_FIRSTACTIVEULBWP_ID "firstActiveUplinkBWP-Id"
#define GNB_CONFIG_STRING_NUM_DL_HARQ_PROCESSES "nrofHARQ-ProcessesForPDSCH"
#define GNB_CONFIG_STRING_NUM_UL_HARQ_PROCESSES "nrofHARQ-ProcessesForPUSCH"
/*--------------------------------------------------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------------------------------------------------*/
...@@ -280,6 +282,8 @@ ...@@ -280,6 +282,8 @@
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP2,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[1]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \ {GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP2,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[1]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP3,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[2]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \ {GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP3,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[2]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP4,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[3]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \ {GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP4,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[3]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DEFAULTDLBWP_ID,NULL,0,.i64ptr=scd->defaultDownlinkBWP_Id,.defint64val=0,TYPE_INT64,0}} {GNB_CONFIG_STRING_DEFAULTDLBWP_ID,NULL,0,.i64ptr=scd->defaultDownlinkBWP_Id,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_NUM_DL_HARQ_PROCESSES,NULL,0,.i64ptr=scd->pdsch_ServingCellConfig->choice.setup->nrofHARQ_ProcessesForPDSCH,.defint64val=16,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_NUM_UL_HARQ_PROCESSES,NULL,0,.i64ptr=scd->uplinkConfig->pusch_ServingCellConfig->choice.setup->ext3->nrofHARQ_ProcessesForPUSCH_r17,.defint64val=16,TYPE_INT64,0}}
#endif #endif
...@@ -535,8 +535,70 @@ void prepare_scd(NR_ServingCellConfig_t *scd) { ...@@ -535,8 +535,70 @@ void prepare_scd(NR_ServingCellConfig_t *scd) {
asn1cSeqAdd(&scd->uplinkConfig->uplinkBWP_ToAddModList->list,ubwp); asn1cSeqAdd(&scd->uplinkConfig->uplinkBWP_ToAddModList->list,ubwp);
} }
scd->pdsch_ServingCellConfig = calloc(1, sizeof(*scd->pdsch_ServingCellConfig));
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig = calloc(1, sizeof(*pdsch_servingcellconfig));
scd->pdsch_ServingCellConfig->present = NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup;
scd->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig;
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
scd->uplinkConfig->pusch_ServingCellConfig = calloc(1, sizeof(*scd->uplinkConfig->pusch_ServingCellConfig));
NR_PUSCH_ServingCellConfig_t *pusch_scc = calloc(1, sizeof(*pusch_scc));
scd->uplinkConfig->pusch_ServingCellConfig->present = NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup;
scd->uplinkConfig->pusch_ServingCellConfig->choice.setup = pusch_scc;
pusch_scc->ext3 = calloc(1, sizeof(*pusch_scc->ext3));
pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 = calloc(1, sizeof(*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17));
} }
void fix_harq_cfg(NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig,
NR_PUSCH_ServingCellConfig_t *pusch_scc)
{
int num_dlharq = *pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH;
LOG_I(NR_RRC,"Configured value dlharq:%d\n", num_dlharq);
switch (num_dlharq) {
case 2:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n2;
break;
case 4:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n4;
break;
case 6:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n6;
break;
case 10:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n10;
break;
case 12:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n12;
break;
case 16:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16;
break;
case 32:
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16;
pdsch_servingcellconfig->ext3 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3));
pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700));
*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = NR_PDSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPDSCH_v1700_n32;
break;
default:
//num dl harqprocesses = 8 if IEs nrofHARQ_ProcessesForPDSCH and
//nrofHARQ_ProcessesForPDSCH_v1700 are not present
free_and_zero(pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH);
break;
}
int num_ulharq = *pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17;
if (num_ulharq == 32) {
*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 =
NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;
} else {
//If the IE is not present number of ul harq processes is 16
free_and_zero(pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17);
free_and_zero(pusch_scc->ext3);
}
}
/* This function checks dedicated serving cell configuration and performs fixes as needed */ /* This function checks dedicated serving cell configuration and performs fixes as needed */
void fix_scd(NR_ServingCellConfig_t *scd) { void fix_scd(NR_ServingCellConfig_t *scd) {
...@@ -645,6 +707,10 @@ void fix_scd(NR_ServingCellConfig_t *scd) { ...@@ -645,6 +707,10 @@ void fix_scd(NR_ServingCellConfig_t *scd) {
} }
} }
//SEt correct IE values based on harq values configured.
fix_harq_cfg(scd->pdsch_ServingCellConfig->choice.setup,
scd->uplinkConfig->pusch_ServingCellConfig->choice.setup);
} }
void RCconfig_nr_prs(void) void RCconfig_nr_prs(void)
......
...@@ -2348,19 +2348,7 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf ...@@ -2348,19 +2348,7 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
// pdsch_servingcellconfig == NULL in SA -> will create default (8) number of HARQ processes // pdsch_servingcellconfig == NULL in SA -> will create default (8) number of HARQ processes
create_dl_harq_list(sched_ctrl, dl_bwp->pdsch_servingcellconfig); create_dl_harq_list(sched_ctrl, dl_bwp->pdsch_servingcellconfig);
int nrofHARQ = 16; create_ul_harq_list(sched_ctrl, (ul_bwp ? ul_bwp->pusch_servingcellconfig : NULL));
if (ul_bwp && ul_bwp->pusch_servingcellconfig)
nrofHARQ = get_nrofHARQ_ProcessesForPUSCH(ul_bwp->pusch_servingcellconfig->ext3);
LOG_D(NR_MAC,"Num UL HARQ: %d\n",nrofHARQ);
// add all available UL HARQ processes for this UE
// nb of ul harq processes not configurable
create_nr_list(&sched_ctrl->available_ul_harq, nrofHARQ);
for (int harq = 0; harq < nrofHARQ; harq++)
add_tail_nr_list(&sched_ctrl->available_ul_harq, harq);
create_nr_list(&sched_ctrl->feedback_ul_harq, nrofHARQ);
create_nr_list(&sched_ctrl->retrans_ul_harq, nrofHARQ);
reset_srs_stats(UE); reset_srs_stats(UE);
...@@ -2410,6 +2398,35 @@ void set_sched_pucch_list(NR_UE_sched_ctrl_t *sched_ctrl, ...@@ -2410,6 +2398,35 @@ void set_sched_pucch_list(NR_UE_sched_ctrl_t *sched_ctrl,
} }
} }
void create_ul_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
const NR_PUSCH_ServingCellConfig_t *pusch) {
int nrofHARQ = pusch ? get_nrofHARQ_ProcessesForPUSCH(pusch->ext3) : 16;
LOG_I(NR_MAC,"Num UL HARQ:%d\n",nrofHARQ);
if (sched_ctrl->available_ul_harq.len == 0) {
// add all available UL HARQ processes for this UE
// nb of ul harq processes not configurable
create_nr_list(&sched_ctrl->available_ul_harq, nrofHARQ);
for (int harq = 0; harq < nrofHARQ; harq++)
add_tail_nr_list(&sched_ctrl->available_ul_harq, harq);
create_nr_list(&sched_ctrl->feedback_ul_harq, nrofHARQ);
create_nr_list(&sched_ctrl->retrans_ul_harq, nrofHARQ);
} else if (sched_ctrl->available_ul_harq.len == nrofHARQ) {
LOG_D(NR_MAC, "nrofHARQ %d already configured\n", nrofHARQ);
} else {
const int old_nrofHARQ = sched_ctrl->available_ul_harq.len;
AssertFatal(nrofHARQ > old_nrofHARQ,
"cannot resize HARQ list to be smaller (nrofHARQ %d, old_nrofHARQ %d)\n",
nrofHARQ, old_nrofHARQ);
resize_nr_list(&sched_ctrl->available_ul_harq, nrofHARQ);
for (int harq = old_nrofHARQ; harq < nrofHARQ; harq++)
add_tail_nr_list(&sched_ctrl->available_ul_harq, harq);
resize_nr_list(&sched_ctrl->feedback_ul_harq, nrofHARQ);
resize_nr_list(&sched_ctrl->retrans_ul_harq, nrofHARQ);
}
}
void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl, void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
const NR_PDSCH_ServingCellConfig_t *pdsch) { const NR_PDSCH_ServingCellConfig_t *pdsch) {
const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ? const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ?
...@@ -2832,6 +2849,7 @@ void nr_mac_update_timers(module_id_t module_id, ...@@ -2832,6 +2849,7 @@ void nr_mac_update_timers(module_id_t module_id,
if (get_softmodem_params()->sa) { if (get_softmodem_params()->sa) {
// add all available DL HARQ processes for this UE in SA // add all available DL HARQ processes for this UE in SA
create_dl_harq_list(sched_ctrl, UE->current_DL_BWP.pdsch_servingcellconfig); create_dl_harq_list(sched_ctrl, UE->current_DL_BWP.pdsch_servingcellconfig);
create_ul_harq_list(sched_ctrl, UE->current_UL_BWP.pusch_servingcellconfig);
} }
} }
} }
......
...@@ -366,6 +366,9 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, ...@@ -366,6 +366,9 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl, void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
const NR_PDSCH_ServingCellConfig_t *pdsch); const NR_PDSCH_ServingCellConfig_t *pdsch);
void create_ul_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
const NR_PUSCH_ServingCellConfig_t *pusch);
void reset_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl); void reset_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl);
void reset_ul_harq_list(NR_UE_sched_ctrl_t *sched_ctrl); void reset_ul_harq_list(NR_UE_sched_ctrl_t *sched_ctrl);
......
...@@ -2160,12 +2160,6 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid, ...@@ -2160,12 +2160,6 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
bwp_Dedicated->pdsch_Config = config_pdsch(bitmap, 0, pdsch_AntennaPorts); bwp_Dedicated->pdsch_Config = config_pdsch(bitmap, 0, pdsch_AntennaPorts);
SpCellConfig->spCellConfigDedicated->tag_Id = 0; SpCellConfig->spCellConfigDedicated->tag_Id = 0;
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig =
calloc(1, sizeof(*SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig));
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig = calloc(1, sizeof(*pdsch_servingcellconfig));
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->present = NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup;
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig;
// Downlink BWPs // Downlink BWPs
int n_dl_bwp = 0; int n_dl_bwp = 0;
if (servingcellconfigdedicated && servingcellconfigdedicated->downlinkBWP_ToAddModList if (servingcellconfigdedicated && servingcellconfigdedicated->downlinkBWP_ToAddModList
...@@ -2311,15 +2305,64 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid, ...@@ -2311,15 +2305,64 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
} }
config_rsrp_meas_report(csi_MeasConfig, scc, pucchcsires1, configuration->do_CSIRS, bwp_id + 10, uid); config_rsrp_meas_report(csi_MeasConfig, scc, pucchcsires1, configuration->do_CSIRS, bwp_id + 10, uid);
} }
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig =
calloc(1, sizeof(*SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig));
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig = calloc(1, sizeof(*pdsch_servingcellconfig));
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->present = NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup;
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig;
pdsch_servingcellconfig->codeBlockGroupTransmission = NULL; pdsch_servingcellconfig->codeBlockGroupTransmission = NULL;
pdsch_servingcellconfig->xOverhead = NULL; pdsch_servingcellconfig->xOverhead = NULL;
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16;
pdsch_servingcellconfig->pucch_Cell = NULL; pdsch_servingcellconfig->pucch_Cell = NULL;
pdsch_servingcellconfig->ext1 = calloc(1, sizeof(*pdsch_servingcellconfig->ext1)); pdsch_servingcellconfig->ext1 = calloc(1, sizeof(*pdsch_servingcellconfig->ext1));
pdsch_servingcellconfig->ext1->maxMIMO_Layers = calloc(1, sizeof(*pdsch_servingcellconfig->ext1->maxMIMO_Layers)); pdsch_servingcellconfig->ext1->maxMIMO_Layers = calloc(1, sizeof(*pdsch_servingcellconfig->ext1->maxMIMO_Layers));
*pdsch_servingcellconfig->ext1->maxMIMO_Layers = 2; *pdsch_servingcellconfig->ext1->maxMIMO_Layers = 2;
if (servingcellconfigdedicated->pdsch_ServingCellConfig &&
servingcellconfigdedicated->pdsch_ServingCellConfig->present == NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup) {
NR_PDSCH_ServingCellConfig_t *pdsch_scc = servingcellconfigdedicated->pdsch_ServingCellConfig->choice.setup;
if (pdsch_scc->nrofHARQ_ProcessesForPDSCH) {
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = *pdsch_scc->nrofHARQ_ProcessesForPDSCH;
LOG_I(NR_RRC, "PDSCH serving cell cfg DL harq set to:%ld\n",
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH);
}
if (pdsch_scc->ext3 &&
pdsch_scc->ext3->nrofHARQ_ProcessesForPDSCH_v1700) {
pdsch_servingcellconfig->ext3 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3));
pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 =
calloc(1,sizeof(*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700));
*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;
LOG_I(NR_RRC, "PDSCH serving cell cfg DL harq set to 32\n");
}
}
if (servingcellconfigdedicated->uplinkConfig &&
servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig &&
servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig->present == NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup) {
NR_PUSCH_ServingCellConfig_t *pusch_scc = servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup;
if (pusch_scc->ext3 &&
pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17) {
SpCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig =
calloc(1, sizeof(*SpCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig));
NR_PUSCH_ServingCellConfig_t *pusch_servingcellconfig = calloc(1, sizeof(*pusch_scc));
SpCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->present =
NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup;
SpCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup = pusch_servingcellconfig;
pusch_servingcellconfig->ext3 = calloc(1,sizeof(*pusch_servingcellconfig->ext3));
pusch_servingcellconfig->ext3->nrofHARQ_ProcessesForPUSCH_r17 =
calloc(1,sizeof(*pusch_servingcellconfig->ext3->nrofHARQ_ProcessesForPUSCH_r17));
*pusch_servingcellconfig->ext3->nrofHARQ_ProcessesForPUSCH_r17 =
NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;
LOG_I(NR_RRC, "PUSCH Servingcellcfg ul harq 32 set\n");
}
}
if (LOG_DEBUGFLAG(DEBUG_ASN1)) { if (LOG_DEBUGFLAG(DEBUG_ASN1)) {
xer_fprint(stdout, &asn_DEF_NR_SpCellConfig, SpCellConfig); xer_fprint(stdout, &asn_DEF_NR_SpCellConfig, SpCellConfig);
} }
...@@ -2749,9 +2792,27 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC ...@@ -2749,9 +2792,27 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC
pusch_scc->ext1->maxMIMO_Layers = calloc(1, sizeof(*pusch_scc->ext1->maxMIMO_Layers)); pusch_scc->ext1->maxMIMO_Layers = calloc(1, sizeof(*pusch_scc->ext1->maxMIMO_Layers));
*pusch_scc->ext1->maxMIMO_Layers = 1; *pusch_scc->ext1->maxMIMO_Layers = 1;
pusch_scc->ext1->processingType2Enabled = NULL; pusch_scc->ext1->processingType2Enabled = NULL;
pusch_scc->ext3 = calloc(1, sizeof(*pusch_scc->ext3)); pusch_scc->ext3 = NULL; /*calloc(1, sizeof(*pusch_scc->ext3));
pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 = calloc(1, sizeof(*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17)); pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 = calloc(1, sizeof(*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17));
*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 = NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32; *pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 = NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;*/
if (servingcellconfigdedicated->uplinkConfig &&
servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig &&
servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig->present == NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup) {
NR_PUSCH_ServingCellConfig_t *pusch_servingcellcfg = servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup;
if (pusch_servingcellcfg->ext3 &&
pusch_servingcellcfg->ext3->nrofHARQ_ProcessesForPUSCH_r17) {
pusch_scc->ext3 = calloc(1,sizeof(*pusch_scc->ext3));
pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 =
calloc(1,sizeof(*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17));
*pusch_scc->ext3->nrofHARQ_ProcessesForPUSCH_r17 =
NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;
LOG_I(NR_RRC, "PUSCH Servingcellcfg ul harq 32 set\n");
}
}
secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->carrierSwitching = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->carrierSwitching = NULL;
secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink = NULL;
...@@ -2765,17 +2826,34 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC ...@@ -2765,17 +2826,34 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC
secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig; secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig;
pdsch_servingcellconfig->codeBlockGroupTransmission = NULL; pdsch_servingcellconfig->codeBlockGroupTransmission = NULL;
pdsch_servingcellconfig->xOverhead = NULL; pdsch_servingcellconfig->xOverhead = NULL;
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16;
pdsch_servingcellconfig->pucch_Cell = NULL; pdsch_servingcellconfig->pucch_Cell = NULL;
pdsch_servingcellconfig->ext1 = calloc(1, sizeof(*pdsch_servingcellconfig->ext1)); pdsch_servingcellconfig->ext1 = calloc(1, sizeof(*pdsch_servingcellconfig->ext1));
pdsch_servingcellconfig->ext1->maxMIMO_Layers = calloc(1, sizeof(*pdsch_servingcellconfig->ext1->maxMIMO_Layers)); pdsch_servingcellconfig->ext1->maxMIMO_Layers = calloc(1, sizeof(*pdsch_servingcellconfig->ext1->maxMIMO_Layers));
*pdsch_servingcellconfig->ext1->maxMIMO_Layers = NR_MAX_SUPPORTED_DL_LAYERS; *pdsch_servingcellconfig->ext1->maxMIMO_Layers = NR_MAX_SUPPORTED_DL_LAYERS;
pdsch_servingcellconfig->ext1->processingType2Enabled = NULL; pdsch_servingcellconfig->ext1->processingType2Enabled = NULL;
pdsch_servingcellconfig->ext3 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3)); pdsch_servingcellconfig->ext3 = NULL; /*calloc(1, sizeof(*pdsch_servingcellconfig->ext3));
pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700)); pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700));
*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = NR_PDSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPDSCH_v1700_n32; *pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = NR_PDSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPDSCH_v1700_n32;*/
if (servingcellconfigdedicated->pdsch_ServingCellConfig &&
servingcellconfigdedicated->pdsch_ServingCellConfig->present == NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup) {
NR_PDSCH_ServingCellConfig_t *pdsch_scc = servingcellconfigdedicated->pdsch_ServingCellConfig->choice.setup;
if (pdsch_scc->nrofHARQ_ProcessesForPDSCH) {
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = *pdsch_scc->nrofHARQ_ProcessesForPDSCH;
LOG_I(NR_RRC, "PDSCH serving cell cfg DL harq set to:%ld\n",
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH);
}
if (pdsch_scc->ext3 &&
pdsch_scc->ext3->nrofHARQ_ProcessesForPDSCH_v1700) {
pdsch_servingcellconfig->ext3 = calloc(1, sizeof(*pdsch_servingcellconfig->ext3));
pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 =
calloc(1,sizeof(*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700));
*pdsch_servingcellconfig->ext3->nrofHARQ_ProcessesForPDSCH_v1700 = NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32;
LOG_I(NR_RRC, "PDSCH serving cell cfg DL harq set to 32\n");
}
}
secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig = NULL;
secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig = secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig =
......
...@@ -149,6 +149,19 @@ gNBs = ...@@ -149,6 +149,19 @@ gNBs =
} }
); );
# Dedicated Serving Cell Configuration
servingCellConfigDedicated = (
{
nrofHARQ-ProcessesForPDSCH = 32;
nrofHARQ-ProcessesForPUSCH = 32;
}
);
# ------- SCTP definitions # ------- SCTP definitions
......
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