-
Robert Schmidt authored
L1 RX: use queues instead of arrays and linear search for PUCCH, PUSCH, SRS, PRACH This MR is an attempt to reduce the time L1 RX searches in array for the next job to process, and instead use a queue. This queue is a FIFO, because the various jobs (FAPI messages) to process come in order, and need to be processed in order. The MR (hopefully, to be measured) reduces the amount of time spent searching for the next UE (because the next job is always at the beginning of the queue), and should scale better for many UEs. It does the following: - introduce two helper libraries for (1) Frame.Slot calculation (sfn_t), already introduced in !3521 (merged) commit 3102068e, and (2) a ring buffer with fixed size - use sfn_t and ring buffer (gNB->pucch_queue) to remove the linear array for PUCCH (gNB->pucch) - use sfn_t and ring buffer (gNB->pusch_queue) for some PUSCH lookups. Because we need to still store PUSCH contexts, gNB->pusch is still there - use sfn_t and ring buffer (gNB->srs_queue) to remove the linear array for SRS (gNB->srs) - use sfn_t and ring buffers (gNB->prach_ru_queue and gNB->prach_l1rx_queue) to remove the linear array for PRACH (gNB->prach_list) - some minor cleanups, e.g., additional loops over the PUSCH array, using const, using pointers instead of indices, etc
463a3ad1