mac: harmonize csi_payload_t struct
1. Reuse csi_payload_t struct to hold CSI report payload on PUSCH and PUCCH PDU. 2. Move the struct to fapi header file
This commit is contained in:
committed by
francescomani
parent
d1febb5fc2
commit
cecfec82a8
@@ -310,10 +310,8 @@ typedef struct {
|
||||
NR_PUCCH_Resource_t *pucch_resource;
|
||||
uint32_t ack_payload;
|
||||
uint8_t sr_payload;
|
||||
uint64_t csi_part1_payload;
|
||||
uint64_t csi_part2_payload;
|
||||
nfapi_nr_ue_csi_payload_t csi_payload;
|
||||
int n_sr;
|
||||
int n_csi;
|
||||
int n_harq;
|
||||
int n_CCE;
|
||||
int N_CCE;
|
||||
@@ -490,13 +488,6 @@ typedef struct {
|
||||
A_SEQUENCE_OF(NR_SearchSpace_t) list_SS;
|
||||
} NR_BWP_PDCCH_t;
|
||||
|
||||
typedef struct csi_payload {
|
||||
uint64_t part1_payload;
|
||||
uint64_t part2_payload;
|
||||
int p1_bits;
|
||||
int p2_bits;
|
||||
} csi_payload_t;
|
||||
|
||||
typedef enum {
|
||||
WIDEBAND_ON_PUCCH,
|
||||
SUBBAND_ON_PUCCH,
|
||||
|
||||
@@ -124,7 +124,7 @@ void release_mac_configuration(NR_UE_MAC_INST_t *mac,
|
||||
void nr_ue_ul_scheduler(NR_UE_MAC_INST_t *mac, nr_uplink_indication_t *ul_info);
|
||||
void nr_ue_dl_scheduler(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *dl_info);
|
||||
|
||||
csi_payload_t nr_ue_aperiodic_csi_reporting(NR_UE_MAC_INST_t *mac, dci_field_t csi_request, int tda, long *K2);
|
||||
nfapi_nr_ue_csi_payload_t nr_ue_aperiodic_csi_reporting(NR_UE_MAC_INST_t *mac, dci_field_t csi_request, int tda, long *K2);
|
||||
|
||||
nr_dci_format_t nr_ue_process_dci_indication_pdu(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, fapi_nr_dci_indication_pdu_t *dci);
|
||||
|
||||
@@ -139,7 +139,7 @@ bool trigger_periodic_scheduling_request(NR_UE_MAC_INST_t *mac,
|
||||
|
||||
int nr_get_csi_measurements(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, PUCCH_sched_t *pucch);
|
||||
|
||||
csi_payload_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
|
||||
nfapi_nr_ue_csi_payload_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
|
||||
int csi_report_id,
|
||||
CSI_mapping_t mapping_type,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig);
|
||||
@@ -330,7 +330,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
NR_tda_info_t *tda_info,
|
||||
nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
|
||||
dci_pdu_rel15_t *dci,
|
||||
csi_payload_t *csi_report,
|
||||
nfapi_nr_ue_csi_payload_t *csi_report,
|
||||
RAR_grant_t *rar_grant,
|
||||
rnti_t rnti,
|
||||
int ss_type,
|
||||
|
||||
@@ -632,7 +632,7 @@ static int nr_ue_process_dci_ul_01(NR_UE_MAC_INST_t *mac,
|
||||
|
||||
/* CSI_REQUEST */
|
||||
long csi_K2 = -1;
|
||||
csi_payload_t csi_report = {0};
|
||||
nfapi_nr_ue_csi_payload_t csi_report = {0};
|
||||
if (dci->csi_request.nbits > 0 && dci->csi_request.val > 0)
|
||||
csi_report = nr_ue_aperiodic_csi_reporting(mac, dci->csi_request, dci->time_domain_assignment.val, &csi_K2);
|
||||
|
||||
@@ -1609,7 +1609,7 @@ int nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
||||
pucch_pdu->second_hop_prb = pucchres->secondHopPRB!= NULL ? *pucchres->secondHopPRB : 0;
|
||||
pucch_pdu->prb_size = 1; // format 0 or 1
|
||||
|
||||
int n_uci = pucch->n_sr + pucch->n_harq + pucch->n_csi;
|
||||
int n_uci = pucch->n_sr + pucch->n_harq + pucch->csi_payload.p1_bits;
|
||||
if (n_uci > (sizeof(uint64_t) * 8)) {
|
||||
LOG_E(NR_MAC, "PUCCH number of UCI bits exceeds payload size\n");
|
||||
return -1;
|
||||
@@ -1651,14 +1651,15 @@ int nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
||||
pucch_pdu->dmrs_scrambling_id = id0 != NULL ? *id0 : mac->physCellId;
|
||||
pucch_pdu->prb_size = compute_pucch_prb_size(2,
|
||||
pucchres->format.choice.format2->nrofPRBs,
|
||||
pucch->n_csi,
|
||||
pucch->csi_payload.p1_bits,
|
||||
pucch->n_harq,
|
||||
pucch->n_sr,
|
||||
pucch_Config->format2->choice.setup->maxCodeRate,
|
||||
2,
|
||||
pucchres->format.choice.format2->nrofSymbols,
|
||||
8);
|
||||
pucch_pdu->payload = (pucch->csi_part1_payload << (pucch->n_harq + pucch->n_sr)) | (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
pucch_pdu->payload = (pucch->csi_payload.part1_payload << (pucch->n_harq + pucch->n_sr))
|
||||
| (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
break;
|
||||
case NR_PUCCH_Resource__format_PR_format3 :
|
||||
pucch_pdu->format_type = 3;
|
||||
@@ -1686,14 +1687,15 @@ int nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
||||
}
|
||||
pucch_pdu->prb_size = compute_pucch_prb_size(3,
|
||||
pucchres->format.choice.format3->nrofPRBs,
|
||||
pucch->n_csi,
|
||||
pucch->csi_payload.p1_bits,
|
||||
pucch->n_harq,
|
||||
pucch->n_sr,
|
||||
pucch_Config->format3->choice.setup->maxCodeRate,
|
||||
2 - pucch_pdu->pi_2bpsk,
|
||||
pucchres->format.choice.format3->nrofSymbols - f3_dmrs_symbols,
|
||||
12);
|
||||
pucch_pdu->payload = (pucch->csi_part1_payload << (pucch->n_harq + pucch->n_sr)) | (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
pucch_pdu->payload = (pucch->csi_payload.part1_payload << (pucch->n_harq + pucch->n_sr))
|
||||
| (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
break;
|
||||
case NR_PUCCH_Resource__format_PR_format4 :
|
||||
pucch_pdu->format_type = 4;
|
||||
@@ -1711,7 +1713,8 @@ int nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
||||
pucch_pdu->pi_2bpsk = pucchfmt->pi2BPSK!= NULL ? 1 : 0;
|
||||
pucch_pdu->add_dmrs_flag = pucchfmt->additionalDMRS!= NULL ? 1 : 0;
|
||||
}
|
||||
pucch_pdu->payload = (pucch->csi_part1_payload << (pucch->n_harq + pucch->n_sr)) | (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
pucch_pdu->payload = (pucch->csi_payload.part1_payload << (pucch->n_harq + pucch->n_sr))
|
||||
| (pucch->sr_payload << pucch->n_harq) | pucch->ack_payload;
|
||||
break;
|
||||
default :
|
||||
LOG_E(NR_MAC, "Undefined PUCCH format \n");
|
||||
@@ -2152,8 +2155,8 @@ void merge_resources(PUCCH_sched_t *res, int num_res, NR_PUCCH_Config_t *pucch_C
|
||||
case NR_PUCCH_Resource__format_PR_format2:
|
||||
case NR_PUCCH_Resource__format_PR_format4:
|
||||
case NR_PUCCH_Resource__format_PR_format3:
|
||||
if (res[i + 1].n_csi > 0) {
|
||||
AssertFatal(res[i].n_csi == 0, "Multiplexing multiple CSI report in a single PUCCH not supported yet\n");
|
||||
if (res[i + 1].csi_payload.p1_bits > 0) {
|
||||
AssertFatal(res[i].csi_payload.p1_bits == 0, "Multiplexing multiple CSI report in a single PUCCH not supported yet\n");
|
||||
AssertFatal(res[i].n_harq > 0 && res[i + 1].n_harq == 0,
|
||||
"There is CSI in next F2 or above resource, since there is no CSI in current one, we expect HARQ in "
|
||||
"there and not in next\n");
|
||||
@@ -2166,8 +2169,8 @@ void merge_resources(PUCCH_sched_t *res, int num_res, NR_PUCCH_Config_t *pucch_C
|
||||
res[i].n_sr = res[i + 1].n_sr;
|
||||
res[i].sr_payload = res[i + 1].sr_payload;
|
||||
}
|
||||
res[i].n_csi = res[i + 1].n_csi;
|
||||
res[i].csi_part1_payload = res[i + 1].csi_part1_payload;
|
||||
res[i].csi_payload.p1_bits = res[i + 1].csi_payload.p1_bits;
|
||||
res[i].csi_payload.part1_payload = res[i + 1].csi_payload.part1_payload;
|
||||
res[i + 1] = res[i];
|
||||
res[i] = empty;
|
||||
} else {
|
||||
@@ -2188,8 +2191,8 @@ void merge_resources(PUCCH_sched_t *res, int num_res, NR_PUCCH_Config_t *pucch_C
|
||||
res[i] = empty;
|
||||
}
|
||||
}
|
||||
} else if (res[i].n_csi > 0) {
|
||||
AssertFatal(res[i + 1].n_csi == 0, "Multiplexing multiple CSI report in a single PUCCH not supported yet\n");
|
||||
} else if (res[i].csi_payload.p1_bits > 0) {
|
||||
AssertFatal(res[i + 1].csi_payload.p1_bits == 0, "Multiplexing multiple CSI report in a single PUCCH not supported yet\n");
|
||||
AssertFatal(res[i + 1].n_harq > 0 && res[i].n_harq == 0,
|
||||
"There is CSI in next F2 or above resource, since there is no CSI in current one, we expect HARQ in "
|
||||
"there and not in next\n");
|
||||
@@ -2202,8 +2205,8 @@ void merge_resources(PUCCH_sched_t *res, int num_res, NR_PUCCH_Config_t *pucch_C
|
||||
res[i + 1].n_sr = res[i].n_sr;
|
||||
res[i + 1].sr_payload = res[i].sr_payload;
|
||||
}
|
||||
res[i + 1].n_csi = res[i].n_csi;
|
||||
res[i + 1].csi_part1_payload = res[i].csi_part1_payload;
|
||||
res[i + 1].csi_payload.p1_bits = res[i].csi_payload.p1_bits;
|
||||
res[i + 1].csi_payload.part1_payload = res[i].csi_payload.part1_payload;
|
||||
res[i] = empty;
|
||||
} else {
|
||||
if (res[i + 1].n_sr > 0) {
|
||||
@@ -2701,10 +2704,10 @@ static int compare_ssb_sinr(const void *a, const void *b)
|
||||
return mb->ssb_sinr_dB - ma->ssb_sinr_dB;
|
||||
}
|
||||
|
||||
static csi_payload_t get_ssb_sinr_payload(NR_UE_MAC_INST_t *mac,
|
||||
const struct NR_CSI_ReportConfig *csi_reportconfig,
|
||||
const NR_CSI_ResourceConfigId_t csi_ResourceConfigId,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
static nfapi_nr_ue_csi_payload_t get_ssb_sinr_payload(NR_UE_MAC_INST_t *mac,
|
||||
const struct NR_CSI_ReportConfig *csi_reportconfig,
|
||||
const NR_CSI_ResourceConfigId_t csi_ResourceConfigId,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
{
|
||||
int nb_ssb = 0; // nb of ssb in the resource
|
||||
int nb_meas = 0; // nb of ssb to report measurements on
|
||||
@@ -2775,9 +2778,9 @@ static csi_payload_t get_ssb_sinr_payload(NR_UE_MAC_INST_t *mac,
|
||||
break; // resource found
|
||||
}
|
||||
}
|
||||
int max_bits = sizeof(((csi_payload_t *)0)->part1_payload) * 8;
|
||||
int max_bits = sizeof(((nfapi_nr_ue_csi_payload_t *)0)->part1_payload) * 8;
|
||||
AssertFatal(bits <= max_bits, "Not supporting CSI report with more than %d bits (payload: %d bits)\n", max_bits, bits);
|
||||
csi_payload_t csi = {.part1_payload = temp_payload, .part2_payload = 0, .p1_bits = bits, csi.p2_bits = 0};
|
||||
nfapi_nr_ue_csi_payload_t csi = {.part1_payload = temp_payload, .part2_payload = 0, .p1_bits = bits, csi.p2_bits = 0};
|
||||
return csi;
|
||||
}
|
||||
|
||||
@@ -2800,7 +2803,7 @@ static uint8_t get_rsrp_diff_index(int best_rsrp, int current_rsrp)
|
||||
return (diff>>1);
|
||||
}
|
||||
|
||||
static csi_payload_t get_ssb_rsrp_payload(NR_UE_MAC_INST_t *mac,
|
||||
static nfapi_nr_ue_csi_payload_t get_ssb_rsrp_payload(NR_UE_MAC_INST_t *mac,
|
||||
const struct NR_CSI_ReportConfig *csi_reportconfig,
|
||||
const NR_CSI_ResourceConfigId_t csi_ResourceConfigId,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
@@ -2875,14 +2878,14 @@ static csi_payload_t get_ssb_rsrp_payload(NR_UE_MAC_INST_t *mac,
|
||||
break; // resource found
|
||||
}
|
||||
}
|
||||
int max_bits = sizeof(((csi_payload_t *)0)->part1_payload) * 8;
|
||||
int max_bits = sizeof(((nfapi_nr_ue_csi_payload_t *)0)->part1_payload) * 8;
|
||||
AssertFatal(bits <= max_bits, "Not supporting CSI report with more than %d bits (payload: %d bits)\n", max_bits, bits);
|
||||
|
||||
csi_payload_t csi = {.part1_payload = temp_payload, .part2_payload = 0, .p1_bits = bits, .p2_bits = 0};
|
||||
nfapi_nr_ue_csi_payload_t csi = {.part1_payload = temp_payload, .part2_payload = 0, .p1_bits = bits, .p2_bits = 0};
|
||||
return csi;
|
||||
}
|
||||
|
||||
static csi_payload_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
|
||||
static nfapi_nr_ue_csi_payload_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
|
||||
const struct NR_CSI_ReportConfig *csi_reportconfig,
|
||||
const NR_CSI_ResourceConfigId_t csi_ResourceConfigId,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig,
|
||||
@@ -2954,11 +2957,11 @@ static csi_payload_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
|
||||
}
|
||||
}
|
||||
AssertFatal(p1_bits <= 32 && p2_bits <= 32, "Not supporting CSI report with more than 32 bits\n");
|
||||
csi_payload_t csi = {.part1_payload = temp_payload_1, .part2_payload = temp_payload_2, .p1_bits = p1_bits, csi.p2_bits = p2_bits};
|
||||
nfapi_nr_ue_csi_payload_t csi = {.part1_payload = temp_payload_1, .part2_payload = temp_payload_2, .p1_bits = p1_bits, csi.p2_bits = p2_bits};
|
||||
return csi;
|
||||
}
|
||||
|
||||
static csi_payload_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
|
||||
static nfapi_nr_ue_csi_payload_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
|
||||
const struct NR_CSI_ReportConfig *csi_reportconfig,
|
||||
const NR_CSI_ResourceConfigId_t csi_ResourceConfigId,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
@@ -3007,17 +3010,17 @@ static csi_payload_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
|
||||
}
|
||||
}
|
||||
AssertFatal(n_bits <= 32, "Not supporting CSI report with more than 32 bits\n");
|
||||
csi_payload_t csi = {.part1_payload = temp_payload, .p1_bits = n_bits, csi.p2_bits = 0};
|
||||
nfapi_nr_ue_csi_payload_t csi = {.part1_payload = temp_payload, .p1_bits = n_bits, csi.p2_bits = 0};
|
||||
return csi;
|
||||
}
|
||||
|
||||
csi_payload_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
|
||||
int csi_report_id,
|
||||
CSI_mapping_t mapping_type,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
nfapi_nr_ue_csi_payload_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
|
||||
int csi_report_id,
|
||||
CSI_mapping_t mapping_type,
|
||||
const NR_CSI_MeasConfig_t *csi_MeasConfig)
|
||||
{
|
||||
AssertFatal(csi_MeasConfig->csi_ReportConfigToAddModList->list.count > 0,"No CSI Report configuration available\n");
|
||||
csi_payload_t csi = {0};
|
||||
nfapi_nr_ue_csi_payload_t csi = {0};
|
||||
struct NR_CSI_ReportConfig *csi_reportconfig = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
|
||||
NR_CSI_ResourceConfigId_t csi_ResourceConfigId = csi_reportconfig->resourcesForChannelMeasurement;
|
||||
if (csi_reportconfig->ext2 && csi_reportconfig->ext2->reportQuantity_r16) {
|
||||
|
||||
@@ -353,7 +353,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
NR_tda_info_t *tda_info,
|
||||
nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
|
||||
dci_pdu_rel15_t *dci,
|
||||
csi_payload_t *csi_report,
|
||||
nfapi_nr_ue_csi_payload_t *csi_report,
|
||||
RAR_grant_t *rar_grant,
|
||||
rnti_t rnti,
|
||||
int ss_type,
|
||||
@@ -534,10 +534,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
pusch_config_pdu->ulsch_indicator = dci->ulsch_indicator;
|
||||
if (dci->csi_request.nbits > 0 && dci->csi_request.val > 0) {
|
||||
AssertFatal(csi_report, "CSI report needs to be present in case of CSI request\n");
|
||||
pusch_config_pdu->pusch_uci.csi_part1_bit_length = csi_report->p1_bits;
|
||||
pusch_config_pdu->pusch_uci.csi_part1_payload = csi_report->part1_payload;
|
||||
pusch_config_pdu->pusch_uci.csi_part2_bit_length = csi_report->p2_bits;
|
||||
pusch_config_pdu->pusch_uci.csi_part2_payload = csi_report->part2_payload;
|
||||
pusch_config_pdu->pusch_uci.csi_payload = *csi_report;
|
||||
AssertFatal(pusch_Config && pusch_Config->uci_OnPUSCH, "UCI on PUSCH need to be configured\n");
|
||||
NR_UCI_OnPUSCH_t *onPusch = pusch_Config->uci_OnPUSCH->choice.setup;
|
||||
AssertFatal(onPusch &&
|
||||
@@ -546,17 +543,17 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
"Only semistatic beta offset is supported\n");
|
||||
NR_BetaOffsets_t *beta_offsets = onPusch->betaOffsets->choice.semiStatic;
|
||||
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi1 = pusch_config_pdu->pusch_uci.csi_part1_bit_length < 12 ?
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi1 = pusch_config_pdu->pusch_uci.csi_payload.p1_bits < 12 ?
|
||||
*beta_offsets->betaOffsetCSI_Part1_Index1 :
|
||||
*beta_offsets->betaOffsetCSI_Part1_Index2;
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi2 = pusch_config_pdu->pusch_uci.csi_part2_bit_length < 12 ?
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi2 = pusch_config_pdu->pusch_uci.csi_payload.p2_bits < 12 ?
|
||||
*beta_offsets->betaOffsetCSI_Part2_Index1 :
|
||||
*beta_offsets->betaOffsetCSI_Part2_Index2;
|
||||
pusch_config_pdu->pusch_uci.alpha_scaling = onPusch->scaling;
|
||||
}
|
||||
else {
|
||||
pusch_config_pdu->pusch_uci.csi_part1_bit_length = 0;
|
||||
pusch_config_pdu->pusch_uci.csi_part2_bit_length = 0;
|
||||
pusch_config_pdu->pusch_uci.csi_payload.p1_bits = 0;
|
||||
pusch_config_pdu->pusch_uci.csi_payload.p2_bits = 0;
|
||||
}
|
||||
|
||||
pusch_config_pdu->pusch_uci.harq_ack_bit_length = 0;
|
||||
@@ -864,13 +861,13 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
return 0;
|
||||
}
|
||||
|
||||
csi_payload_t nr_ue_aperiodic_csi_reporting(NR_UE_MAC_INST_t *mac, dci_field_t csi_request, int tda, long *k2)
|
||||
nfapi_nr_ue_csi_payload_t nr_ue_aperiodic_csi_reporting(NR_UE_MAC_INST_t *mac, dci_field_t csi_request, int tda, long *k2)
|
||||
{
|
||||
NR_CSI_AperiodicTriggerStateList_t *aperiodicTriggerStateList = mac->sc_info.aperiodicTriggerStateList;
|
||||
AssertFatal(aperiodicTriggerStateList, "Received CSI request via DCI but aperiodicTriggerStateList is not present\n");
|
||||
int n_states = aperiodicTriggerStateList->list.count;
|
||||
int n_ts = csi_request.nbits;
|
||||
csi_payload_t csi = {0};
|
||||
nfapi_nr_ue_csi_payload_t csi = {0};
|
||||
AssertFatal(n_states <= ((1 << n_ts) - 1), "Case of subselection indication of trigger states not supported yet\n");
|
||||
int num_trig = 0;
|
||||
for (int i = 0; i < n_ts; i++) {
|
||||
@@ -1791,9 +1788,9 @@ static bool schedule_uci_on_pusch(NR_UE_MAC_INST_t *mac,
|
||||
LOG_E(NR_MAC, "UCI on PUSCH need to be configured to schedule UCI on PUSCH\n");
|
||||
}
|
||||
}
|
||||
if (pusch_pdu->pusch_uci.csi_part1_bit_length == 0 && pusch_pdu->pusch_uci.csi_part2_bit_length == 0) {
|
||||
if (pusch_pdu->pusch_uci.csi_payload.p1_bits == 0 && pusch_pdu->pusch_uci.csi_payload.p1_bits == 0) {
|
||||
// To support this we would need to shift some bits into CSI part2 -> need to change the logic
|
||||
AssertFatal(pucch->n_csi == 0, "Multiplexing periodic CSI on PUSCH not supported\n");
|
||||
AssertFatal(pucch->csi_payload.p1_bits == 0, "Multiplexing periodic CSI on PUSCH not supported\n");
|
||||
}
|
||||
|
||||
release_ul_config(ulcfg_pdu, false);
|
||||
@@ -1845,14 +1842,14 @@ static void nr_ue_pucch_scheduler(NR_UE_MAC_INST_t *mac, frame_t frame, int slot
|
||||
}
|
||||
|
||||
for (int j = 0; j < num_res; j++) {
|
||||
if (pucch[j].n_harq + pucch[j].n_sr + pucch[j].n_csi != 0) {
|
||||
if (pucch[j].n_harq + pucch[j].n_sr + pucch[j].csi_payload.p1_bits != 0) {
|
||||
LOG_D(NR_MAC,
|
||||
"%d.%d configure pucch, O_ACK %d, O_SR %d, O_CSI %d\n",
|
||||
frame,
|
||||
slot,
|
||||
pucch[j].n_harq,
|
||||
pucch[j].n_sr,
|
||||
pucch[j].n_csi);
|
||||
pucch[j].csi_payload.p1_bits);
|
||||
|
||||
// checking if we need to schedule pucch[j] on PUSCH
|
||||
if (schedule_uci_on_pusch(mac, frame, slot, &pucch[j], mac->current_UL_BWP))
|
||||
|
||||
Reference in New Issue
Block a user