Enable DMRS config2 for PDSCH and fix bug in the UE phy_procedures_nr_ue
This commit is contained in:
@@ -713,7 +713,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
|
|||||||
// dmrs_Uplink_Config->pusch_dmrs_AdditionalPosition = pusch_dmrs_pos0;
|
// dmrs_Uplink_Config->pusch_dmrs_AdditionalPosition = pusch_dmrs_pos0;
|
||||||
// dmrs_Uplink_Config->pusch_maxLength = pusch_len1;
|
// dmrs_Uplink_Config->pusch_maxLength = pusch_len1;
|
||||||
//-------------------------------------------------//
|
//-------------------------------------------------//
|
||||||
ue->dmrs_DownlinkConfig.pdsch_dmrs_type = pdsch_dmrs_type1;//sfn
|
ue->dmrs_DownlinkConfig.pdsch_dmrs_type = pdsch_dmrs_type2;
|
||||||
ue->dmrs_DownlinkConfig.pdsch_dmrs_AdditionalPosition = pdsch_dmrs_pos0;
|
ue->dmrs_DownlinkConfig.pdsch_dmrs_AdditionalPosition = pdsch_dmrs_pos0;
|
||||||
ue->dmrs_DownlinkConfig.pdsch_maxLength = pdsch_len1;
|
ue->dmrs_DownlinkConfig.pdsch_maxLength = pdsch_len1;
|
||||||
//-------------------------------------------------//
|
//-------------------------------------------------//
|
||||||
|
|||||||
@@ -726,7 +726,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
} else {//pdsch_dmrs_type2
|
} else {//pdsch_dmrs_type2
|
||||||
nushift = delta;
|
nushift = delta;
|
||||||
ue->frame_parms.nushift = nushift>>1;//SFN:fixMe IT MUST BE WITHOUT >>1
|
ue->frame_parms.nushift = nushift;
|
||||||
switch (delta) {
|
switch (delta) {
|
||||||
case 0://port 0,1
|
case 0://port 0,1
|
||||||
fl = filt8_l2;//left interpolation Filter should be fml
|
fl = filt8_l2;//left interpolation Filter should be fml
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
|
|
||||||
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
|
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
|
||||||
if (check_crc((uint8_t*)llrProcBuf,length_dec,harq_process->F,crc_type)) {
|
if (check_crc((uint8_t*)llrProcBuf,length_dec,harq_process->F,crc_type)) {
|
||||||
LOG_D(PHY,"Segment %u CRC OK\n\033[0m",r);
|
LOG_I(PHY,"Segment %u CRC OK\n\033[0m",r);
|
||||||
if (r==0)
|
if (r==0)
|
||||||
for (int i=0;i<10;i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t*)llrProcBuf)[i]);
|
for (int i=0;i<10;i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t*)llrProcBuf)[i]);
|
||||||
|
|
||||||
@@ -598,7 +598,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
ret = no_iteration_ldpc;
|
ret = no_iteration_ldpc;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LOG_D(PHY,"CRC NOK\n\033[0m");
|
LOG_I(PHY,"CRC NOK\n\033[0m");
|
||||||
ret = 1 + dlsch->max_ldpc_iterations;
|
ret = 1 + dlsch->max_ldpc_iterations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
uint32_t llr_offset_symbol;
|
uint32_t llr_offset_symbol;
|
||||||
//uint16_t bundle_L = 2;
|
//uint16_t bundle_L = 2;
|
||||||
uint8_t pilots=0;
|
uint8_t pilots=0;
|
||||||
|
uint8_t config_type = ue->dmrs_DownlinkConfig.pdsch_dmrs_type;
|
||||||
uint16_t n_tx=1, n_rx=1;
|
uint16_t n_tx=1, n_rx=1;
|
||||||
int32_t median[16];
|
int32_t median[16];
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
@@ -373,6 +374,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
pdsch_vars[eNB_id]->pmi_ext,
|
pdsch_vars[eNB_id]->pmi_ext,
|
||||||
symbol,
|
symbol,
|
||||||
pilots,
|
pilots,
|
||||||
|
config_type,
|
||||||
start_rb,
|
start_rb,
|
||||||
nb_rb_pdsch,
|
nb_rb_pdsch,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
@@ -389,7 +391,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
len = (pilots==1)? (nb_rb*6):(nb_rb*12);
|
len = (pilots==1)? ((config_type==pdsch_dmrs_type1)?nb_rb*(12-6*dlsch0_harq->n_dmrs_cdm_groups): nb_rb*(12-4*dlsch0_harq->n_dmrs_cdm_groups)):(nb_rb*12);
|
||||||
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->generic_stat_bis[ue->current_thread_id[nr_tti_rx]][slot]);
|
stop_meas(&ue->generic_stat_bis[ue->current_thread_id[nr_tti_rx]][slot]);
|
||||||
@@ -413,6 +415,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
dlsch,
|
dlsch,
|
||||||
symbol,
|
symbol,
|
||||||
pilots,
|
pilots,
|
||||||
|
len,
|
||||||
nb_rb);
|
nb_rb);
|
||||||
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
@@ -1797,6 +1800,7 @@ void nr_dlsch_scale_channel(int **dl_ch_estimates_ext,
|
|||||||
NR_UE_DLSCH_t **dlsch_ue,
|
NR_UE_DLSCH_t **dlsch_ue,
|
||||||
uint8_t symbol,
|
uint8_t symbol,
|
||||||
uint8_t pilots,
|
uint8_t pilots,
|
||||||
|
uint32_t len,
|
||||||
unsigned short nb_rb)
|
unsigned short nb_rb)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -1806,10 +1810,7 @@ void nr_dlsch_scale_channel(int **dl_ch_estimates_ext,
|
|||||||
unsigned char aatx,aarx;
|
unsigned char aatx,aarx;
|
||||||
__m128i *dl_ch128, ch_amp128;
|
__m128i *dl_ch128, ch_amp128;
|
||||||
|
|
||||||
|
uint32_t nb_rb_0 = len/12 + ((len%12)?1:0);
|
||||||
if (pilots==1){
|
|
||||||
nb_rb = nb_rb>>1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Determine scaling amplitude based the symbol
|
// Determine scaling amplitude based the symbol
|
||||||
|
|
||||||
@@ -1825,7 +1826,7 @@ void nr_dlsch_scale_channel(int **dl_ch_estimates_ext,
|
|||||||
|
|
||||||
dl_ch128=(__m128i *)&dl_ch_estimates_ext[(aatx<<1)+aarx][symbol*nb_rb*12];
|
dl_ch128=(__m128i *)&dl_ch_estimates_ext[(aatx<<1)+aarx][symbol*nb_rb*12];
|
||||||
|
|
||||||
for (rb=0;rb<nb_rb;rb++) {
|
for (rb=0;rb<nb_rb_0;rb++) {
|
||||||
|
|
||||||
dl_ch128[0] = _mm_mulhi_epi16(dl_ch128[0],ch_amp128);
|
dl_ch128[0] = _mm_mulhi_epi16(dl_ch128[0],ch_amp128);
|
||||||
dl_ch128[0] = _mm_slli_epi16(dl_ch128[0],3);
|
dl_ch128[0] = _mm_slli_epi16(dl_ch128[0],3);
|
||||||
@@ -2351,6 +2352,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
unsigned char *pmi_ext,
|
unsigned char *pmi_ext,
|
||||||
unsigned char symbol,
|
unsigned char symbol,
|
||||||
uint8_t pilots,
|
uint8_t pilots,
|
||||||
|
uint8_t config_type,
|
||||||
unsigned short start_rb,
|
unsigned short start_rb,
|
||||||
unsigned short nb_rb_pdsch,
|
unsigned short nb_rb_pdsch,
|
||||||
unsigned char nr_tti_rx,
|
unsigned char nr_tti_rx,
|
||||||
@@ -2367,8 +2369,12 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
|
|
||||||
unsigned char j=0;
|
unsigned char j=0;
|
||||||
|
|
||||||
AssertFatal(frame_parms->nushift ==0 || frame_parms->nushift == 1,
|
if (config_type==pdsch_dmrs_type1)
|
||||||
|
AssertFatal(frame_parms->nushift ==0 || frame_parms->nushift == 1,
|
||||||
"nushift %d is illegal\n",frame_parms->nushift);
|
"nushift %d is illegal\n",frame_parms->nushift);
|
||||||
|
else
|
||||||
|
AssertFatal(frame_parms->nushift ==0 || frame_parms->nushift == 2 || frame_parms->nushift == 4,
|
||||||
|
"nushift %d is illegal\n",frame_parms->nushift);
|
||||||
|
|
||||||
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
||||||
|
|
||||||
@@ -2394,20 +2400,36 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
memcpy((void*)dl_ch0_ext,(void*)dl_ch0,12*sizeof(*dl_ch0_ext));
|
memcpy((void*)dl_ch0_ext,(void*)dl_ch0,12*sizeof(*dl_ch0_ext));
|
||||||
dl_ch0_ext+=12;
|
dl_ch0_ext+=12;
|
||||||
rxF_ext+=12;
|
rxF_ext+=12;
|
||||||
} else {
|
} else {//the symbol contains DMRS
|
||||||
j=0;
|
j=0;
|
||||||
|
if (config_type==pdsch_dmrs_type1){
|
||||||
for (i = (1-frame_parms->nushift);
|
for (i = (1-frame_parms->nushift);
|
||||||
i<12;
|
i<12;
|
||||||
i+=2) {
|
i+=2) {
|
||||||
rxF_ext[j]=rxF[i];
|
rxF_ext[j]=rxF[i];
|
||||||
dl_ch0_ext[j]=dl_ch0[i];
|
dl_ch0_ext[j]=dl_ch0[i];
|
||||||
j++;
|
j++;
|
||||||
|
}
|
||||||
|
dl_ch0_ext+=6;
|
||||||
|
rxF_ext+=6;
|
||||||
|
} else {
|
||||||
|
for (i = (2+frame_parms->nushift);
|
||||||
|
i<6;
|
||||||
|
i++) {
|
||||||
|
rxF_ext[j]=rxF[i];
|
||||||
|
dl_ch0_ext[j]=dl_ch0[i];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
for (i = (8+frame_parms->nushift);
|
||||||
|
i<12;
|
||||||
|
i++) {
|
||||||
|
rxF_ext[j]=rxF[i];
|
||||||
|
dl_ch0_ext[j]=dl_ch0[i];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
dl_ch0_ext+= 8;
|
||||||
|
rxF_ext+= 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dl_ch0_ext+=6;
|
|
||||||
rxF_ext+=6;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dl_ch0+=12;
|
dl_ch0+=12;
|
||||||
|
|||||||
@@ -715,6 +715,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
unsigned char *pmi_ext,
|
unsigned char *pmi_ext,
|
||||||
unsigned char symbol,
|
unsigned char symbol,
|
||||||
uint8_t pilots,
|
uint8_t pilots,
|
||||||
|
uint8_t config_type,
|
||||||
unsigned short start_rb,
|
unsigned short start_rb,
|
||||||
unsigned short nb_pdsch_rb,
|
unsigned short nb_pdsch_rb,
|
||||||
unsigned char nr_tti_rx,
|
unsigned char nr_tti_rx,
|
||||||
@@ -1003,6 +1004,7 @@ void nr_dlsch_scale_channel(int32_t **dl_ch_estimates_ext,
|
|||||||
NR_UE_DLSCH_t **dlsch_ue,
|
NR_UE_DLSCH_t **dlsch_ue,
|
||||||
uint8_t symbol,
|
uint8_t symbol,
|
||||||
uint8_t start_symbol,
|
uint8_t start_symbol,
|
||||||
|
uint32_t len,
|
||||||
uint16_t nb_rb);
|
uint16_t nb_rb);
|
||||||
|
|
||||||
/** \brief This is the top-level entry point for DLSCH decoding in UE. It should be replicated on several
|
/** \brief This is the top-level entry point for DLSCH decoding in UE. It should be replicated on several
|
||||||
|
|||||||
@@ -705,6 +705,8 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
|||||||
int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_id, PDSCH_t pdsch, NR_UE_DLSCH_t *dlsch0, NR_UE_DLSCH_t *dlsch1) {
|
int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_id, PDSCH_t pdsch, NR_UE_DLSCH_t *dlsch0, NR_UE_DLSCH_t *dlsch1) {
|
||||||
|
|
||||||
int nr_tti_rx = proc->nr_tti_rx;
|
int nr_tti_rx = proc->nr_tti_rx;
|
||||||
|
int nr_frame_rx = proc->frame_rx;//LOG_M
|
||||||
|
char filename[100];//LOG_M
|
||||||
int m;
|
int m;
|
||||||
int i_mod,eNB_id_i,dual_stream_UE;
|
int i_mod,eNB_id_i,dual_stream_UE;
|
||||||
int first_symbol_flag=0;
|
int first_symbol_flag=0;
|
||||||
@@ -728,15 +730,23 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_
|
|||||||
// do channel estimation for first DMRS only
|
// do channel estimation for first DMRS only
|
||||||
for (m = s0; m < 3; m++) {
|
for (m = s0; m < 3; m++) {
|
||||||
if (((1<<m)&dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos) > 0) {
|
if (((1<<m)&dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos) > 0) {
|
||||||
nr_pdsch_channel_estimation(ue,
|
for (uint8_t aatx=0; aatx<1; aatx++) {//for MIMO Config: it shall loop over no_layers
|
||||||
|
nr_pdsch_channel_estimation(ue,
|
||||||
0 /*eNB_id*/,
|
0 /*eNB_id*/,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
0 /*p*/,
|
aatx /*p*/,
|
||||||
m,
|
m,
|
||||||
ue->frame_parms.first_carrier_offset+(BWPStart + pdsch_start_rb)*12,
|
ue->frame_parms.first_carrier_offset+(BWPStart + pdsch_start_rb)*12,
|
||||||
pdsch_nb_rb);
|
pdsch_nb_rb);
|
||||||
LOG_D(PHY,"Channel Estimation in symbol %d\n",m);
|
///LOG_M: the channel estimation
|
||||||
break;
|
LOG_D(PHY,"PDSCH Channel estimation gNB id %d, PDSCH antenna port %d, slot %d, symbol %d\n",0,aatx,nr_tti_rx,m);
|
||||||
|
for (uint8_t aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) {
|
||||||
|
sprintf(filename,"PDSCH_CHANNEL_frame%d_slot%d_sym%d_port%d_rx%d.m", nr_frame_rx, nr_tti_rx, m, aatx,aarx);//LOG_M
|
||||||
|
int **dl_ch_estimates = ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][0]->dl_ch_estimates;
|
||||||
|
//LOG_M(filename,"channel_F",&dl_ch_estimates[aatx*ue->frame_parms.nb_antennas_rx+aarx][ue->frame_parms.ofdm_symbol_size*m],ue->frame_parms.ofdm_symbol_size, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (m = s0; m < (s1 + s0); m++) {
|
for (m = s0; m < (s1 + s0); m++) {
|
||||||
@@ -1039,7 +1049,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
harq_pid,
|
harq_pid,
|
||||||
pdsch==PDSCH?1:0,
|
pdsch==PDSCH?1:0,
|
||||||
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
||||||
LOG_T(PHY,"UE_DLSCH_PARALLELISATION is defined, ret = %d\n", ret);
|
LOG_I(PHY,"UE_DLSCH_PARALLELISATION is defined, ret = %d\n", ret);
|
||||||
#else
|
#else
|
||||||
ret = nr_dlsch_decoding(ue,
|
ret = nr_dlsch_decoding(ue,
|
||||||
pdsch_vars->llr[0],
|
pdsch_vars->llr[0],
|
||||||
@@ -1052,7 +1062,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
harq_pid,
|
harq_pid,
|
||||||
pdsch==PDSCH?1:0,
|
pdsch==PDSCH?1:0,
|
||||||
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
||||||
LOG_T(PHY,"UE_DLSCH_PARALLELISATION is NOT defined, ret = %d\n", ret);
|
LOG_I(PHY,"UE_DLSCH_PARALLELISATION is NOT defined, ret = %d\n", ret);
|
||||||
//printf("start cW0 dlsch decoding\n");
|
//printf("start cW0 dlsch decoding\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -815,7 +815,7 @@ void nr_generate_Msg2(module_id_t module_idP,
|
|||||||
pdsch_pdu_rel15->nrOfLayers = 1;
|
pdsch_pdu_rel15->nrOfLayers = 1;
|
||||||
pdsch_pdu_rel15->transmissionScheme = 0;
|
pdsch_pdu_rel15->transmissionScheme = 0;
|
||||||
pdsch_pdu_rel15->refPoint = 0;
|
pdsch_pdu_rel15->refPoint = 0;
|
||||||
pdsch_pdu_rel15->dmrsConfigType = 0;
|
pdsch_pdu_rel15->dmrsConfigType = 1;
|
||||||
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
||||||
pdsch_pdu_rel15->SCID = 0;
|
pdsch_pdu_rel15->SCID = 0;
|
||||||
pdsch_pdu_rel15->numDmrsCdmGrpsNoData = 2;
|
pdsch_pdu_rel15->numDmrsCdmGrpsNoData = 2;
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
|
|||||||
pdsch_pdu_rel15->transmissionScheme = 0;
|
pdsch_pdu_rel15->transmissionScheme = 0;
|
||||||
pdsch_pdu_rel15->refPoint = 0; // Point A
|
pdsch_pdu_rel15->refPoint = 0; // Point A
|
||||||
|
|
||||||
pdsch_pdu_rel15->dmrsConfigType = 0; // Type 1 by default for InitialBWP
|
pdsch_pdu_rel15->dmrsConfigType = 1; // Type 1 by default for InitialBWP
|
||||||
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
||||||
pdsch_pdu_rel15->SCID = 0;
|
pdsch_pdu_rel15->SCID = 0;
|
||||||
pdsch_pdu_rel15->numDmrsCdmGrpsNoData = 1;
|
pdsch_pdu_rel15->numDmrsCdmGrpsNoData = 1;
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
|
|||||||
|
|
||||||
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup));
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup));
|
||||||
|
|
||||||
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type=NULL;
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type=calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type));
|
||||||
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->maxLength=NULL;
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->maxLength=NULL;
|
||||||
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->scramblingID0=NULL;
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->scramblingID0=NULL;
|
||||||
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->scramblingID1=NULL;
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->scramblingID1=NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user