Commit 74e7b44b authored by hsum's avatar hsum Committed by dong881

Accessing TDD_table causes segmentation fault issue : 1/2

Accessing TDD_table causes segmentation fault issue : 2/2
parent 98b3f4d4
...@@ -769,12 +769,19 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { ...@@ -769,12 +769,19 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
radio_tx_gpio_flag_t flags_gpio = 0; radio_tx_gpio_flag_t flags_gpio = 0;
if (cfg->cell_config.frame_duplex_type.value == TDD && !get_softmodem_params()->continuous_tx) { if (cfg->cell_config.frame_duplex_type.value == TDD && !get_softmodem_params()->continuous_tx) {
int slot_type = nr_slot_select(cfg,frame,slot%fp->slots_per_frame); int max_tdd_periodicity_num = get_nb_max_tdd_periodicity(
cfg->ssb_config.scs_common.value,
cfg->tdd_table.tdd_period.value
);
int slot_type = nr_slot_select(cfg, frame, slot);
if(slot_type == NR_MIXED_SLOT) { if(slot_type == NR_MIXED_SLOT) {
int txsymb = 0; int txsymb = 0;
for(int symbol_count = 0; symbol_count<NR_NUMBER_OF_SYMBOLS_PER_SLOT; symbol_count++) { for(int symbol_count = 0; symbol_count<NR_NUMBER_OF_SYMBOLS_PER_SLOT; symbol_count++) {
if (cfg->tdd_table.max_tdd_periodicity_list[slot].max_num_of_symbol_per_slot_list[symbol_count].slot_config.value == 0) if (cfg->tdd_table.max_tdd_periodicity_list[slot % max_tdd_periodicity_num]
.max_num_of_symbol_per_slot_list[symbol_count]
.slot_config.value
== 0)
txsymb++; txsymb++;
} }
......
...@@ -567,9 +567,15 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { ...@@ -567,9 +567,15 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
(pucch->slot == slot_rx) ) { (pucch->slot == slot_rx) ) {
nfapi_nr_pucch_pdu_t *pucch_pdu = &pucch->pucch_pdu; nfapi_nr_pucch_pdu_t *pucch_pdu = &pucch->pucch_pdu;
LOG_D(PHY,"%d.%d pucch %d : start_symbol %d, nb_symbols %d, prb_size %d\n",frame_rx,slot_rx,i,pucch_pdu->start_symbol_index,pucch_pdu->nr_of_symbols,pucch_pdu->prb_size); LOG_D(PHY,"%d.%d pucch %d : start_symbol %d, nb_symbols %d, prb_size %d\n",frame_rx,slot_rx,i,pucch_pdu->start_symbol_index,pucch_pdu->nr_of_symbols,pucch_pdu->prb_size);
int max_tdd_periodicity_num =
get_nb_max_tdd_periodicity(gNB->gNB_config.ssb_config.scs_common.value, gNB->gNB_config.tdd_table.tdd_period.value);
for (int symbol=pucch_pdu->start_symbol_index ; symbol<(pucch_pdu->start_symbol_index+pucch_pdu->nr_of_symbols);symbol++) { for (int symbol=pucch_pdu->start_symbol_index ; symbol<(pucch_pdu->start_symbol_index+pucch_pdu->nr_of_symbols);symbol++) {
if(gNB->frame_parms.frame_type == FDD || if (gNB->frame_parms.frame_type == FDD
(gNB->frame_parms.frame_type == TDD && gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx].max_num_of_symbol_per_slot_list[symbol].slot_config.value==1)) { || (gNB->frame_parms.frame_type == TDD
&& gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx % max_tdd_periodicity_num]
.max_num_of_symbol_per_slot_list[symbol]
.slot_config.value
== 1)) {
for (rb=0; rb<pucch_pdu->prb_size; rb++) { for (rb=0; rb<pucch_pdu->prb_size; rb++) {
rb2 = rb + pucch_pdu->bwp_start + rb2 = rb + pucch_pdu->bwp_start +
((symbol < pucch_pdu->start_symbol_index+(pucch_pdu->nr_of_symbols>>1)) || (pucch_pdu->freq_hop_flag == 0) ? ((symbol < pucch_pdu->start_symbol_index+(pucch_pdu->nr_of_symbols>>1)) || (pucch_pdu->freq_hop_flag == 0) ?
...@@ -589,10 +595,14 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { ...@@ -589,10 +595,14 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
if ((ulsch->active == true) && (ulsch->frame == frame_rx) && (ulsch->slot == slot_rx) && (ulsch->handled == 0)) { if ((ulsch->active == true) && (ulsch->frame == frame_rx) && (ulsch->slot == slot_rx) && (ulsch->handled == 0)) {
uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index; uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index;
uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols; uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols;
int max_tdd_periodicity_num = get_nb_max_tdd_periodicity(
gNB->gNB_config.ssb_config.scs_common.value,
gNB->gNB_config.tdd_table.tdd_period.value
);
for (int symbol = symbol_start; symbol < symbol_end; symbol++) { for (int symbol = symbol_start; symbol < symbol_end; symbol++) {
if (gNB->frame_parms.frame_type == FDD if (gNB->frame_parms.frame_type == FDD
|| (gNB->frame_parms.frame_type == TDD || (gNB->frame_parms.frame_type == TDD
&& gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx] && gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx%max_tdd_periodicity_num]
.max_num_of_symbol_per_slot_list[symbol] .max_num_of_symbol_per_slot_list[symbol]
.slot_config.value .slot_config.value
== 1)) { == 1)) {
...@@ -720,11 +730,14 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) ...@@ -720,11 +730,14 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
LOG_D(PHY,"phy_procedures_gNB_uespec_RX frame %d, slot %d\n",frame_rx,slot_rx); LOG_D(PHY,"phy_procedures_gNB_uespec_RX frame %d, slot %d\n",frame_rx,slot_rx);
fill_ul_rb_mask(gNB, frame_rx, slot_rx); fill_ul_rb_mask(gNB, frame_rx, slot_rx);
int max_tdd_periodicity_num = get_nb_max_tdd_periodicity(
gNB->gNB_config.ssb_config.scs_common.value,
gNB->gNB_config.tdd_table.tdd_period.value
);
int first_symb=0,num_symb=0; int first_symb=0,num_symb=0;
if (gNB->frame_parms.frame_type == TDD) if (gNB->frame_parms.frame_type == TDD)
for(int symbol_count=0; symbol_count<NR_NUMBER_OF_SYMBOLS_PER_SLOT; symbol_count++) { for(int symbol_count=0; symbol_count<NR_NUMBER_OF_SYMBOLS_PER_SLOT; symbol_count++) {
if (gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx].max_num_of_symbol_per_slot_list[symbol_count].slot_config.value==1) { if (gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx%max_tdd_periodicity_num].max_num_of_symbol_per_slot_list[symbol_count].slot_config.value==1) {
if (num_symb==0) first_symb=symbol_count; if (num_symb==0) first_symb=symbol_count;
num_symb++; num_symb++;
} }
......
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