avoid processing PUCCH2 without polar if declared missed detection
This commit is contained in:
@@ -1087,7 +1087,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
pucch2_lev += signal_energy_nodc(rp[aa][symb], nb_re_pucch);
|
||||
}
|
||||
}
|
||||
int decoderState=2;
|
||||
|
||||
pucch2_lev /= Prx * Prx * pucch_pdu->nr_of_symbols;
|
||||
int pucch2_levdB = dB_fixed(pucch2_lev);
|
||||
int scaling = 0;
|
||||
@@ -1100,10 +1100,8 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
else if (pucch2_levdB > 54)
|
||||
scaling = 1;
|
||||
|
||||
if (pucch2_levdB < gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres/10))
|
||||
decoderState=1;
|
||||
LOG_D(PHY,
|
||||
"%d.%d Decoding pucch2 for %d symbols, %d PRB, nb_harq %d, nb_sr %d, nb_csi %d/%d, pucch2_lev %d dB (scaling %d), n0+thres %d decoderState %d\n",
|
||||
"%d.%d Decoding pucch2 for %d symbols, %d PRB, nb_harq %d, nb_sr %d, nb_csi %d/%d, pucch2_lev %d dB (scaling %d)\n",
|
||||
frame,
|
||||
slot,
|
||||
pucch_pdu->nr_of_symbols,
|
||||
@@ -1113,9 +1111,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
pucch_pdu->bit_len_csi_part1,
|
||||
pucch_pdu->bit_len_csi_part2,
|
||||
pucch2_levdB,
|
||||
scaling,
|
||||
gNB->measurements.n0_subband_power_avg_dB+(gNB->pucch0_thres/10),
|
||||
decoderState);
|
||||
scaling);
|
||||
|
||||
int nc_group_size=1; // 2 PRB
|
||||
int ngroup = prb_size_ext/nc_group_size/2;
|
||||
@@ -1370,7 +1366,11 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
|
||||
uint64_t decodedPayload[2];
|
||||
uint8_t corr_dB;
|
||||
if (nb_bit < 12) { // short blocklength case
|
||||
int decoderState = 2;
|
||||
if (pucch2_levdB < gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10))
|
||||
decoderState = 1; // assuming missed detection, only attempt to decode for polar case (with CRC)
|
||||
LOG_D(PHY, "n0+thres %d decoderState %d\n", gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10), decoderState);
|
||||
if (nb_bit < 12 && decoderState == 2) { // short blocklength case
|
||||
simde__m256i *rp_re[Prx2][2];
|
||||
simde__m256i *rp2_re[Prx2][2];
|
||||
simde__m256i *rp_im[Prx2][2];
|
||||
@@ -1386,8 +1386,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
simde__m256i prod_re[Prx2],prod_im[Prx2];
|
||||
uint64_t corr=0;
|
||||
int cw_ML=0;
|
||||
|
||||
|
||||
|
||||
for (int cw=0;cw<1<<nb_bit;cw++) {
|
||||
#ifdef DEBUG_NR_PUCCH_RX
|
||||
printf("cw %d:",cw);
|
||||
@@ -1489,9 +1488,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
printf("slot %d PUCCH2 cw_ML %d, metric %d \n",slot,cw_ML,corr_dB);
|
||||
#endif
|
||||
decodedPayload[0]=(uint64_t)cw_ML;
|
||||
}
|
||||
else { // polar coded case
|
||||
|
||||
} else if (nb_bit >= 12) { // polar coded case
|
||||
simde__m64 *rp_re[Prx2][2];
|
||||
simde__m64 *rp2_re[Prx2][2];
|
||||
simde__m64 *rp_im[Prx2][2];
|
||||
|
||||
@@ -1119,6 +1119,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id,
|
||||
}
|
||||
/* phy-test has hardcoded allocation, so no use to handle CSI reports */
|
||||
if ((uci_234->pduBitmap >> 2) & 0x01 && !get_softmodem_params()->phy_test) {
|
||||
LOG_D(NR_MAC, "CSI CRC %d\n", uci_234->csi_part1.csi_part1_crc);
|
||||
if (uci_234->csi_part1.csi_part1_crc != 1) {
|
||||
// API to parse the csi report and store it into sched_ctrl
|
||||
extract_pucch_csi_report(csi_MeasConfig, uci_234, frame, slot, UE, nrmac->common_channels->ServingCellConfigCommon);
|
||||
|
||||
Reference in New Issue
Block a user