Commit 3ec1cf5f authored by Robert Schmidt's avatar Robert Schmidt

nr_schedule_response: make right order

parent 0ae2f19f
...@@ -163,28 +163,19 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO) ...@@ -163,28 +163,19 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
uint8_t number_ul_tti_pdu = (UL_tti_req==NULL) ? 0 : UL_tti_req->n_pdus; uint8_t number_ul_tti_pdu = (UL_tti_req==NULL) ? 0 : UL_tti_req->n_pdus;
DevAssert(NFAPI_MODE == NFAPI_MONOLITHIC); DevAssert(NFAPI_MODE == NFAPI_MONOLITHIC);
bool is_dl = slot_type == NR_DOWNLINK_SLOT || slot_type == NR_MIXED_SLOT;
if (slot_type == NR_DOWNLINK_SLOT || slot_type == NR_MIXED_SLOT) { processingData_L1tx_t *msgTx = NULL;
processingData_L1tx_t *msgTx = NULL; msgTx = gNB->msgDataTx;
msgTx = gNB->msgDataTx; msgTx->num_ul_pdcch = number_ul_dci_pdu;
msgTx->num_ul_pdcch = number_ul_dci_pdu; /* store the sched_response_id for the TX thread to release it when done */
/* store the sched_response_id for the TX thread to release it when done */ msgTx->sched_response_id = Sched_INFO->sched_response_id;
msgTx->sched_response_id = Sched_INFO->sched_response_id;
DevAssert(Sched_INFO->DL_req.SFN == frame); DevAssert(Sched_INFO->DL_req.SFN == frame);
DevAssert(Sched_INFO->DL_req.Slot == slot); DevAssert(Sched_INFO->DL_req.Slot == slot);
nr_schedule_dl_tti_req(gNB, &Sched_INFO->DL_req);
for (int i = 0; i < number_ul_dci_pdu; i++)
msgTx->ul_pdcch_pdu[i] = UL_dci_req->ul_dci_pdu_list[i];
nr_schedule_tx_req(gNB, &Sched_INFO->TX_req);
/* Both the current thread and the TX thread will access the sched_info if (is_dl) {
* at the same time, so increase its reference counter, so that it is nr_schedule_dl_tti_req(gNB, &Sched_INFO->DL_req);
* released only when both threads are done with it.
*/
inc_ref_sched_response(Sched_INFO->sched_response_id);
} }
for (int i = 0; i < number_ul_tti_pdu; i++) { for (int i = 0; i < number_ul_tti_pdu; i++) {
...@@ -231,6 +222,18 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO) ...@@ -231,6 +222,18 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
} }
} }
if (is_dl) {
nr_schedule_tx_req(gNB, &Sched_INFO->TX_req);
for (int i = 0; i < number_ul_dci_pdu; i++)
msgTx->ul_pdcch_pdu[i] = UL_dci_req->ul_dci_pdu_list[i];
/* Both the current thread and the TX thread will access the sched_info
* at the same time, so increase its reference counter, so that it is
* released only when both threads are done with it.
*/
inc_ref_sched_response(Sched_INFO->sched_response_id);
}
/* /*
if (NFAPI_MODE == NFAPI_MODE_VNF) { //If VNF, oai_nfapi functions send respective p7 msgs to PNF for which nPDUs is greater than 0 if (NFAPI_MODE == NFAPI_MODE_VNF) { //If VNF, oai_nfapi functions send respective p7 msgs to PNF for which nPDUs is greater than 0
......
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