Skip to content

L1 tx thread

knopp requested to merge l1_tx_thread into develop

This change applies to the current mode with reorder-thread-disable set. A second L1 thread (L1_thread_tx) is created to handle the TX processing of one slot. Previously with reorder-thread-disable, the TX procedures (tx_func) were run in the L1_rx_thread subsequently in rx_func. The main advantage of this version is that the TX can be scheduled earlier (sl_ahead). The following cases 30 kHz SCS have been tested with USRP and AW2S with 20,40 and 50 MHz, DDDSU with sl_ahead=4 and DDSU with sl_ahead=3. Lower values of sl_ahead (e.g. sl_ahead=3 for DDDSU creates issues in the layer 2 stack for the moment). Aside from the new thread, the MAC/PHY interface has the following differences; a) the DLSCH/ULSCH scheduler is separated from the UL_indication and has its own call from the L1 processing (gNB->if_inst->NR_mac_scheduler). This is now called in the tx_func() before doing L1 TX processing. There can no longer be race conditions in the TX path, since the scheduler/L2, TX L1 processing and the RU tx function are all execute in the same thread (L1_tX_thread). The trigger of L1_tx_thread is via a msg_q information message sent concurrently with it RX companion from ru_thread.

Merge request reports