Commit 9fb04458 authored by Melissa's avatar Melissa

Merge branch 'episys/david/nsa_ci_debug_for_sa' into 'episys/master-nsa'

NSA CI debug update for SA mode

See merge request aburger/openairinterface5g!82
parents dfd42867 0429f7e8
...@@ -612,8 +612,6 @@ int phy_sync_indication(struct nfapi_vnf_p7_config *config, uint8_t sync) { ...@@ -612,8 +612,6 @@ int phy_sync_indication(struct nfapi_vnf_p7_config *config, uint8_t sync) {
return(0); return(0);
} }
uint16_t pnf_frame;
uint16_t pnf_slot;
int phy_slot_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id, uint16_t sfn, uint16_t slot) { int phy_slot_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id, uint16_t sfn, uint16_t slot) {
static uint8_t first_time = 1; static uint8_t first_time = 1;
...@@ -626,8 +624,6 @@ int phy_slot_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id, uin ...@@ -626,8 +624,6 @@ int phy_slot_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id, uin
if (RC.gNB && RC.gNB[0]->configured) { if (RC.gNB && RC.gNB[0]->configured) {
// uint16_t sfn = NFAPI_SFNSF2SFN(sfn_sf); // uint16_t sfn = NFAPI_SFNSF2SFN(sfn_sf);
// uint16_t sf = NFAPI_SFNSF2SF(sfn_sf); // uint16_t sf = NFAPI_SFNSF2SF(sfn_sf);
pnf_frame = sfn;
pnf_slot = slot;
LOG_D(PHY,"[VNF] slot indication sfn:%d slot:%d\n", sfn, slot); LOG_D(PHY,"[VNF] slot indication sfn:%d slot:%d\n", sfn, slot);
wake_gNB_rxtx(RC.gNB[0], sfn, slot); // DONE: find NR equivalent wake_gNB_rxtx(RC.gNB[0], sfn, slot); // DONE: find NR equivalent
} else { } else {
......
...@@ -733,7 +733,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { ...@@ -733,7 +733,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
(ulsch_harq->slot == slot_rx) && (ulsch_harq->slot == slot_rx) &&
(ulsch_harq->handled == 0)){ (ulsch_harq->handled == 0)){
LOG_I(PHY, "PUSCH detection started in frame %d slot %d\n", LOG_D(PHY, "PUSCH detection started in frame %d slot %d\n",
frame_rx,slot_rx); frame_rx,slot_rx);
int num_dmrs=0; int num_dmrs=0;
for (int s=0;s<NR_NUMBER_OF_SYMBOLS_PER_SLOT; s++) for (int s=0;s<NR_NUMBER_OF_SYMBOLS_PER_SLOT; s++)
......
...@@ -2229,7 +2229,6 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s ...@@ -2229,7 +2229,6 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s
prach_config_pdu = &ul_config->ul_config_list[ul_config->number_pdus].prach_config_pdu; prach_config_pdu = &ul_config->ul_config_list[ul_config->number_pdus].prach_config_pdu;
memset(prach_config_pdu, 0, sizeof(fapi_nr_ul_config_prach_pdu)); memset(prach_config_pdu, 0, sizeof(fapi_nr_ul_config_prach_pdu));
ul_config->number_pdus += 1;
fill_ul_config(ul_config, frameP, slotP, FAPI_NR_UL_CONFIG_TYPE_PRACH); fill_ul_config(ul_config, frameP, slotP, FAPI_NR_UL_CONFIG_TYPE_PRACH);
LOG_D(PHY, "In %s: (%p) %d UL PDUs:\n", __FUNCTION__, ul_config, ul_config->number_pdus); LOG_D(PHY, "In %s: (%p) %d UL PDUs:\n", __FUNCTION__, ul_config, ul_config->number_pdus);
......
...@@ -1099,8 +1099,12 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id, ...@@ -1099,8 +1099,12 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id,
const int8_t pid = sched_ctrl->feedback_dl_harq.head; const int8_t pid = sched_ctrl->feedback_dl_harq.head;
remove_front_nr_list(&sched_ctrl->feedback_dl_harq); remove_front_nr_list(&sched_ctrl->feedback_dl_harq);
/* According to nfapi_nr_interface_scf.h, harq_value = 0 is a pass /* According to nfapi_nr_interface_scf.h, harq_value = 0 is a pass
(The check below was for harq_value == 1 in the develop branch) */ (The check below was for harq_value == 1 in the develop branch)
handle_dl_harq(mod_id, UE_id, pid, harq_value == 0 && harq_confidence == 0); TODO: After update in develop branch, the following condition will be updated.*/
if (get_softmodem_params()->emulate_l1)
handle_dl_harq(mod_id, UE_id, pid, harq_value == 0 && harq_confidence == 0);
else
handle_dl_harq(mod_id, UE_id, pid, harq_value == 1 && harq_confidence == 0);
if (harq_confidence == 1) UE_info->mac_stats[UE_id].pucch0_DTX++; if (harq_confidence == 1) UE_info->mac_stats[UE_id].pucch0_DTX++;
} }
} }
......
...@@ -63,18 +63,35 @@ extern uint16_t sl_ahead; ...@@ -63,18 +63,35 @@ extern uint16_t sl_ahead;
void handle_nr_rach(NR_UL_IND_t *UL_info) void handle_nr_rach(NR_UL_IND_t *UL_info)
{ {
if (gnb_rach_ind_queue.num_items ==0) if(NFAPI_MODE == NFAPI_MODE_PNF) {
return; if (UL_info->rach_ind.number_of_pdus > 0) {
LOG_I(NR_MAC, "gnb_rach_ind_queue size = %zu\n", gnb_rach_ind_queue.num_items); LOG_D(PHY,"UL_info->UL_info->rach_ind.number_of_pdus:%d SFN/Slot:%d.%d \n", UL_info->rach_ind.number_of_pdus, UL_info->rach_ind.sfn,UL_info->rach_ind.slot);
nfapi_nr_rach_indication_t *rach_ind = get_queue(&gnb_rach_ind_queue); oai_nfapi_nr_rach_indication(&UL_info->rach_ind);
UL_info->rach_ind.number_of_pdus = 0;
}
return;
}
NR_UL_IND_t UL_INFO; NR_UL_IND_t UL_INFO;
UL_INFO.rach_ind = *rach_ind; nfapi_nr_rach_indication_t *rach_ind = NULL;
UL_INFO.frame = rach_ind->sfn; if (get_softmodem_params()->emulate_l1)
UL_INFO.slot = rach_ind->slot; {
UL_INFO.module_id = UL_info->module_id; if (gnb_rach_ind_queue.num_items == 0)
UL_INFO.CC_id = UL_info->CC_id; return;
LOG_I(NR_MAC, "gnb_rach_ind_queue size = %zu\n", gnb_rach_ind_queue.num_items);
rach_ind = get_queue(&gnb_rach_ind_queue);
UL_INFO.rach_ind = *rach_ind;
UL_INFO.module_id = UL_info->module_id;
UL_INFO.CC_id = UL_info->CC_id;
}
else
{
UL_INFO.rach_ind = UL_info->rach_ind;
UL_INFO.module_id = UL_info->module_id;
UL_INFO.CC_id = UL_info->CC_id;
}
int frame_diff = UL_info->frame - rach_ind->sfn; int frame_diff = UL_info->frame - UL_INFO.rach_ind.sfn;
if (frame_diff < 0) if (frame_diff < 0)
{ {
frame_diff += 1024; frame_diff += 1024;
...@@ -101,24 +118,49 @@ void handle_nr_rach(NR_UL_IND_t *UL_info) ...@@ -101,24 +118,49 @@ void handle_nr_rach(NR_UL_IND_t *UL_info)
UL_INFO.rach_ind.pdu_list[i].preamble_list[0].timing_advance); UL_INFO.rach_ind.pdu_list[i].preamble_list[0].timing_advance);
} }
} }
if (rach_ind && rach_ind->number_of_pdus > 0) if (get_softmodem_params()->emulate_l1)
{ {
for(int i = 0; i < rach_ind->number_of_pdus; i++) if (rach_ind && rach_ind->number_of_pdus > 0)
free(rach_ind->pdu_list[i].preamble_list); {
free(rach_ind->pdu_list); for(int i = 0; i < rach_ind->number_of_pdus; i++)
{
free(rach_ind->pdu_list[i].preamble_list);
rach_ind->pdu_list[i].preamble_list = NULL;
}
free(rach_ind->pdu_list);
rach_ind->pdu_list = NULL;
}
free(rach_ind);
rach_ind = NULL;
} }
free(rach_ind);
} }
void handle_nr_uci(NR_UL_IND_t *UL_info) void handle_nr_uci(NR_UL_IND_t *UL_info)
{ {
if (gnb_uci_ind_queue.num_items ==0) if(NFAPI_MODE == NFAPI_MODE_PNF) {
return; if (UL_info->uci_ind.num_ucis > 0) {
LOG_I(NR_MAC, "gnb_uci_ind_queue size = %zu\n", gnb_uci_ind_queue.num_items); LOG_D(PHY,"PNF Sending UL_info->num_ucis:%d PDU_type: %d, SFN/SF:%d.%d \n", UL_info->uci_ind.num_ucis, UL_info->uci_ind.uci_list[0].pdu_type ,UL_info->frame, UL_info->slot);
nfapi_nr_uci_indication_t *uci_ind = get_queue(&gnb_uci_ind_queue); oai_nfapi_nr_uci_indication(&UL_info->uci_ind);
UL_info->uci_ind.num_ucis = 0;
}
return;
}
NR_UL_IND_t UL_INFO; NR_UL_IND_t UL_INFO;
UL_INFO.uci_ind = *uci_ind; nfapi_nr_uci_indication_t *uci_ind = NULL;
if (get_softmodem_params()->emulate_l1)
{
if (gnb_uci_ind_queue.num_items == 0)
return;
LOG_I(NR_MAC, "gnb_uci_ind_queue size = %zu\n", gnb_uci_ind_queue.num_items);
uci_ind = get_queue(&gnb_uci_ind_queue);
UL_INFO.uci_ind = *uci_ind;
}
else
{
UL_INFO.uci_ind = UL_info->uci_ind;
}
const module_id_t mod_id = UL_info->module_id; const module_id_t mod_id = UL_info->module_id;
const frame_t frame = UL_INFO.uci_ind.sfn; const frame_t frame = UL_INFO.uci_ind.sfn;
...@@ -134,7 +176,7 @@ void handle_nr_uci(NR_UL_IND_t *UL_info) ...@@ -134,7 +176,7 @@ void handle_nr_uci(NR_UL_IND_t *UL_info)
case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE: { case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE: {
const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu = &uci_list[i].pucch_pdu_format_0_1; const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu = &uci_list[i].pucch_pdu_format_0_1;
LOG_I(NR_MAC, "The received uci has sfn slot %d %d, num_ucis %d and pdu_size %d\n", LOG_D(NR_MAC, "The received uci has sfn slot %d %d, num_ucis %d and pdu_size %d\n",
UL_INFO.uci_ind.sfn, UL_INFO.uci_ind.slot, num_ucis, uci_list[i].pdu_size); UL_INFO.uci_ind.sfn, UL_INFO.uci_ind.slot, num_ucis, uci_list[i].pdu_size);
handle_nr_uci_pucch_0_1(mod_id, frame, slot, uci_pdu); handle_nr_uci_pucch_0_1(mod_id, frame, slot, uci_pdu);
break; break;
...@@ -149,32 +191,39 @@ void handle_nr_uci(NR_UL_IND_t *UL_info) ...@@ -149,32 +191,39 @@ void handle_nr_uci(NR_UL_IND_t *UL_info)
} }
} }
for (int i = 0; i < num_ucis; i++) { if (get_softmodem_params()->emulate_l1)
switch (uci_list[i].pdu_type) { {
case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE: for (int i = 0; i < num_ucis; i++) {
if (uci_list[i].pucch_pdu_format_0_1.harq) { switch (uci_list[i].pdu_type) {
free(uci_list[i].pucch_pdu_format_0_1.harq->harq_list); case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE:
uci_list[i].pucch_pdu_format_0_1.harq->harq_list = NULL; if (uci_list[i].pucch_pdu_format_0_1.harq) {
} free(uci_list[i].pucch_pdu_format_0_1.harq->harq_list);
free(uci_list[i].pucch_pdu_format_0_1.harq); uci_list[i].pucch_pdu_format_0_1.harq->harq_list = NULL;
uci_list[i].pucch_pdu_format_0_1.harq = NULL; }
free(uci_list[i].pucch_pdu_format_0_1.sr); free(uci_list[i].pucch_pdu_format_0_1.harq);
uci_list[i].pucch_pdu_format_0_1.sr = NULL; uci_list[i].pucch_pdu_format_0_1.harq = NULL;
break; free(uci_list[i].pucch_pdu_format_0_1.sr);
uci_list[i].pucch_pdu_format_0_1.sr = NULL;
break;
case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE: case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE:
free(uci_list[i].pucch_pdu_format_2_3_4.harq.harq_payload); free(uci_list[i].pucch_pdu_format_2_3_4.harq.harq_payload);
free(uci_list[i].pucch_pdu_format_2_3_4.csi_part1.csi_part1_payload); free(uci_list[i].pucch_pdu_format_2_3_4.csi_part1.csi_part1_payload);
free(uci_list[i].pucch_pdu_format_2_3_4.csi_part2.csi_part2_payload); free(uci_list[i].pucch_pdu_format_2_3_4.csi_part2.csi_part2_payload);
break; break;
}
} }
if (uci_ind && num_ucis > 0) {
free(uci_list);
uci_list = NULL;
}
free(uci_ind);
uci_ind = NULL;
} }
if (uci_ind && num_ucis > 0) { else
free(uci_list); {
uci_list = NULL; UL_info->uci_ind.num_ucis = 0;
} }
free(uci_ind);
uci_ind = NULL;
} }
static bool crc_sfn_slot_matcher(void *wanted, void *candidate) static bool crc_sfn_slot_matcher(void *wanted, void *candidate)
...@@ -199,39 +248,70 @@ static bool crc_sfn_slot_matcher(void *wanted, void *candidate) ...@@ -199,39 +248,70 @@ static bool crc_sfn_slot_matcher(void *wanted, void *candidate)
void handle_nr_ulsch(NR_UL_IND_t *UL_info) void handle_nr_ulsch(NR_UL_IND_t *UL_info)
{ {
nfapi_nr_rx_data_indication_t *rx_ind = get_queue(&gnb_rx_ind_queue); if(NFAPI_MODE == NFAPI_MODE_PNF) {
if (!rx_ind) if (UL_info->crc_ind.number_crcs > 0) {
{ LOG_D(PHY,"UL_info->UL_info->crc_ind.number_crcs:%d CRC_IND:SFN/Slot:%d.%d\n", UL_info->crc_ind.number_crcs, UL_info->crc_ind.sfn, UL_info->crc_ind.slot);
LOG_D(NR_PHY, "No rx data indication (empty gnb_rx_ind_queue)\n"); oai_nfapi_nr_crc_indication(&UL_info->crc_ind);
UL_info->crc_ind.number_crcs = 0;
}
if (UL_info->rx_ind.number_of_pdus > 0) {
LOG_D(PHY,"UL_info->rx_ind.number_of_pdus:%d RX_IND:SFN/Slot:%d.%d \n", UL_info->rx_ind.number_of_pdus, UL_info->rx_ind.sfn, UL_info->rx_ind.slot);
oai_nfapi_nr_rx_data_indication(&UL_info->rx_ind);
UL_info->rx_ind.number_of_pdus = 0;
}
return; return;
} }
int sfn_slot = NFAPI_SFNSLOT2HEX(rx_ind->sfn, rx_ind->slot);
NR_UL_IND_t UL_INFO;
nfapi_nr_crc_indication_t *crc_ind = unqueue_matching(&gnb_crc_ind_queue, nfapi_nr_rx_data_indication_t *rx_ind = NULL;
MAX_QUEUE_SIZE, nfapi_nr_crc_indication_t *crc_ind = NULL;
crc_sfn_slot_matcher, if (get_softmodem_params()->emulate_l1)
&sfn_slot);
if (!crc_ind)
{ {
LOG_D(NR_PHY, "No crc indication with the same SFN SLOT of rx indication %u %u\n", rx_ind->sfn, rx_ind->slot); rx_ind = get_queue(&gnb_rx_ind_queue);
put_queue(&gnb_rx_ind_queue, rx_ind); if (!rx_ind)
return; {
LOG_D(NR_PHY, "No rx data indication (empty gnb_rx_ind_queue)\n");
return;
}
int sfn_slot = NFAPI_SFNSLOT2HEX(rx_ind->sfn, rx_ind->slot);
crc_ind = unqueue_matching(&gnb_crc_ind_queue,
MAX_QUEUE_SIZE,
crc_sfn_slot_matcher,
&sfn_slot);
if (!crc_ind)
{
LOG_D(NR_PHY, "No crc indication with the same SFN SLOT of rx indication %u %u\n", rx_ind->sfn, rx_ind->slot);
put_queue(&gnb_rx_ind_queue, rx_ind);
return;
}
UL_INFO.rx_ind = *rx_ind;
UL_INFO.crc_ind = *crc_ind;
UL_INFO.module_id = UL_info->module_id;
UL_INFO.CC_id = UL_info->CC_id;
}
else
{
UL_INFO.rx_ind = UL_info->rx_ind;
UL_INFO.crc_ind = UL_info->crc_ind;
UL_INFO.module_id = UL_info->module_id;
UL_INFO.CC_id = UL_info->CC_id;
} }
NR_UL_IND_t UL_INFO; UL_INFO.frame = UL_INFO.rx_ind.sfn;
UL_INFO.rx_ind = *rx_ind; UL_INFO.slot = UL_INFO.rx_ind.slot;
UL_INFO.crc_ind = *crc_ind;
UL_INFO.frame = rx_ind->sfn;
UL_INFO.slot = rx_ind->slot;
UL_INFO.module_id = UL_info->module_id; UL_INFO.module_id = UL_info->module_id;
UL_INFO.CC_id = UL_info->CC_id; UL_INFO.CC_id = UL_info->CC_id;
LOG_I(NR_MAC, " UL_info frame slot vs rx_ind frame slot vs crc_ind slot frame slot = %u %u vs %u %u vs %u %u\n", LOG_D(NR_MAC, " UL_info frame slot vs rx_ind frame slot vs crc_ind slot frame slot = %u %u vs %u %u vs %u %u\n",
UL_info->frame, UL_info->slot, UL_info->frame, UL_info->slot,
rx_ind->sfn, rx_ind->slot, UL_INFO.rx_ind.sfn, UL_INFO.rx_ind.slot,
crc_ind->sfn, crc_ind->slot UL_INFO.crc_ind.sfn, UL_INFO.crc_ind.slot
); );
if (rx_ind && UL_INFO.rx_ind.number_of_pdus > 0 && crc_ind && UL_INFO.crc_ind.number_crcs > 0) { if (UL_INFO.rx_ind.number_of_pdus > 0 && UL_INFO.crc_ind.number_crcs > 0) {
for (int i = 0; i < UL_INFO.rx_ind.number_of_pdus; i++) { for (int i = 0; i < UL_INFO.rx_ind.number_of_pdus; i++) {
int j; int j;
for (j = 0; j < UL_INFO.crc_ind.number_crcs; j++) { for (j = 0; j < UL_INFO.crc_ind.number_crcs; j++) {
...@@ -273,58 +353,68 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) ...@@ -273,58 +353,68 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info)
handle_nr_ul_harq(UL_INFO.CC_id, UL_INFO.module_id, UL_INFO.frame, UL_INFO.slot, crc); handle_nr_ul_harq(UL_INFO.CC_id, UL_INFO.module_id, UL_INFO.frame, UL_INFO.slot, crc);
break; break;
} // for (j=0;j<UL_INFO.crc_ind.number_crcs;j++) } // for (j=0;j<UL_INFO.crc_ind.number_crcs;j++)
int last = UL_INFO.crc_ind.number_crcs - 1; if (get_softmodem_params()->emulate_l1)
if (j < last)
{ {
crc_ind->crc_list[j] = crc_ind->crc_list[last]; int last = UL_INFO.crc_ind.number_crcs - 1;
UL_INFO.crc_ind.number_crcs--; if (j < last)
{
crc_ind->crc_list[j] = crc_ind->crc_list[last];
UL_INFO.crc_ind.number_crcs--;
}
else if (j == last)
{
UL_INFO.crc_ind.number_crcs--;
}
last = UL_INFO.rx_ind.number_of_pdus - 1;
if (i < last)
{
rx_ind->pdu_list[i] = rx_ind->pdu_list[last];
UL_INFO.rx_ind.number_of_pdus--;
i--;
}
else if (i == last)
{
UL_INFO.rx_ind.number_of_pdus--;
}
} }
else if (j == last) } // for (i=0;i<UL_INFO.rx_ind.number_of_pdus;i++)
if (get_softmodem_params()->emulate_l1)
{
if (UL_INFO.crc_ind.number_crcs > 0)
{ {
UL_INFO.crc_ind.number_crcs--; crc_ind->number_crcs = UL_INFO.crc_ind.number_crcs;
requeue(&gnb_crc_ind_queue, crc_ind);
} }
last = UL_INFO.rx_ind.number_of_pdus - 1; if (UL_INFO.rx_ind.number_of_pdus > 0)
if (i < last)
{ {
rx_ind->pdu_list[i] = rx_ind->pdu_list[last]; rx_ind->number_of_pdus = UL_INFO.rx_ind.number_of_pdus;
UL_INFO.rx_ind.number_of_pdus--; requeue(&gnb_rx_ind_queue, rx_ind);
i--;
} }
else if (i == last)
if (UL_INFO.crc_ind.number_crcs == 0)
{ {
UL_INFO.rx_ind.number_of_pdus--; free(crc_ind->crc_list);
crc_ind->crc_list = NULL;
free(crc_ind);
crc_ind = NULL;
}
if (UL_INFO.rx_ind.number_of_pdus == 0)
{
free(rx_ind->pdu_list);
rx_ind->pdu_list = NULL;
free(rx_ind);
rx_ind = NULL;
} }
} // for (i=0;i<UL_INFO.rx_ind.number_of_pdus;i++)
if (UL_INFO.crc_ind.number_crcs > 0)
{
crc_ind->number_crcs = UL_INFO.crc_ind.number_crcs;
requeue(&gnb_crc_ind_queue, crc_ind);
}
if (UL_INFO.rx_ind.number_of_pdus > 0)
{
rx_ind->number_of_pdus = UL_INFO.rx_ind.number_of_pdus;
requeue(&gnb_rx_ind_queue, rx_ind);
}
if (UL_INFO.crc_ind.number_crcs == 0)
{
free(crc_ind->crc_list);
crc_ind->crc_list = NULL;
free(crc_ind);
crc_ind = NULL;
} }
if (UL_INFO.rx_ind.number_of_pdus == 0) else
{ {
free(rx_ind->pdu_list); UL_info->crc_ind.number_crcs = 0;
rx_ind->pdu_list = NULL; UL_info->rx_ind.number_of_pdus = 0;
free(rx_ind);
rx_ind = NULL;
} }
} else if ((rx_ind && UL_INFO.rx_ind.number_of_pdus != 0) } else if ((UL_INFO.rx_ind.number_of_pdus != 0)
|| (crc_ind && UL_INFO.crc_ind.number_crcs != 0)) { || (UL_INFO.crc_ind.number_crcs != 0)) {
LOG_E(NR_PHY, LOG_E(NR_PHY,
"hoping not to have mis-match between CRC ind and RX ind - " "hoping not to have mis-match between CRC ind and RX ind - "
"hopefully the missing message is coming shortly " "hopefully the missing message is coming shortly "
...@@ -353,6 +443,13 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { ...@@ -353,6 +443,13 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
module_id,CC_id, gnb_rach_ind_queue.num_items, module_id,CC_id, gnb_rach_ind_queue.num_items,
gnb_rx_ind_queue.num_items, gnb_crc_ind_queue.num_items); gnb_rx_ind_queue.num_items, gnb_crc_ind_queue.num_items);
handle_nr_rach(UL_info);
handle_nr_uci(UL_info);
// clear UL DCI prior to handling ULSCH
mac->UL_dci_req[CC_id].numPdus = 0;
handle_nr_ulsch(UL_info);
if (NFAPI_MODE != NFAPI_MODE_PNF) { if (NFAPI_MODE != NFAPI_MODE_PNF) {
if (ifi->CC_mask==0) { if (ifi->CC_mask==0) {
...@@ -365,14 +462,6 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { ...@@ -365,14 +462,6 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
ifi->CC_mask |= (1<<CC_id); ifi->CC_mask |= (1<<CC_id);
handle_nr_rach(UL_info);
handle_nr_uci(UL_info);
// clear HI prior to handling ULSCH
mac->UL_dci_req[CC_id].numPdus = 0;
handle_nr_ulsch(UL_info);
if (ifi->CC_mask == ((1<<MAX_NUM_CCs)-1)) { if (ifi->CC_mask == ((1<<MAX_NUM_CCs)-1)) {
/* /*
eNB_dlsch_ulsch_scheduler(module_id, eNB_dlsch_ulsch_scheduler(module_id,
......
...@@ -945,7 +945,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ...@@ -945,7 +945,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
long *delay[8]; long *delay[8];
for (int i=0;i<8;i++) { for (int i=0;i<8;i++) {
delay[i] = calloc(1,sizeof(*delay[i])); delay[i] = calloc(1,sizeof(*delay[i]));
*delay[i] = i + 6; *delay[i] = (i<6) ? (i+2) : 0;
ASN_SEQUENCE_ADD(&pucch_Config->dl_DataToUL_ACK->list,delay[i]); ASN_SEQUENCE_ADD(&pucch_Config->dl_DataToUL_ACK->list,delay[i]);
} }
pucch_Config->spatialRelationInfoToAddModList = calloc(1,sizeof(*pucch_Config->spatialRelationInfoToAddModList)); pucch_Config->spatialRelationInfoToAddModList = calloc(1,sizeof(*pucch_Config->spatialRelationInfoToAddModList));
......
...@@ -244,17 +244,10 @@ int8_t nr_rrc_ue_process_rrcReconfiguration(const module_id_t module_id, NR_RRCR ...@@ -244,17 +244,10 @@ int8_t nr_rrc_ue_process_rrcReconfiguration(const module_id_t module_id, NR_RRCR
if(NR_UE_rrc_inst[module_id].radio_bearer_config == NULL){ if(NR_UE_rrc_inst[module_id].radio_bearer_config == NULL){
NR_UE_rrc_inst[module_id].radio_bearer_config = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->radioBearerConfig; NR_UE_rrc_inst[module_id].radio_bearer_config = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->radioBearerConfig;
}else{ }else{
protocol_ctxt_t ctxt; if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); struct NR_RadioBearerConfig *RadioBearerConfig = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->radioBearerConfig;
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_id, ENB_FLAG_YES, mac->crnti, 0, 0, 0); xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void *) RadioBearerConfig);
struct NR_RadioBearerConfig *RadioBearerConfig = rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->radioBearerConfig; }
xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void*)RadioBearerConfig);
LOG_D(NR_RRC, "Calling fill_default_rbconfig_ue at %d with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n",
__LINE__, RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity,
RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity,
RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm,
*RadioBearerConfig->securityConfig->keyToUse);
nr_rrc_ue_process_RadioBearerConfig(&ctxt, 0, RadioBearerConfig);
} }
} }
if(rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->secondaryCellGroup != NULL){ if(rrcReconfiguration->criticalExtensions.choice.rrcReconfiguration->secondaryCellGroup != NULL){
...@@ -404,17 +397,9 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type, ...@@ -404,17 +397,9 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type,
SEQUENCE_free( &asn_DEF_NR_RadioBearerConfig, RadioBearerConfig, 1 ); SEQUENCE_free( &asn_DEF_NR_RadioBearerConfig, RadioBearerConfig, 1 );
return; return;
} }
protocol_ctxt_t ctxt; if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void *) RadioBearerConfig);
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_id, ENB_FLAG_YES, mac->crnti, 0, 0, 0); }
xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void*)RadioBearerConfig);
LOG_D(NR_RRC, "Calling fill_default_rbconfig_ue at %d with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n",
__LINE__, RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity,
RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity,
RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm,
*RadioBearerConfig->securityConfig->keyToUse);
nr_rrc_ue_process_RadioBearerConfig(&ctxt, 0, RadioBearerConfig);
} }
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment