From 273b9fba4d562cd8b24805879eb0a3bacbf1f542 Mon Sep 17 00:00:00 2001 From: Shubhika Garg Date: Thu, 6 Nov 2025 17:05:37 +0100 Subject: [PATCH] doc: Fix the formatting of gNB RACH Processing document - Organize into a main title and sub-headings - Put var/func as inline code - Add anchor links for the referenced step --- doc/rach_processing_in_gNB.md | 40 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/doc/rach_processing_in_gNB.md b/doc/rach_processing_in_gNB.md index 5c15cf0812..9483425900 100644 --- a/doc/rach_processing_in_gNB.md +++ b/doc/rach_processing_in_gNB.md @@ -1,24 +1,28 @@ -The gNB RACH processing +# The gNB RACH Processing -1. Collect I/Q samples -The gNB/ru main loop, in ru_thread() +## 1. Collect I/Q Samples + +The gNB/ru main loop, in `ru_thread()` If there is rach occasions in this slot -this main loop calls rx_nr_prach_ru() that stores the I/Q samples in the prach_item_t context +this main loop calls `rx_nr_prach_ru()` that stores the I/Q samples in the `prach_item_t` context. -2.process the samples -L1_rx_thread() has received slot indication by msg on queue resp_L1, it calls rx_func() => L1_nr_prach_procedures() -L1_nr_prach_procedures() fills nfapi_nr_rach_indication_t structure from result of rx_nr_prach() that process the content of rxsigF[prachOccasion][aa] -rx_func() sends the decoded rach to upper processing by call to NR_UL_indication() that calls handle_nr_rach() => nr_initiate_ra_proc() +## 2. Process the Samples -nr_initiate_ra_proc() creates a UE context if it needs, then sets UE.ra.ra_state to what it should do +`L1_rx_thread()` has received slot indication by msg on queue `resp_L1`, it calls `rx_func() => L1_nr_prach_procedures()` +`L1_nr_prach_procedures()` fills `nfapi_nr_rach_indication_t` structure from result of `rx_nr_prach()` that process the content of `rxsigF[prachOccasion][aa]` +`rx_func()` sends the decoded rach to upper processing by call to `NR_UL_indication()` that calls `handle_nr_rach() => nr_initiate_ra_proc()`. -3. send the RACH DL -tx_func() that is launched by L1_tx_thread() as it gets L1_tx_out msg (from main loop in 1.) -tx_func()=>run_scheduler_monolithic()=>gNB_dlsch_ulsch_scheduler()=>nr_scheduler_RA() -nr_scheduler_RA() process all existing UE contexts, to see it it has to schedule a RACH DL +`nr_initiate_ra_proc()` creates a UE context if it needs, then sets `UE.ra.ra_state` to what it should do. -4. global synchronisation -resp_L1 msg for (2.) is created in tx_func() that is launched by L1_tx_thread() (see3.) when it receives slot indication as it gets L1_tx_out msg -this msg is sent by the main loop (see 1.) -tx_func()=>run_scheduler_monolithic()=>nr_schedule_response ()=>nr_schedule_ul_tti_req ()=> nr_schedule_rx_prach() -writes in the triggering structure to (1.) that it will have to run rx_nr_prach_ru() in a given future slot +## 3. Send the RACH DL + +`tx_func()` that is launched by `L1_tx_thread()` as it gets `L1_tx_out` msg (from main loop in [1.](#1-collect-iq-samples)) +`tx_func()=>run_scheduler_monolithic()=>gNB_dlsch_ulsch_scheduler()=>nr_scheduler_RA()` +`nr_scheduler_RA()` process all existing UE contexts, to see it it has to schedule a RACH DL. + +## 4. Global Synchronisation + +`resp_L1` msg for ([2.](#2-process-the-samples)) is created in `tx_func()` that is launched by `L1_tx_thread()` (see [3.](#3-send-the-rach-dl)) when it receives slot indication as it gets `L1_tx_out` msg +this msg is sent by the main loop (see [1.](#1-collect-iq-samples)) +`tx_func()=>run_scheduler_monolithic()=>nr_schedule_response ()=>nr_schedule_ul_tti_req ()=> nr_schedule_rx_prach()` +writes in the triggering structure to ([1.](#1-collect-iq-samples)) that it will have to run `rx_nr_prach_ru()` in a given future slot.