Fixes for UE BWP Operation 3GPP TS 38.213 version 16.3.0 Release 16
- fetching configuration from RRC - removed hardcoded params (e.g. bwp_id) - added BWP Id members to MAC instance - introduced offsetToCarrier
This commit is contained in:
@@ -202,8 +202,6 @@ void nr_generate_pucch3_4(int32_t **txdataF,
|
|||||||
*
|
*
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
static int bwp_id = 1;
|
|
||||||
|
|
||||||
bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t *proc, bool reset_harq)
|
bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t *proc, bool reset_harq)
|
||||||
{
|
{
|
||||||
uint8_t sr_payload = 0;
|
uint8_t sr_payload = 0;
|
||||||
@@ -234,6 +232,7 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_
|
|||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
|
||||||
NR_PUCCH_Resource_t *pucch_resource;
|
NR_PUCCH_Resource_t *pucch_resource;
|
||||||
uint16_t crnti = mac->crnti;
|
uint16_t crnti = mac->crnti;
|
||||||
|
NR_BWP_Id_t bwp_id = mac->UL_BWP_Id;
|
||||||
|
|
||||||
/* update current context */
|
/* update current context */
|
||||||
|
|
||||||
@@ -939,6 +938,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, NR_UE_MAC_INST_t *mac, uint8
|
|||||||
pucch_format_nr_t format_pucch;
|
pucch_format_nr_t format_pucch;
|
||||||
int ready_pucch_resource_id = FALSE; /* in the case that it is already given */
|
int ready_pucch_resource_id = FALSE; /* in the case that it is already given */
|
||||||
NR_PUCCH_Resource_t *pucch_resource;
|
NR_PUCCH_Resource_t *pucch_resource;
|
||||||
|
NR_BWP_Id_t bwp_id = mac->UL_BWP_Id;
|
||||||
|
|
||||||
/* ini values to unset */
|
/* ini values to unset */
|
||||||
*initial_pucch_id = NB_INITIAL_PUCCH_RESOURCE;
|
*initial_pucch_id = NB_INITIAL_PUCCH_RESOURCE;
|
||||||
@@ -1111,6 +1111,8 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, NR_UE_MAC_INST_t *mac, uint8
|
|||||||
int find_pucch_resource_set(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size)
|
int find_pucch_resource_set(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size)
|
||||||
{
|
{
|
||||||
int pucch_resource_set_id = 0;
|
int pucch_resource_set_id = 0;
|
||||||
|
NR_BWP_Id_t bwp_id = mac->DL_BWP_Id;
|
||||||
|
|
||||||
//long *pucch_max_pl_bits = NULL;
|
//long *pucch_max_pl_bits = NULL;
|
||||||
|
|
||||||
/* from TS 38.331 field maxPayloadMinus1
|
/* from TS 38.331 field maxPayloadMinus1
|
||||||
|
|||||||
@@ -320,6 +320,49 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** \brief This function performs some configuration routines according to clause 12 "Bandwidth part operation" 3GPP TS 38.213 version 16.3.0 Release 16
|
||||||
|
@param NR_UE_MAC_INST_t mac: pointer to local MAC instance
|
||||||
|
@returns void
|
||||||
|
*/
|
||||||
|
void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, int *dci_format){
|
||||||
|
|
||||||
|
NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
||||||
|
|
||||||
|
if (bwp_ind && dci_format){
|
||||||
|
|
||||||
|
switch(*dci_format){
|
||||||
|
case NR_UL_DCI_FORMAT_0_1:
|
||||||
|
mac->UL_BWP_Id = *bwp_ind;
|
||||||
|
break;
|
||||||
|
case NR_DL_DCI_FORMAT_1_1:
|
||||||
|
mac->DL_BWP_Id = *bwp_ind;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOG_E(MAC, "In %s: failed to configure BWP Id from DCI with format %d \n", __FUNCTION__, *dci_format);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (scd->firstActiveDownlinkBWP_Id)
|
||||||
|
mac->DL_BWP_Id = *scd->firstActiveDownlinkBWP_Id;
|
||||||
|
else if (scd->defaultDownlinkBWP_Id)
|
||||||
|
mac->DL_BWP_Id = *scd->defaultDownlinkBWP_Id;
|
||||||
|
else
|
||||||
|
mac->DL_BWP_Id = 1;
|
||||||
|
|
||||||
|
if (scd->uplinkConfig){
|
||||||
|
if (scd->uplinkConfig->firstActiveUplinkBWP_Id)
|
||||||
|
mac->UL_BWP_Id = *scd->uplinkConfig->firstActiveUplinkBWP_Id;
|
||||||
|
else
|
||||||
|
mac->UL_BWP_Id = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_D(MAC, "In %s setting DL_BWP_Id %ld UL_BWP_Id %ld \n", __FUNCTION__, mac->DL_BWP_Id, mac->UL_BWP_Id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** \brief This function is relavant for the UE procedures for control. It loads the search spaces, the BWPs and the CORESETs into the MAC instance and
|
/** \brief This function is relavant for the UE procedures for control. It loads the search spaces, the BWPs and the CORESETs into the MAC instance and
|
||||||
\brief performs assert checks on the relevant RRC configuration.
|
\brief performs assert checks on the relevant RRC configuration.
|
||||||
@param NR_UE_MAC_INST_t mac: pointer to local MAC instance
|
@param NR_UE_MAC_INST_t mac: pointer to local MAC instance
|
||||||
@@ -327,15 +370,20 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
|
|||||||
*/
|
*/
|
||||||
void config_control_ue(NR_UE_MAC_INST_t *mac){
|
void config_control_ue(NR_UE_MAC_INST_t *mac){
|
||||||
|
|
||||||
uint8_t bwp_id = 1, coreset_id = 1, ss_id;
|
uint8_t coreset_id = 1, ss_id;
|
||||||
|
NR_BWP_Id_t dl_bwp_id;
|
||||||
|
|
||||||
NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
||||||
AssertFatal(scd->downlinkBWP_ToAddModList != NULL, "downlinkBWP_ToAddModList is null\n");
|
AssertFatal(scd->downlinkBWP_ToAddModList != NULL, "downlinkBWP_ToAddModList is null\n");
|
||||||
AssertFatal(scd->downlinkBWP_ToAddModList->list.count == 1, "downlinkBWP_ToAddModList->list->count is %d\n", scd->downlinkBWP_ToAddModList->list.count);
|
AssertFatal(scd->downlinkBWP_ToAddModList->list.count == 1, "downlinkBWP_ToAddModList->list->count is %d\n", scd->downlinkBWP_ToAddModList->list.count);
|
||||||
|
|
||||||
NR_BWP_DownlinkCommon_t *bwp_Common = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1]->bwp_Common;
|
config_bwp_ue(mac, NULL, NULL);
|
||||||
|
dl_bwp_id = mac->DL_BWP_Id;
|
||||||
|
|
||||||
|
NR_BWP_DownlinkCommon_t *bwp_Common = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Common;
|
||||||
AssertFatal(bwp_Common != NULL, "bwp_Common is null\n");
|
AssertFatal(bwp_Common != NULL, "bwp_Common is null\n");
|
||||||
|
|
||||||
NR_BWP_DownlinkDedicated_t *dl_bwp_Dedicated = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1]->bwp_Dedicated;
|
NR_BWP_DownlinkDedicated_t *dl_bwp_Dedicated = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Dedicated;
|
||||||
AssertFatal(dl_bwp_Dedicated != NULL, "dl_bwp_Dedicated is null\n");
|
AssertFatal(dl_bwp_Dedicated != NULL, "dl_bwp_Dedicated is null\n");
|
||||||
|
|
||||||
NR_SetupRelease_PDCCH_Config_t *pdcch_Config = dl_bwp_Dedicated->pdcch_Config;
|
NR_SetupRelease_PDCCH_Config_t *pdcch_Config = dl_bwp_Dedicated->pdcch_Config;
|
||||||
@@ -364,8 +412,8 @@ void config_control_ue(NR_UE_MAC_INST_t *mac){
|
|||||||
AssertFatal(uplinkBWP_ToAddModList->list.count == 1, "uplinkBWP_ToAddModList->list->count is %d\n", uplinkBWP_ToAddModList->list.count);
|
AssertFatal(uplinkBWP_ToAddModList->list.count == 1, "uplinkBWP_ToAddModList->list->count is %d\n", uplinkBWP_ToAddModList->list.count);
|
||||||
|
|
||||||
// check pdcch_Config, pdcch_ConfigCommon and DL BWP
|
// check pdcch_Config, pdcch_ConfigCommon and DL BWP
|
||||||
mac->DLbwp[0] = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1];
|
mac->DLbwp[0] = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1];
|
||||||
mac->coreset[bwp_id - 1][coreset_id - 1] = controlResourceSetToAddModList->list.array[0];
|
mac->coreset[dl_bwp_id - 1][coreset_id - 1] = controlResourceSetToAddModList->list.array[0];
|
||||||
|
|
||||||
// Check dedicated UL BWP and pass to MAC
|
// Check dedicated UL BWP and pass to MAC
|
||||||
mac->ULbwp[0] = uplinkBWP_ToAddModList->list.array[0];
|
mac->ULbwp[0] = uplinkBWP_ToAddModList->list.array[0];
|
||||||
@@ -377,7 +425,7 @@ void config_control_ue(NR_UE_MAC_INST_t *mac){
|
|||||||
NR_SearchSpace_t *ss = searchSpacesToAddModList->list.array[ss_id];
|
NR_SearchSpace_t *ss = searchSpacesToAddModList->list.array[ss_id];
|
||||||
AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
||||||
AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n");
|
AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n");
|
||||||
AssertFatal(*ss->controlResourceSetId == mac->coreset[bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n");
|
AssertFatal(*ss->controlResourceSetId == mac->coreset[dl_bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n");
|
||||||
AssertFatal(ss->monitoringSymbolsWithinSlot != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot is null\n");
|
AssertFatal(ss->monitoringSymbolsWithinSlot != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot is null\n");
|
||||||
AssertFatal(ss->monitoringSymbolsWithinSlot->buf != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot->buf is null\n");
|
AssertFatal(ss->monitoringSymbolsWithinSlot->buf != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot->buf is null\n");
|
||||||
mac->SSpace[0][0][ss_id] = ss;
|
mac->SSpace[0][0][ss_id] = ss;
|
||||||
@@ -388,7 +436,7 @@ void config_control_ue(NR_UE_MAC_INST_t *mac){
|
|||||||
for (int css_id = 0; css_id < commonSearchSpaceList->list.count; css_id++) {
|
for (int css_id = 0; css_id < commonSearchSpaceList->list.count; css_id++) {
|
||||||
NR_SearchSpace_t *css = commonSearchSpaceList->list.array[css_id];
|
NR_SearchSpace_t *css = commonSearchSpaceList->list.array[css_id];
|
||||||
AssertFatal(css->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
AssertFatal(css->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
||||||
AssertFatal(*css->controlResourceSetId == mac->coreset[bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n");
|
AssertFatal(*css->controlResourceSetId == mac->coreset[dl_bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n");
|
||||||
AssertFatal(css->searchSpaceId != 0, "css->searchSpaceId is 0\n");
|
AssertFatal(css->searchSpaceId != 0, "css->searchSpaceId is 0\n");
|
||||||
AssertFatal(css->searchSpaceType != NULL, "css->searchSpaceType is null\n");
|
AssertFatal(css->searchSpaceType != NULL, "css->searchSpaceType is null\n");
|
||||||
AssertFatal(css->monitoringSymbolsWithinSlot != NULL, "css->monitoringSymbolsWithinSlot is null\n");
|
AssertFatal(css->monitoringSymbolsWithinSlot != NULL, "css->monitoringSymbolsWithinSlot is null\n");
|
||||||
|
|||||||
@@ -177,6 +177,12 @@ typedef struct {
|
|||||||
NR_ControlResourceSet_t *coreset[MAX_NUM_BWP][FAPI_NR_MAX_CORESET_PER_BWP];
|
NR_ControlResourceSet_t *coreset[MAX_NUM_BWP][FAPI_NR_MAX_CORESET_PER_BWP];
|
||||||
NR_SearchSpace_t *SSpace[MAX_NUM_BWP][FAPI_NR_MAX_CORESET_PER_BWP][FAPI_NR_MAX_SS_PER_CORESET];
|
NR_SearchSpace_t *SSpace[MAX_NUM_BWP][FAPI_NR_MAX_CORESET_PER_BWP][FAPI_NR_MAX_SS_PER_CORESET];
|
||||||
|
|
||||||
|
/*BWP*/
|
||||||
|
// dedicated active DL BWP
|
||||||
|
NR_BWP_Id_t DL_BWP_Id;
|
||||||
|
// dedicated active UL BWP
|
||||||
|
NR_BWP_Id_t UL_BWP_Id;
|
||||||
|
|
||||||
/// Type0-PDCCH seach space
|
/// Type0-PDCCH seach space
|
||||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t type0_pdcch_dci_config;
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t type0_pdcch_dci_config;
|
||||||
uint32_t type0_pdcch_ss_mux_pattern;
|
uint32_t type0_pdcch_ss_mux_pattern;
|
||||||
|
|||||||
@@ -310,6 +310,7 @@ void get_num_re_dmrs(nfapi_nr_ue_pusch_pdu_t *pusch_pdu,
|
|||||||
|
|
||||||
void build_ssb_to_ro_map(NR_ServingCellConfigCommon_t *scc, uint8_t unpaired);
|
void build_ssb_to_ro_map(NR_ServingCellConfigCommon_t *scc, uint8_t unpaired);
|
||||||
|
|
||||||
|
void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, int *dci_format);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/** @}*/
|
/** @}*/
|
||||||
|
|||||||
@@ -69,14 +69,16 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd
|
|||||||
void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, fapi_nr_dl_config_request_t *dl_config, int rnti_type, int ss_id){
|
void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, fapi_nr_dl_config_request_t *dl_config, int rnti_type, int ss_id){
|
||||||
|
|
||||||
uint16_t monitoringSymbolsWithinSlot = 0;
|
uint16_t monitoringSymbolsWithinSlot = 0;
|
||||||
uint8_t bwp_id = 1, coreset_id = 1;
|
uint8_t coreset_id = 1;
|
||||||
int sps = 0;
|
int sps = 0;
|
||||||
def_dci_pdu_rel15 = calloc(1,2*sizeof(dci_pdu_rel15_t));
|
def_dci_pdu_rel15 = calloc(1,2*sizeof(dci_pdu_rel15_t));
|
||||||
AssertFatal(mac->scc != NULL, "scc is null\n");
|
AssertFatal(mac->scc != NULL, "scc is null\n");
|
||||||
|
NR_BWP_Id_t bwp_id = mac->DL_BWP_Id;
|
||||||
NR_ServingCellConfigCommon_t *scc = mac->scc;
|
NR_ServingCellConfigCommon_t *scc = mac->scc;
|
||||||
NR_BWP_DownlinkCommon_t *bwp_Common = mac->DLbwp[bwp_id - 1]->bwp_Common;
|
NR_BWP_DownlinkCommon_t *bwp_Common = mac->DLbwp[bwp_id - 1]->bwp_Common;
|
||||||
NR_BWP_DownlinkCommon_t *initialDownlinkBWP = scc->downlinkConfigCommon->initialDownlinkBWP;
|
NR_BWP_DownlinkCommon_t *initialDownlinkBWP = scc->downlinkConfigCommon->initialDownlinkBWP;
|
||||||
NR_SearchSpace_t *ss = mac->SSpace[bwp_id - 1][coreset_id - 1][ss_id];
|
NR_SearchSpace_t *ss = mac->SSpace[bwp_id - 1][coreset_id - 1][ss_id];
|
||||||
|
long O_carrier_dl = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->offsetToCarrier;
|
||||||
|
|
||||||
// CORESET configuration
|
// CORESET configuration
|
||||||
NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id - 1];
|
NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id - 1];
|
||||||
|
|||||||
@@ -140,7 +140,6 @@ static ssb_list_info_t ssb_list;
|
|||||||
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
|
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
|
||||||
#define DEBUG_EXTRACT_DCI 1
|
#define DEBUG_EXTRACT_DCI 1
|
||||||
|
|
||||||
extern int bwp_id;
|
|
||||||
extern dci_pdu_rel15_t *def_dci_pdu_rel15;
|
extern dci_pdu_rel15_t *def_dci_pdu_rel15;
|
||||||
|
|
||||||
extern void mac_rlc_data_ind (
|
extern void mac_rlc_data_ind (
|
||||||
@@ -2571,16 +2570,17 @@ int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_in
|
|||||||
|
|
||||||
int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, frame_t frame, int slot, dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format){
|
int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, frame_t frame, int slot, dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format){
|
||||||
|
|
||||||
int bwp_id = 1;
|
|
||||||
int mu = 0;
|
int mu = 0;
|
||||||
long k2 = 0;
|
long k2 = 0;
|
||||||
int pucch_res_set_cnt = 0, valid = 0;
|
int pucch_res_set_cnt = 0, valid = 0;
|
||||||
uint16_t frame_tx = 0, slot_tx = 0;
|
uint16_t frame_tx = 0, slot_tx = 0;
|
||||||
bool valid_ptrs_setup = 0;
|
bool valid_ptrs_setup = 0;
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||||
|
NR_BWP_Id_t bwp_id = mac->UL_BWP_Id;
|
||||||
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
||||||
fapi_nr_ul_config_request_t *ul_config = NULL;
|
fapi_nr_ul_config_request_t *ul_config = NULL;
|
||||||
|
long O_carrier_dl = mac->scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->offsetToCarrier;
|
||||||
|
|
||||||
//const uint16_t n_RB_DLBWP = dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP; //make sure this has been set
|
//const uint16_t n_RB_DLBWP = dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP; //make sure this has been set
|
||||||
AssertFatal(mac->DLbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n");
|
AssertFatal(mac->DLbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n");
|
||||||
AssertFatal(mac->ULbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n");
|
AssertFatal(mac->ULbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n");
|
||||||
@@ -2755,6 +2755,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
/* CARRIER_IND */
|
/* CARRIER_IND */
|
||||||
/* SUL_IND_0_1 */
|
/* SUL_IND_0_1 */
|
||||||
/* BANDWIDTH_PART_IND */
|
/* BANDWIDTH_PART_IND */
|
||||||
|
config_bwp_ue(mac, &dci->bwp_indicator.val, &dci_format);
|
||||||
//pusch_config_pdu_0_1->bandwidth_part_ind = dci->bwp_indicator.val;
|
//pusch_config_pdu_0_1->bandwidth_part_ind = dci->bwp_indicator.val;
|
||||||
/* FREQ_DOM_RESOURCE_ASSIGNMENT_UL */
|
/* FREQ_DOM_RESOURCE_ASSIGNMENT_UL */
|
||||||
if (nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_1,NULL,n_RB_ULBWP,0,dci->frequency_domain_assignment.val) < 0)
|
if (nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_1,NULL,n_RB_ULBWP,0,dci->frequency_domain_assignment.val) < 0)
|
||||||
@@ -3542,7 +3543,7 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
|
|||||||
case NR_RNTI_P:
|
case NR_RNTI_P:
|
||||||
case NR_RNTI_SI:
|
case NR_RNTI_SI:
|
||||||
if (mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->controlResourceSetZero) {
|
if (mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->controlResourceSetZero) {
|
||||||
uint8_t bwp_id = 1;
|
NR_BWP_Id_t bwp_id = mac->DL_BWP_Id;
|
||||||
uint8_t coreset_id = 0; // assuming controlResourceSetId is 0 for controlResourceSetZero
|
uint8_t coreset_id = 0; // assuming controlResourceSetId is 0 for controlResourceSetZero
|
||||||
NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id];
|
NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id];
|
||||||
get_coreset_rballoc(coreset->frequencyDomainResources.buf,&N_RB,&start_RB);
|
get_coreset_rballoc(coreset->frequencyDomainResources.buf,&N_RB,&start_RB);
|
||||||
@@ -3931,6 +3932,7 @@ int nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
|
|||||||
// BWP Indicator
|
// BWP Indicator
|
||||||
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
||||||
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
||||||
|
config_bwp_ue(mac, &dci_pdu_rel15->bwp_indicator.val, &dci_format);
|
||||||
// Frequency domain resource assignment
|
// Frequency domain resource assignment
|
||||||
pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
||||||
dci_pdu_rel15->frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->frequency_domain_assignment.nbits)-1);
|
dci_pdu_rel15->frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->frequency_domain_assignment.nbits)-1);
|
||||||
@@ -4021,7 +4023,8 @@ int nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
|
|||||||
// BWP Indicator
|
// BWP Indicator
|
||||||
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
||||||
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
||||||
|
config_bwp_ue(mac, &dci_pdu_rel15->bwp_indicator.val, &dci_format);
|
||||||
|
|
||||||
// Freq domain assignment max 16 bit
|
// Freq domain assignment max 16 bit
|
||||||
fsize = (int)ceil( log2( (N_RB_UL*(N_RB_UL+1))>>1 ) );
|
fsize = (int)ceil( log2( (N_RB_UL*(N_RB_UL+1))>>1 ) );
|
||||||
//pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
//pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
||||||
|
|||||||
Reference in New Issue
Block a user