Commit 2715c7ef authored by francescomani's avatar francescomani

improve MAC configuration from RRC

parent 848f5767
...@@ -570,7 +570,6 @@ typedef struct NR_UE_DL_BWP { ...@@ -570,7 +570,6 @@ typedef struct NR_UE_DL_BWP {
NR_PDSCH_TimeDomainResourceAllocationList_t *tdaList_Common; NR_PDSCH_TimeDomainResourceAllocationList_t *tdaList_Common;
NR_PDSCH_Config_t *pdsch_Config; NR_PDSCH_Config_t *pdsch_Config;
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig; NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig;
long *pdsch_HARQ_ACK_Codebook;
uint8_t mcsTableIdx; uint8_t mcsTableIdx;
nr_dci_format_t dci_format; nr_dci_format_t dci_format;
int bw_tbslbrm; int bw_tbslbrm;
...@@ -593,7 +592,6 @@ typedef struct NR_UE_UL_BWP { ...@@ -593,7 +592,6 @@ typedef struct NR_UE_UL_BWP {
NR_PUCCH_Config_t *pucch_Config; NR_PUCCH_Config_t *pucch_Config;
NR_PUCCH_ConfigCommon_t *pucch_ConfigCommon; NR_PUCCH_ConfigCommon_t *pucch_ConfigCommon;
NR_UplinkConfig_t *supplementaryUplink; NR_UplinkConfig_t *supplementaryUplink;
long *harq_ACK_SpatialBundlingPUCCH;
NR_CSI_MeasConfig_t *csi_MeasConfig; NR_CSI_MeasConfig_t *csi_MeasConfig;
NR_SRS_Config_t *srs_Config; NR_SRS_Config_t *srs_Config;
long *msg3_DeltaPreamble; long *msg3_DeltaPreamble;
......
...@@ -3279,6 +3279,7 @@ uint16_t get_rb_bwp_dci(nr_dci_format_t format, ...@@ -3279,6 +3279,7 @@ uint16_t get_rb_bwp_dci(nr_dci_format_t format,
uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP, uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP,
const NR_UE_UL_BWP_t *UL_BWP, const NR_UE_UL_BWP_t *UL_BWP,
NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig, NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig,
long pdsch_HARQ_ACK_Codebook,
dci_pdu_rel15_t *dci_pdu, dci_pdu_rel15_t *dci_pdu,
nr_dci_format_t format, nr_dci_format_t format,
nr_rnti_type_t rnti_type, nr_rnti_type_t rnti_type,
...@@ -3376,7 +3377,7 @@ uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP, ...@@ -3376,7 +3377,7 @@ uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP,
size += 1; size += 1;
} }
// 1st DAI // 1st DAI
if (DL_BWP->pdsch_HARQ_ACK_Codebook && *DL_BWP->pdsch_HARQ_ACK_Codebook == NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) if (pdsch_HARQ_ACK_Codebook == NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic)
dci_pdu->dai[0].nbits = 2; dci_pdu->dai[0].nbits = 2;
else else
dci_pdu->dai[0].nbits = 1; dci_pdu->dai[0].nbits = 1;
...@@ -3548,7 +3549,7 @@ uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP, ...@@ -3548,7 +3549,7 @@ uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP,
// HARQ PID // HARQ PID
size += 4; size += 4;
// DAI // DAI
if (DL_BWP->pdsch_HARQ_ACK_Codebook && *DL_BWP->pdsch_HARQ_ACK_Codebook == NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) { // FIXME in case of more than one serving cell if (pdsch_HARQ_ACK_Codebook == NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) { // FIXME in case of more than one serving cell
dci_pdu->dai[0].nbits = 2; dci_pdu->dai[0].nbits = 2;
size += dci_pdu->dai[0].nbits; size += dci_pdu->dai[0].nbits;
} }
...@@ -4734,7 +4735,7 @@ uint16_t compute_pucch_prb_size(uint8_t format, ...@@ -4734,7 +4735,7 @@ uint16_t compute_pucch_prb_size(uint8_t format,
} }
int get_dlbw_tbslbrm(int scc_bwpsize, int get_dlbw_tbslbrm(int scc_bwpsize,
NR_ServingCellConfig_t *servingCellConfig) const NR_ServingCellConfig_t *servingCellConfig)
{ {
int bw = scc_bwpsize; int bw = scc_bwpsize;
if (servingCellConfig) { if (servingCellConfig) {
...@@ -4752,7 +4753,7 @@ int get_dlbw_tbslbrm(int scc_bwpsize, ...@@ -4752,7 +4753,7 @@ int get_dlbw_tbslbrm(int scc_bwpsize,
} }
int get_ulbw_tbslbrm(int scc_bwpsize, int get_ulbw_tbslbrm(int scc_bwpsize,
NR_ServingCellConfig_t *servingCellConfig) const NR_ServingCellConfig_t *servingCellConfig)
{ {
int bw = scc_bwpsize; int bw = scc_bwpsize;
if (servingCellConfig) { if (servingCellConfig) {
......
...@@ -96,6 +96,7 @@ NR_tda_info_t get_dl_tda_info(const NR_UE_DL_BWP_t *dl_BWP, int ss_type, int tda ...@@ -96,6 +96,7 @@ NR_tda_info_t get_dl_tda_info(const NR_UE_DL_BWP_t *dl_BWP, int ss_type, int tda
uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP, uint16_t nr_dci_size(const NR_UE_DL_BWP_t *DL_BWP,
const NR_UE_UL_BWP_t *UL_BWP, const NR_UE_UL_BWP_t *UL_BWP,
NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig, NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig,
long pdsch_HARQ_ACK_Codebook,
dci_pdu_rel15_t *dci_pdu, dci_pdu_rel15_t *dci_pdu,
nr_dci_format_t format, nr_dci_format_t format,
nr_rnti_type_t rnti_type, nr_rnti_type_t rnti_type,
...@@ -196,10 +197,10 @@ uint32_t nr_get_code_rate_ul(uint8_t Imcs, uint8_t table_idx); ...@@ -196,10 +197,10 @@ uint32_t nr_get_code_rate_ul(uint8_t Imcs, uint8_t table_idx);
uint16_t get_nr_srs_offset(NR_SRS_PeriodicityAndOffset_t periodicityAndOffset); uint16_t get_nr_srs_offset(NR_SRS_PeriodicityAndOffset_t periodicityAndOffset);
int get_dlbw_tbslbrm(int scc_bwpsize, int get_dlbw_tbslbrm(int scc_bwpsize,
NR_ServingCellConfig_t *servingCellConfig); const NR_ServingCellConfig_t *servingCellConfig);
int get_ulbw_tbslbrm(int scc_bwpsize, int get_ulbw_tbslbrm(int scc_bwpsize,
NR_ServingCellConfig_t *servingCellConfig); const NR_ServingCellConfig_t *servingCellConfig);
uint32_t nr_compute_tbslbrm(uint16_t table, uint32_t nr_compute_tbslbrm(uint16_t table,
uint16_t nb_rb, uint16_t nb_rb,
......
This diff is collapsed.
...@@ -447,6 +447,9 @@ typedef struct { ...@@ -447,6 +447,9 @@ typedef struct {
NR_BWP_DownlinkCommon_t *bwp_dlcommon; NR_BWP_DownlinkCommon_t *bwp_dlcommon;
NR_BWP_UplinkCommon_t *bwp_ulcommon; NR_BWP_UplinkCommon_t *bwp_ulcommon;
bool harq_ACK_SpatialBundlingPUCCH;
bool harq_ACK_SpatialBundlingPUSCH;
NR_UL_TIME_ALIGNMENT_t ul_time_alignment; NR_UL_TIME_ALIGNMENT_t ul_time_alignment;
NR_SearchSpace_t *otherSI_SS; NR_SearchSpace_t *otherSI_SS;
...@@ -513,7 +516,10 @@ typedef struct { ...@@ -513,7 +516,10 @@ typedef struct {
uint8_t PHR_reporting_active; uint8_t PHR_reporting_active;
int dmrs_TypeA_Position; int dmrs_TypeA_Position;
NR_P_Max_t *p_Max; int p_Max;
int p_Max_alt;
long pdsch_HARQ_ACK_Codebook;
NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config; NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config;
frequency_range_t frequency_range; frequency_range_t frequency_range;
......
...@@ -78,7 +78,7 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id, ...@@ -78,7 +78,7 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id,
void nr_rrc_mac_config_req_sib1(module_id_t module_id, void nr_rrc_mac_config_req_sib1(module_id_t module_id,
int cc_idP, int cc_idP,
struct NR_SI_SchedulingInfo *si_SchedulingInfo, NR_SI_SchedulingInfo_t *si_SchedulingInfo,
NR_ServingCellConfigCommonSIB_t *scc); NR_ServingCellConfigCommonSIB_t *scc);
/**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/ /**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/
...@@ -86,8 +86,7 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst); ...@@ -86,8 +86,7 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst);
/**\brief fetch MAC instance by module_id, within 0 - (NB_NR_UE_MAC_INST-1) /**\brief fetch MAC instance by module_id, within 0 - (NB_NR_UE_MAC_INST-1)
\param module_id index of MAC instance(s)*/ \param module_id index of MAC instance(s)*/
NR_UE_MAC_INST_t *get_mac_inst( NR_UE_MAC_INST_t *get_mac_inst(module_id_t module_id);
module_id_t module_id);
/**\brief called at each slot, slot length based on numerology. now use u=0, scs=15kHz, slot=1ms /**\brief called at each slot, slot length based on numerology. now use u=0, scs=15kHz, slot=1ms
performs BSR/SR/PHR procedures, random access procedure handler and DLSCH/ULSCH procedures. performs BSR/SR/PHR procedures, random access procedure handler and DLSCH/ULSCH procedures.
......
...@@ -189,6 +189,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, ...@@ -189,6 +189,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
nr_dci_size(current_DL_BWP, nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
mac->crossCarrierSchedulingConfig, mac->crossCarrierSchedulingConfig,
mac->pdsch_HARQ_ACK_Codebook,
&temp_pdu, &temp_pdu,
NR_UL_DCI_FORMAT_0_0, NR_UL_DCI_FORMAT_0_0,
rnti_type, rnti_type,
...@@ -202,6 +203,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, ...@@ -202,6 +203,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
nr_dci_size(current_DL_BWP, nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
mac->crossCarrierSchedulingConfig, mac->crossCarrierSchedulingConfig,
mac->pdsch_HARQ_ACK_Codebook,
&temp_pdu, &temp_pdu,
NR_DL_DCI_FORMAT_1_0, NR_DL_DCI_FORMAT_1_0,
rnti_type, rnti_type,
...@@ -215,6 +217,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, ...@@ -215,6 +217,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
rel15->dci_length_options[i] = nr_dci_size(current_DL_BWP, rel15->dci_length_options[i] = nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
mac->crossCarrierSchedulingConfig, mac->crossCarrierSchedulingConfig,
mac->pdsch_HARQ_ACK_Codebook,
&mac->def_dci_pdu_rel15[dl_config->slot][dci_format], &mac->def_dci_pdu_rel15[dl_config->slot][dci_format],
dci_format, dci_format,
rnti_type, rnti_type,
......
...@@ -58,7 +58,7 @@ int nr_get_Pcmax(NR_UE_MAC_INST_t *mac, int Qm, bool powerBoostPi2BPSK, int scs, ...@@ -58,7 +58,7 @@ int nr_get_Pcmax(NR_UE_MAC_INST_t *mac, int Qm, bool powerBoostPi2BPSK, int scs,
//TODO configure P-MAX from the upper layers according to 38.331 //TODO configure P-MAX from the upper layers according to 38.331
int p_powerclass = 23; // dBm assuming poweclass 3 UE int p_powerclass = 23; // dBm assuming poweclass 3 UE
int p_emax = mac->p_Max ? *mac->p_Max : 0; int p_emax = mac->p_Max != INT_MIN ? mac->p_Max : p_powerclass;
int delta_P_powerclass = 0; // for powerclass 2 needs to be changed int delta_P_powerclass = 0; // for powerclass 2 needs to be changed
if(mac->p_Max && Qm == 1 && powerBoostPi2BPSK && (nr_band == 40 || nr_band == 41 || nr_band == 77 || nr_band == 78 || nr_band == 79)) { if(mac->p_Max && Qm == 1 && powerBoostPi2BPSK && (nr_band == 40 || nr_band == 41 || nr_band == 77 || nr_band == 78 || nr_band == 79)) {
p_emax += 3; p_emax += 3;
......
...@@ -169,6 +169,9 @@ void nr_ue_init_mac(module_id_t module_idP) ...@@ -169,6 +169,9 @@ void nr_ue_init_mac(module_id_t module_idP)
mac->phy_config_request_sent = false; mac->phy_config_request_sent = false;
mac->state = UE_NOT_SYNC; mac->state = UE_NOT_SYNC;
mac->si_window_start = -1; mac->si_window_start = -1;
mac->servCellIndex = 0;
memset(&mac->current_DL_BWP, 0, sizeof(mac->current_DL_BWP));
memset(&mac->current_UL_BWP, 0, sizeof(mac->current_UL_BWP));
} }
void nr_ue_mac_default_configs(NR_UE_MAC_INST_t *mac) void nr_ue_mac_default_configs(NR_UE_MAC_INST_t *mac)
...@@ -1361,7 +1364,8 @@ void nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac, ...@@ -1361,7 +1364,8 @@ void nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
NR_PUCCH_Resource_t *pucchres = pucch->pucch_resource; NR_PUCCH_Resource_t *pucchres = pucch->pucch_resource;
if (current_UL_BWP->harq_ACK_SpatialBundlingPUCCH != NULL || *current_DL_BWP->pdsch_HARQ_ACK_Codebook != 1) { if (mac->harq_ACK_SpatialBundlingPUCCH ||
mac->pdsch_HARQ_ACK_Codebook != NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) {
LOG_E(MAC,"PUCCH Unsupported cell group configuration\n"); LOG_E(MAC,"PUCCH Unsupported cell group configuration\n");
return; return;
} else if (current_DL_BWP && current_DL_BWP->pdsch_servingcellconfig && current_DL_BWP->pdsch_servingcellconfig->codeBlockGroupTransmission != NULL) { } else if (current_DL_BWP && current_DL_BWP->pdsch_servingcellconfig && current_DL_BWP->pdsch_servingcellconfig->codeBlockGroupTransmission != NULL) {
...@@ -2876,6 +2880,11 @@ static uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac, ...@@ -2876,6 +2880,11 @@ static uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
else else
N_RB = mac->type0_PDCCH_CSS_config.num_rbs; N_RB = mac->type0_PDCCH_CSS_config.num_rbs;
if (N_RB == 0) {
LOG_E(MAC, "DCI configuration error! N_RB = 0\n");
return 1;
}
switch(dci_format) { switch(dci_format) {
case NR_DL_DCI_FORMAT_1_0: case NR_DL_DCI_FORMAT_1_0:
......
...@@ -847,6 +847,7 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP, ...@@ -847,6 +847,7 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP,
ul_bwp->bwp_id, ul_bwp->bwp_id,
ss, ss,
coreset, coreset,
0, // parameter not needed for DCI 0_0
nr_mac->cset0_bwp_size); nr_mac->cset0_bwp_size);
// Mark the corresponding RBs as used // Mark the corresponding RBs as used
...@@ -1373,6 +1374,7 @@ static void nr_generate_Msg2(module_id_t module_idP, ...@@ -1373,6 +1374,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
dl_bwp->bwp_id, dl_bwp->bwp_id,
ss, ss,
coreset, coreset,
0, // parameter not needed for DCI 1_0
nr_mac->cset0_bwp_size); nr_mac->cset0_bwp_size);
// DL TX request // DL TX request
...@@ -1595,6 +1597,7 @@ static void prepare_dl_pdus(gNB_MAC_INST *nr_mac, ...@@ -1595,6 +1597,7 @@ static void prepare_dl_pdus(gNB_MAC_INST *nr_mac,
dl_bwp->bwp_id, dl_bwp->bwp_id,
ss, ss,
coreset, coreset,
0, // parameter not needed for DCI 1_0
nr_mac->cset0_bwp_size); nr_mac->cset0_bwp_size);
LOG_D(NR_MAC,"BWPSize: %i\n", pdcch_pdu_rel15->BWPSize); LOG_D(NR_MAC,"BWPSize: %i\n", pdcch_pdu_rel15->BWPSize);
......
...@@ -506,6 +506,7 @@ static void nr_fill_nfapi_dl_sib1_pdu(int Mod_idP, ...@@ -506,6 +506,7 @@ static void nr_fill_nfapi_dl_sib1_pdu(int Mod_idP,
0, 0,
gNB_mac->sched_ctrlCommon->search_space, gNB_mac->sched_ctrlCommon->search_space,
gNB_mac->sched_ctrlCommon->coreset, gNB_mac->sched_ctrlCommon->coreset,
0, // parameter not needed for DCI 1_0
gNB_mac->cset0_bwp_size); gNB_mac->cset0_bwp_size);
LOG_D(MAC,"BWPSize: %i\n", pdcch_pdu_rel15->BWPSize); LOG_D(MAC,"BWPSize: %i\n", pdcch_pdu_rel15->BWPSize);
......
...@@ -1198,6 +1198,7 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -1198,6 +1198,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
bwp_id, bwp_id,
sched_ctrl->search_space, sched_ctrl->search_space,
sched_ctrl->coreset, sched_ctrl->coreset,
UE->pdsch_HARQ_ACK_Codebook,
gNB_mac->cset0_bwp_size); gNB_mac->cset0_bwp_size);
LOG_D(NR_MAC, LOG_D(NR_MAC,
......
...@@ -1138,6 +1138,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc, ...@@ -1138,6 +1138,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc,
int bwp_id, int bwp_id,
NR_SearchSpace_t *ss, NR_SearchSpace_t *ss,
NR_ControlResourceSet_t *coreset, NR_ControlResourceSet_t *coreset,
long pdsch_HARQ_ACK_Codebook,
uint16_t cset0_bwp_size) uint16_t cset0_bwp_size)
{ {
NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig = NULL; // TODO configure NR_CrossCarrierSchedulingConfig_t *crossCarrierSchedulingConfig = NULL; // TODO configure
...@@ -1161,6 +1162,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc, ...@@ -1161,6 +1162,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc,
alt_size = nr_dci_size(current_DL_BWP, alt_size = nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
crossCarrierSchedulingConfig, crossCarrierSchedulingConfig,
pdsch_HARQ_ACK_Codebook,
&temp_pdu, &temp_pdu,
NR_UL_DCI_FORMAT_0_0, NR_UL_DCI_FORMAT_0_0,
rnti_type, rnti_type,
...@@ -1174,6 +1176,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc, ...@@ -1174,6 +1176,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc,
alt_size = nr_dci_size(current_DL_BWP, alt_size = nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
crossCarrierSchedulingConfig, crossCarrierSchedulingConfig,
pdsch_HARQ_ACK_Codebook,
&temp_pdu, &temp_pdu,
NR_DL_DCI_FORMAT_1_0, NR_DL_DCI_FORMAT_1_0,
rnti_type, rnti_type,
...@@ -1190,6 +1193,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc, ...@@ -1190,6 +1193,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc,
int dci_size = nr_dci_size(current_DL_BWP, int dci_size = nr_dci_size(current_DL_BWP,
current_UL_BWP, current_UL_BWP,
crossCarrierSchedulingConfig, crossCarrierSchedulingConfig,
pdsch_HARQ_ACK_Codebook,
dci_pdu_rel15, dci_pdu_rel15,
dci_format, dci_format,
rnti_type, rnti_type,
...@@ -2054,9 +2058,6 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac, ...@@ -2054,9 +2058,6 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac,
int target_ss; int target_ss;
if (CellGroup && CellGroup->physicalCellGroupConfig)
DL_BWP->pdsch_HARQ_ACK_Codebook = &CellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook;
NR_ServingCellConfig_t *servingCellConfig = NULL; NR_ServingCellConfig_t *servingCellConfig = NULL;
if (CellGroup && if (CellGroup &&
CellGroup->spCellConfig && CellGroup->spCellConfig &&
...@@ -2189,6 +2190,9 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac, ...@@ -2189,6 +2190,9 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac,
if(UE) { if(UE) {
if (CellGroup && CellGroup->physicalCellGroupConfig)
UE->pdsch_HARQ_ACK_Codebook = CellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook;
// Reset required fields in sched_ctrl (e.g. ul_ri and tpmi) // Reset required fields in sched_ctrl (e.g. ul_ri and tpmi)
reset_sched_ctrl(sched_ctrl); reset_sched_ctrl(sched_ctrl);
......
...@@ -2394,6 +2394,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot, n ...@@ -2394,6 +2394,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot, n
current_BWP->bwp_id, current_BWP->bwp_id,
ss, ss,
coreset, coreset,
UE->pdsch_HARQ_ACK_Codebook,
nr_mac->cset0_bwp_size); nr_mac->cset0_bwp_size);
memset(sched_pusch, 0, sizeof(*sched_pusch)); memset(sched_pusch, 0, sizeof(*sched_pusch));
......
...@@ -236,6 +236,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc, ...@@ -236,6 +236,7 @@ void fill_dci_pdu_rel15(const NR_ServingCellConfigCommon_t *scc,
int bwp_id, int bwp_id,
NR_SearchSpace_t *ss, NR_SearchSpace_t *ss,
NR_ControlResourceSet_t *coreset, NR_ControlResourceSet_t *coreset,
long pdsch_HARQ_ACK_Codebook,
uint16_t cset0_bwp_size); uint16_t cset0_bwp_size);
void prepare_dci(const NR_CellGroupConfig_t *CellGroup, const NR_UE_DL_BWP_t *current_BWP, const NR_ControlResourceSet_t *coreset, dci_pdu_rel15_t *dci_pdu_rel15, nr_dci_format_t format); void prepare_dci(const NR_CellGroupConfig_t *CellGroup, const NR_UE_DL_BWP_t *current_BWP, const NR_ControlResourceSet_t *coreset, dci_pdu_rel15_t *dci_pdu_rel15, nr_dci_format_t format);
......
...@@ -705,6 +705,7 @@ typedef struct { ...@@ -705,6 +705,7 @@ typedef struct {
uint32_t ra_timer; uint32_t ra_timer;
float ul_thr_ue; float ul_thr_ue;
float dl_thr_ue; float dl_thr_ue;
long pdsch_HARQ_ACK_Codebook;
} NR_UE_info_t; } NR_UE_info_t;
typedef struct { typedef struct {
......
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