Dont send DCIs repeatedly for a given sfn/slot
Although the timing isnt perfect, if the VNF adjusts in the middle of scheduling a DCI the gNB would try to send two DCIs for a certain sfn/slot; this commit will stop that from happening. The timing issue still persits.
This commit is contained in:
@@ -351,7 +351,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
|
|||||||
};
|
};
|
||||||
send_nsa_standalone_msg(&UL_INFO, crc_ind->header.message_id);
|
send_nsa_standalone_msg(&UL_INFO, crc_ind->header.message_id);
|
||||||
free(crc_ind->crc_list);
|
free(crc_ind->crc_list);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -1761,10 +1761,4 @@ typedef struct
|
|||||||
|
|
||||||
} nfapi_nr_rach_indication_t;
|
} nfapi_nr_rach_indication_t;
|
||||||
|
|
||||||
typedef union {
|
|
||||||
nfapi_nr_rach_indication_t rach_ind;
|
|
||||||
nfapi_nr_rx_data_indication_t rx_ind;
|
|
||||||
nfapi_nr_crc_indication_t crc_ind;
|
|
||||||
} nr_queue_candidate;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1030,7 +1030,14 @@ void nr_schedule_ulsch(module_id_t module_id,
|
|||||||
harq_id,
|
harq_id,
|
||||||
cur_harq->round,
|
cur_harq->round,
|
||||||
cur_harq->ndi);
|
cur_harq->ndi);
|
||||||
|
gNB_MAC_INST *gNB = RC.nrmac[0];
|
||||||
|
if (sched_pusch->frame == gNB->handled_frame && sched_pusch->slot == gNB->handled_slot) {
|
||||||
|
LOG_D(NR_MAC, "Dropping becasue frame %d == gNB frame %d, slot %d == gNb slot %d\n",
|
||||||
|
frame, gNB->handled_frame, slot, gNB->handled_slot);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gNB->handled_frame = sched_pusch->frame;
|
||||||
|
gNB->handled_slot = sched_pusch->slot;
|
||||||
/* PUSCH in a later slot, but corresponding DCI now! */
|
/* PUSCH in a later slot, but corresponding DCI now! */
|
||||||
nfapi_nr_ul_tti_request_t *future_ul_tti_req = &RC.nrmac[module_id]->UL_tti_req_ahead[0][sched_pusch->slot];
|
nfapi_nr_ul_tti_request_t *future_ul_tti_req = &RC.nrmac[module_id]->UL_tti_req_ahead[0][sched_pusch->slot];
|
||||||
AssertFatal(future_ul_tti_req->SFN == sched_pusch->frame
|
AssertFatal(future_ul_tti_req->SFN == sched_pusch->frame
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ void mac_top_init_gNB(void)
|
|||||||
|
|
||||||
RC.nrmac[i]->ul_handle = 0;
|
RC.nrmac[i]->ul_handle = 0;
|
||||||
|
|
||||||
|
RC.nrmac[i]->handled_frame = 1025;
|
||||||
|
|
||||||
if (get_softmodem_params()->phy_test) {
|
if (get_softmodem_params()->phy_test) {
|
||||||
RC.nrmac[i]->pre_processor_dl = nr_preprocessor_phytest;
|
RC.nrmac[i]->pre_processor_dl = nr_preprocessor_phytest;
|
||||||
RC.nrmac[i]->pre_processor_ul = nr_ul_preprocessor_phytest;
|
RC.nrmac[i]->pre_processor_ul = nr_ul_preprocessor_phytest;
|
||||||
|
|||||||
@@ -603,6 +603,9 @@ typedef struct gNB_MAC_INST_s {
|
|||||||
NR_CellGroupConfig_t *secondaryCellGroupCommon;
|
NR_CellGroupConfig_t *secondaryCellGroupCommon;
|
||||||
NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config;
|
NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config;
|
||||||
|
|
||||||
|
frame_t handled_frame;
|
||||||
|
sub_frame_t handled_slot;
|
||||||
|
|
||||||
} gNB_MAC_INST;
|
} gNB_MAC_INST;
|
||||||
|
|
||||||
#endif /*__LAYER2_NR_MAC_GNB_H__ */
|
#endif /*__LAYER2_NR_MAC_GNB_H__ */
|
||||||
|
|||||||
Reference in New Issue
Block a user