Reverted multi RACH process
This commit is contained in:
@@ -189,7 +189,7 @@ void rx_nr_prach_ru(RU_t *ru,
|
|||||||
int16_t *prach2;
|
int16_t *prach2;
|
||||||
|
|
||||||
if (prach_sequence_length == 0) {
|
if (prach_sequence_length == 0) {
|
||||||
LOG_I(PHY,"PRACH (ru %d) in %d.%d, format %d, msg1_frequencyStart %d\n",
|
LOG_D(PHY,"PRACH (ru %d) in %d.%d, format %d, msg1_frequencyStart %d\n",
|
||||||
ru->idx,frame,slot2,prachFormat,msg1_frequencystart);
|
ru->idx,frame,slot2,prachFormat,msg1_frequencystart);
|
||||||
AssertFatal(prachFormat<4,"Illegal prach format %d for length 839\n",prachFormat);
|
AssertFatal(prachFormat<4,"Illegal prach format %d for length 839\n",prachFormat);
|
||||||
switch (prachFormat) {
|
switch (prachFormat) {
|
||||||
@@ -212,7 +212,7 @@ void rx_nr_prach_ru(RU_t *ru,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LOG_I(PHY,"PRACH (ru %d) in %d.%d, format %s, msg1_frequencyStart %d,startSymbol %d\n",
|
LOG_D(PHY,"PRACH (ru %d) in %d.%d, format %s, msg1_frequencyStart %d,startSymbol %d\n",
|
||||||
ru->idx,frame,slot,prachfmt[prachFormat],msg1_frequencystart,prachStartSymbol);
|
ru->idx,frame,slot,prachfmt[prachFormat],msg1_frequencystart,prachStartSymbol);
|
||||||
|
|
||||||
switch (prachFormat) {
|
switch (prachFormat) {
|
||||||
@@ -522,7 +522,7 @@ void rx_nr_prach_ru(RU_t *ru,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Coherent combining of PRACH repetitions (assumes channel does not change, to be revisted for "long" PRACH)
|
//Coherent combining of PRACH repetitions (assumes channel does not change, to be revisted for "long" PRACH)
|
||||||
LOG_I(PHY,"Doing PRACH combining of %d reptitions N_ZC %d,mu %d prachFormat %d prach2 %p content %d\n",reps,N_ZC,mu,prachFormat,prach2,*prach2);
|
LOG_D(PHY,"Doing PRACH combining of %d reptitions N_ZC %d\n",reps,N_ZC);
|
||||||
int16_t rxsigF_tmp[N_ZC<<1];
|
int16_t rxsigF_tmp[N_ZC<<1];
|
||||||
// if (k+N_ZC > dftlen) { // PRACH signal is split around DC
|
// if (k+N_ZC > dftlen) { // PRACH signal is split around DC
|
||||||
int16_t *rxsigF2=rxsigF[aa];
|
int16_t *rxsigF2=rxsigF[aa];
|
||||||
@@ -534,7 +534,6 @@ void rx_nr_prach_ru(RU_t *ru,
|
|||||||
for (int i=1;i<reps;i++) rxsigF_tmp[j] += rxsigF2[k2+(i*dftlen<<1)];
|
for (int i=1;i<reps;i++) rxsigF_tmp[j] += rxsigF2[k2+(i*dftlen<<1)];
|
||||||
}
|
}
|
||||||
memcpy((void*)rxsigF2,(void *)rxsigF_tmp,N_ZC<<2);
|
memcpy((void*)rxsigF2,(void *)rxsigF_tmp,N_ZC<<2);
|
||||||
LOG_I(PHY,"GES printing rxsigF2 %d\n",*rxsigF2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -602,7 +601,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
uint8_t prach_fmt = prach_pdu->prach_format;
|
uint8_t prach_fmt = prach_pdu->prach_format;
|
||||||
uint16_t N_ZC = (prach_sequence_length==0)?839:139;
|
uint16_t N_ZC = (prach_sequence_length==0)?839:139;
|
||||||
|
|
||||||
LOG_I(PHY,"L1 PRACH RX: rooSequenceIndex %d, numRootSeqeuences %d, NCS %d, N_ZC %d \n", rootSequenceIndex,numrootSequenceIndex,NCS,N_ZC);
|
LOG_D(PHY,"L1 PRACH RX: rooSequenceIndex %d, numRootSeqeuences %d, NCS %d, N_ZC %d \n",rootSequenceIndex,numrootSequenceIndex,NCS,N_ZC);
|
||||||
|
|
||||||
prach_ifft = gNB->prach_vars.prach_ifft;
|
prach_ifft = gNB->prach_vars.prach_ifft;
|
||||||
prachF = gNB->prach_vars.prachF;
|
prachF = gNB->prach_vars.prachF;
|
||||||
@@ -773,7 +772,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
lev = (int32_t)prach_ifft[(preamble_shift2+i)];
|
lev = (int32_t)prach_ifft[(preamble_shift2+i)];
|
||||||
levdB = dB_fixed_times10(lev);
|
levdB = dB_fixed_times10(lev);
|
||||||
if (levdB>*max_preamble_energy) {
|
if (levdB>*max_preamble_energy) {
|
||||||
LOG_I(PHY,"preamble_index %d, delay %d en %d dB > %d dB\n",preamble_index,i,levdB,*max_preamble_energy);
|
LOG_D(PHY,"preamble_index %d, delay %d en %d dB > %d dB\n",preamble_index,i,levdB,*max_preamble_energy);
|
||||||
*max_preamble_energy = levdB;
|
*max_preamble_energy = levdB;
|
||||||
*max_preamble_delay = i; // Note: This has to be normalized to the 30.72 Ms/s sampling rate
|
*max_preamble_delay = i; // Note: This has to be normalized to the 30.72 Ms/s sampling rate
|
||||||
*max_preamble = preamble_index;
|
*max_preamble = preamble_index;
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
|||||||
TX_req->SFN,TX_req->Slot,TX_req->Number_of_PDUs,
|
TX_req->SFN,TX_req->Slot,TX_req->Number_of_PDUs,
|
||||||
number_ul_dci_pdu,number_ul_tti_pdu);
|
number_ul_dci_pdu,number_ul_tti_pdu);
|
||||||
|
|
||||||
// int pdcch_received=0;
|
int pdcch_received=0;
|
||||||
gNB->num_pdsch_rnti=0;
|
gNB->num_pdsch_rnti=0;
|
||||||
for (int i=0; i<NUMBER_OF_NR_DLSCH_MAX; i++) {
|
for (int i=0; i<NUMBER_OF_NR_DLSCH_MAX; i++) {
|
||||||
gNB->dlsch[i][0]->rnti=0;
|
gNB->dlsch[i][0]->rnti=0;
|
||||||
@@ -176,13 +176,13 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE:
|
case NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE:
|
||||||
// AssertFatal(pdcch_received == 0, "pdcch_received is not 0, we can only handle one PDCCH PDU per slot\n");
|
AssertFatal(pdcch_received == 0, "pdcch_received is not 0, we can only handle one PDCCH PDU per slot\n");
|
||||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE for %d.%d\n",frame,slot,DL_req->SFN,DL_req->Slot);
|
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE for %d.%d\n",frame,slot,DL_req->SFN,DL_req->Slot);
|
||||||
handle_nfapi_nr_pdcch_pdu(gNB,
|
handle_nfapi_nr_pdcch_pdu(gNB,
|
||||||
frame, slot,
|
frame, slot,
|
||||||
&dl_tti_pdu->pdcch_pdu);
|
&dl_tti_pdu->pdcch_pdu);
|
||||||
|
|
||||||
// pdcch_received = 1;
|
pdcch_received = 1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE:
|
case NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE:
|
||||||
|
|||||||
@@ -444,6 +444,7 @@ void nr_initiate_ra_proc(module_id_t module_idP,
|
|||||||
NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id];
|
NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id];
|
||||||
NR_COMMON_channels_t *cc = &nr_mac->common_channels[CC_id];
|
NR_COMMON_channels_t *cc = &nr_mac->common_channels[CC_id];
|
||||||
NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon;
|
NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon;
|
||||||
|
NR_RA_t *ra = &cc->ra[0];
|
||||||
|
|
||||||
// if the preamble received correspond to one of the listed
|
// if the preamble received correspond to one of the listed
|
||||||
// the UE sent a RACH either for starting RA procedure or RA procedure failed and UE retries
|
// the UE sent a RACH either for starting RA procedure or RA procedure failed and UE retries
|
||||||
@@ -462,9 +463,6 @@ void nr_initiate_ra_proc(module_id_t module_idP,
|
|||||||
return; // if the PRACH preamble does not correspond to any of the ones sent through RRC abort RA proc
|
return; // if the PRACH preamble does not correspond to any of the ones sent through RRC abort RA proc
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < NB_RA_PROC_MAX; i++) {
|
|
||||||
NR_RA_t *ra = &cc->ra[i];
|
|
||||||
|
|
||||||
// This should be handled differently when we use the initialBWP for RA
|
// This should be handled differently when we use the initialBWP for RA
|
||||||
ra->bwp_id=1;
|
ra->bwp_id=1;
|
||||||
NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id-1];
|
NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id-1];
|
||||||
@@ -542,7 +540,6 @@ void nr_initiate_ra_proc(module_id_t module_idP,
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
LOG_E(MAC, "[gNB %d][RAPROC] FAILURE: CC_id %d Frame %d initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, preamble_index);
|
LOG_E(MAC, "[gNB %d][RAPROC] FAILURE: CC_id %d Frame %d initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, preamble_index);
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC, 0);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC, 0);
|
||||||
@@ -556,10 +553,12 @@ void nr_schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t slotP){
|
|||||||
NR_COMMON_channels_t *cc = &mac->common_channels[CC_id];
|
NR_COMMON_channels_t *cc = &mac->common_channels[CC_id];
|
||||||
|
|
||||||
start_meas(&mac->schedule_ra);
|
start_meas(&mac->schedule_ra);
|
||||||
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
|
||||||
for (int i = 0; i < NR_NB_RA_PROC_MAX; i++) {
|
|
||||||
|
|
||||||
NR_RA_t *ra = &cc->ra[i];
|
// for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
||||||
|
// for (int i = 0; i < NR_NB_RA_PROC_MAX; i++) {
|
||||||
|
|
||||||
|
// NR_RA_t *ra = &cc->ra[i];
|
||||||
|
NR_RA_t *ra = &cc->ra[0];
|
||||||
|
|
||||||
LOG_D(MAC,"RA[state:%d]\n",ra->state);
|
LOG_D(MAC,"RA[state:%d]\n",ra->state);
|
||||||
switch (ra->state){
|
switch (ra->state){
|
||||||
@@ -575,8 +574,8 @@ void nr_schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t slotP){
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
stop_meas(&mac->schedule_ra);
|
stop_meas(&mac->schedule_ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
|
|||||||
NR_IF_Module_t *ifi = if_inst[module_id];
|
NR_IF_Module_t *ifi = if_inst[module_id];
|
||||||
gNB_MAC_INST *mac = RC.nrmac[module_id];
|
gNB_MAC_INST *mac = RC.nrmac[module_id];
|
||||||
|
|
||||||
LOG_I(PHY,"SFN/SF:%d%d module_id:%d CC_id:%d UL_info[rach_pdus:%d rx_ind:%d crcs:%d]\n",
|
LOG_D(PHY,"SFN/SF:%d%d module_id:%d CC_id:%d UL_info[rach_pdus:%d rx_ind:%d crcs:%d]\n",
|
||||||
UL_info->frame,UL_info->slot,
|
UL_info->frame,UL_info->slot,
|
||||||
module_id,CC_id, UL_info->rach_ind.number_of_pdus,
|
module_id,CC_id, UL_info->rach_ind.number_of_pdus,
|
||||||
UL_info->rx_ind.number_of_pdus, UL_info->crc_ind.number_crcs);
|
UL_info->rx_ind.number_of_pdus, UL_info->crc_ind.number_crcs);
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
|
|||||||
ssbElem[0]->ssb = 0;
|
ssbElem[0]->ssb = 0;
|
||||||
ssbElem[0]->ra_PreambleIndex = 63;
|
ssbElem[0]->ra_PreambleIndex = 63;
|
||||||
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[0]);
|
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[0]);
|
||||||
#if 1
|
#if 0
|
||||||
ssbElem[1] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
|
ssbElem[1] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
|
||||||
ssbElem[1]->ssb = 1;
|
ssbElem[1]->ssb = 1;
|
||||||
ssbElem[1]->ra_PreambleIndex = 62;
|
ssbElem[1]->ra_PreambleIndex = 62;
|
||||||
|
|||||||
Reference in New Issue
Block a user