Commit Graph
261 Commits
Author SHA1 Message Date
francescomani d8911ff19d use slot type for slots in NR 2025-03-04 18:04:12 +01:00
Laurent THOMAS 5416be3736 move byte2m128i in a more logical place 2025-01-30 17:14:10 +01:00
Robert Schmidt 08ddce4750 Make independent of numerology: no time conversion macros
Similar as the parent comment, remove time macros. In this particular
case, we can just pass the exact frame/slot information, instead of
squeezing it in a single integer.
2025-01-27 10:59:19 +01:00
Robert Schmidt 32363ccaad Remove usage of emulate_l1 flag at gNB
The usage of this flag in the L1 is simply wrong: either, the NFAPI mode
runs L1, or not. Correspondingly, add an assert to check this invariant.

In the NR_IF_module, the correct check to do is for VNF (implying no L1,
or "emulation of L1" [which is not true]), in which case we use
queues.
2025-01-27 10:59:19 +01:00
Robert Schmidt 7949b622be RACH.indication: don't check time window
Since commit defc97ec16 ("Msg2 and Msg3 at gNB: check allocation before
committing to Msg2"), the scheduler calculate Msg2/Msg3 frame/slot
before allocation of Msg2, and not when receiving Msg1. It also respects
the RA response window correctly.

Correspondingly, we don't need to calculate here if the RACH.indication
is within the time window. The scheduler will do this.
2025-01-27 10:59:19 +01:00
Robert Schmidt e3bad16ab8 Call indication regularly
Upon reception of FAPI UL messages (e.g., RACH.indication), those
messages are put into queues, to be delivered in a single call,
NR_UL_indication(). Call the scheduler to trigger processing in UL.

Note that ideally, these queues should not exist at all, and messages
should just be delivered asynchronously, as this would lead to less
copying of messages. Currently, we fulfill the scheduler interface
instead.

Important! Trigger UL after having run DL scheduler and sent the
messages, to ensure short delay between Slot.indication, and the
response to those messages.
2025-01-27 10:59:15 +01:00
Robert Schmidt 412446077f IF module slot_indication: send message in PNF
Use this function to implement distinct behavior for monolithic or PNF:

- monolithic: run the scheduler, as normal
- PNF: send a slot indication; the VNF will send an answer which the PNF
  will handle elsewhere.

Add function declarations to make nr_ulsim compile, as NR_IF_Module.c is
part of the MAC sources. As of now, this is necessary; I think the right
way would be to take NR_IF_Module.c out of the MAC, and make this a
"glue" library that sticks L1 and L2 together, in monolithic (in VNF, in
that case, we should not link in L1, and for the PNF not the L2,
creating separate executables... Rome was not built in one day).
2025-01-27 10:59:15 +01:00
Robert Schmidt 39d9d32eda Merge remote-tracking branch 'origin/local-UL_INFO' into integration_2025_w02 (!3076)
Move UL_INFO structure allocation local to a rx slot processing

UL_INFO is allocated a gNB, so require mutex and obscur information
passing function to function.  Instead, make a local UL_INFO per slot,
removing the mutex and making the code easier to understand.
2025-01-13 07:46:05 +01:00
Laurent THOMASandRobert Schmidt b4bc7c96ba Move UL_INFO structure allocation local to a rx slot processing
Use UL_INFO on the stack, to simplify the code.  move in the same struct
the associated rach, pdu, crc, srs arrays that where pointed from
directly in gNB structure Keep in nfapi the existing logic that make
malloc for theses rach, pdu, crc, srs array lists

Pass only relevant fields, where appropriate.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2025-01-10 18:05:58 +01:00
francescomani 4dd69427d8 set MSG3 TPC based on preamble power indicated from L1 2025-01-06 10:43:47 +01:00
Robert Schmidt b5675d3eea Merge remote-tracking branch 'origin/nfapi-p7-refactoring' into integration_2024_w48 (!3131)
FAPI P7 Refactoring and unitary test creation

This MR is a follow-up to the work done in !2714 this time separating
the P7 FAPI messages into its own library (nr_fapi_p7).

In the same way, utility functions to copy, free and compare have been
added for each message, as well as an addition function to get the
allocated size for a message, which is used for the messages that can be
too big to fit in a buffer that's allocated in the stack.

Unitary tests have been added for each of the messages, testing
pack/unpack and the utility functions added.
2024-11-30 12:59:25 +01:00
Rúben Soares Silva 4e5b841a16 Separate LTE and NR (n)FAPI headers
Update NR P5 and P7 nFAPI headers to have 32-bit message_length
In the NR functions, this causes the header parameters following message_length to have their position shifted by 2 bytes, due to the increase in message_length size.

Change needed to accommodate SCF222.10.02 Table 3-3

Separates nfapi_p4_p5_message_header_t and nfapi_nr_p4_p5_message_header_t

Change the callbacks signature to accept/return void* intead of expecting a particular header type, being the NR/LTE distinction done inside the callback functions.

Create NR related functions for nFAPI transmit timestamp and checksum calculation.

Move nfapi_p7_codec_config_t and nfapi_p4_p5_codec_config_t to separate header to be shared between LTE and NR VNF/PNF

Move nfapi_nr_timing_info_t into NR header.

Move NR specific function declarations to NR header.
2024-11-29 09:15:03 +01:00
Guido Casati 83a4b4df64 Refactor includes in NR_PHY_INTERFACE
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Robert Schmidt f216c47ace Merge remote-tracking branch 'origin/fix-regression-4G' into integration_2024_w44 (!3008)
Fix Regression 4G

- Fix various bugs and/or regressions in 4G code
- Also, the CI does not test RFsim 4G with --sanitize, enables this to
  detect problems.
2024-11-04 19:43:52 +01:00
Robert Schmidt 68f8ef7c7a Reduce amount of logs in L1/L2
This commit removes many logs that just show memory addresses, indices,
etc., which, I presume, do not mean anything to the "average user" and
developers alike.
2024-10-29 16:36:13 +01:00
Laurent THOMAS 9898c673d8 print rnti as hexadecimal 2024-10-22 11:05:20 +02:00
Robert Schmidt 3da3ec1907 Resolve error "unknown type name"
Resolve error:

   nfapi/oai_integration/aerial/fapi_nvIPC.h:56:16: error: unknown type name ‘nvipc_params_t’
   56 | int nvIPC_Init(nvipc_params_t nvipc_params_s);

By including the header. Also, move the definiton of the struct to the
MAC, where it is actually stored, and out of the radio common_lib.h,
since this is not a radio (split 7/8) parameter.
2024-10-10 16:02:29 +02:00
francescomani 2b76e88823 remove some openair1 headers included in opeinair2 files 2024-08-09 16:16:13 +02:00
Jaroslava Fiedlerova 4a1c505782 Merge remote-tracking branch 'origin/disable_harq' into integration_2024_w29 2024-07-23 12:17:49 +02:00
Thomas Schlichter b331ad21f4 in nr_rx_sdu() use HARQ ID from nfapi_nr_crc_t instead of feedback_ul_harq 2024-07-19 10:43:52 +02:00
Florian Kaltenberger 2fa80efb52 removing assert on RACH num_preambles>1. Instead we print an error and continue RA with only the first preamble. 2024-07-16 17:27:50 -04:00
Rúben Soares da Silva a516a632d4 Fix memory leak related to RX_DATA.indication message 2024-05-24 14:49:45 +01:00
Laurent THOMAS 00d78f048a remove a unused global storage of slot number
This has no meaning at a global level, we run several slots: one tx,
several rx at same time. Some minor cleaning of C style
2024-05-03 18:32:26 +02:00
Robert Schmidt e6e25275ed Bugfix: make preamble_list an array
- It is only a couple of bytes
- It hid a bug: if two preambles, L1_nr_prach_procedures() overwrote the
  preamble of the first with the second one
2024-04-04 18:55:53 +02:00
Robert Schmidt 0e2c9e8ebb Do not reduce RACH.ind count in loop
if we reduce, we will never do all rach indications. Go one-by-one
instead.
2024-04-04 18:55:53 +02:00
Robert Schmidt 53c3e5ce1d Merge remote-tracking branch 'origin/Aerial_Integration' into integration_2024_w10 2024-03-08 17:50:06 +01:00
8150a47ba5 NVIDIA Aerial Integration
- Aerial config file
- Changes for ARC1.1. Change config file to max MCS 25. Fixed pdu size errors.
- Remove taskset from Dockerfile.gNB.aerial.ubuntu20 after changing isolated CPUs
- removed the USRP from Docker file

Co-authored-by: Florian Kaltenberger <florian.kaltenberger@eurecom.fr>
Co-authored-by: Fredrik Molander <fmolander@nvidia.com>
Co-authored-by: Reem Bahsoun <reem.bahsoun@openairinterface.org>
2024-03-08 15:53:42 +01:00
Robert Schmidt 66bdd0e801 Merge remote-tracking branch 'origin/ci-aw2s-test-15' into integration_2024_w10 2024-03-08 07:16:11 +01:00
Robert Schmidt 0128945922 nr_fill_indication(): protect with mutex
nr_fill_indication() fills CRC and RX requests, to be sent from L1 to
L2. Before this commit, nr_fill_indication() is called when
- we finally decoded LDPC (or not)
- low signal on PUSCH
This might happen at the same time, i.e., nr_fill_indication() might try
to fill both CRC and RX, in the same list, from different threads. This
can lead to this assertion:

Assertion (crc->rnti == rx->rnti) failed!
In handle_nr_ulsch() ../../../openair2/NR_PHY_INTERFACE/NR_IF_Module.c:190
mis-match between CRC RNTI e071 and RX RNTI 5e3b

e.g., e071 is low energy, and while 5e3b related message are filled in
one thread, e071 is being put into the message structure as well.

At least that is my understanding. I could not actually reproduce this
assertion; to be seen if it still happens.
2024-03-07 09:56:33 +01:00
francescomani 284d07c5ae nfapi_nr_interface cleanup 2024-03-06 11:38:26 +01:00
Raymond Knoppandkiran d52b81798b Introduce separate thread to handle gNB TX processing
This commit introduces a separate thread (l1_tx_thread) that processes
gNB DL/TX slots. It receives a message from the ru_thread when a new
slot started, and starts processing.

The DL part of the scheduler is run in the l1_tx_thread.  Therefore,
only call UL indication (for scheduler) in UL slots.  The UL indication
previously triggered the DL scheduler -- hence, it had to be called in
every slot. Now, since the DL scheduler is moved into the DL thread, we
don't have to call the scheduler in every slot anymore.

The reorder thread is removed, as reordering with this scheme is not
necessary anymore.

The main advantage of this version is that the TX can be scheduled
earlier (sl_ahead). Further, 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).

Also, the scheduler prepares PRACH/PUSCH/PUCCH FAPI PDUs. As of this
commit, the scheduler runs in the TX processing chain, whereas these
PDUs are destined for RX processing.  Thus, too avoid data races,
instead of triggering the RX processing at the same time as TX
processing in the RU thread, this commit changes the code to trigger RX
processing after the scheduler has been run in TX processing to avoid
data races.

Finally, we synchronize RU and L1 threads. This is important for
rfsimulator, since unlike most radios, rfsimulator can run slower or
faster, depending on I/O and CPU (it does not have a stable "tick").

Co-authored-by: kiran <saikiran@iitj.ac.in>
2024-02-12 12:04:55 +01:00
Robert Schmidt 88852dc9af Introduce slot indication tick to run (DL) scheduler
The next commit introduces a separate gNB TX processing thread. To
properly separate DL scheduler (for scheduling decisions) from UL
indication handling (for UL packets), this commit introduces a slot
indication "tick" to run the DL scheduler which will be put into the gNB
TX processing chain instead of the UL indication.
2024-02-12 11:25:26 +01:00
Raymond Knopp bb044cf940 Update logs to NR_ version and add some new 2024-02-06 16:03:56 +01:00
Robert Schmidt e2d5758c5d MAC: improve log messages, reduce overall verbosity 2024-02-02 15:37:06 +01:00
Laurent THOMAS 63b64d4fce move common code file in common directory
remove several unused files
remove mem_block_t that is never used in a different way than a simple heap buffer
move up IP address type and remove duplications of the same struct declaration
2023-12-19 10:37:10 +01:00
Cedric Roux 733c7e5e89 bugfix: change memory management of interface between PHY and MAC scheduler
This commit fixes a bug caused by global variables in the gNB_MAC_INST
structure used to transfer MAC scheduler's results to the PHY layer.

When using several threads in the PHY layer, it may happen that the
MAC scheduler is called a second time by the second PHY thread for the
next slot before the content of the global variables in the gNB_MAC_INST
structure used to store the result of the MAC scheduler for the current
slot have been consumed by the first thread, leading to unpredictable
results (all of them certainly wrong).

The solution is to introduce a small memory management module for the
interface between the PHY threads and the MAC scheduler. The MAC
scheduler now fills the data structures passed to it, and not a
global variable anymore. The PHY layer manages the structures and
ensures that no data is overwritten before being fully consumed by
the various threads of the PHY layer.

Some care has to be taken because several PHY threads will access the
same structures at the same time for a given slot (in read mode, so
it's okay). A mechanism of reference counting has thus been introduced.

Only one CC is supported. This restriction should not be too hard
to remove if/when needed. (The code before this commit does not seem
to work for more than one CC anyway.)
2023-04-05 16:39:12 +02:00
Robert Schmidt 8a15fb7c63 RC: forward declarations and link physims better
The simulators have been changed: due to linker errors that would arise
otherwise, a lot of functions are defined in them to avoid such errors.
Some functions are also defined in header files; in this commit, we
define most functoins in nr_dummy_functions.c, which is compiled in, not
by including the C file, but by adding it to the target in
CMakeLists.txt

- nr_dlsim+nr_ulsim need NR_IF_Module_init(), so it cannot be in
  nr_dummy_functions, but the others need it
- Link correcr NR_IF_Module_init() into these simulators, and reduce
  overall link list
- Correctly link remaining simulators
2023-03-06 20:04:38 +01:00
Rúben Soares da Silva af2ea8f275 Change hardcoded nFAPI ports to use htons and ntohs and changes to allow OAI VNF and PNF to run 2023-01-24 15:35:20 +00:00
laurent b74ba0fb92 cleaning only 2023-01-19 14:52:39 +01:00
Roberto Louro Magueta c6bfb97988 Remove calloc of report_tlv, prg_list and prgs 2022-12-23 10:39:11 +00:00
Melissa Elkadi f8efb13b7d NR MIMO 2x2 Support
This commit provides CSI reporting support
which is required for MIMO.  It also updates
the configuration files, provides sample BLER
simualtion files for packet dropping in the
MIMO 2x2 case. It also includes the hooks
and functions (e.g., updating UCI2_3_4 PDU field)
for MIMO 2x2 support. This commit will not include
any channel abstraction code or modelling.
2022-10-18 15:24:48 +02:00
Roberto Louro Magueta ae7a2f5893 Merge remote-tracking branch 'origin/develop-SRS-MIMO' into develop-SRS-feedback
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-22 14:47:55 +01:00
Robert Schmidt 51a7b7bd6e Remove memory leaks in FAPI PUCCH 0-4 PDU handling 2022-08-16 14:44:22 +02:00
Roberto Louro Magueta a721c658c8 Merge remote-tracking branch 'origin/develop-SRS-MIMO' into develop-SRS-feedback
# Conflicts:
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-06-19 03:09:32 +01:00
Roberto Louro Magueta f6cbde5343 Add const qualifier in some variables 2022-06-16 12:49:13 +01:00
rmagueta 0a71e520d6 Merge remote-tracking branch 'origin/develop-SRS-MIMO' into develop-SRS-feedback
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/main.c
2022-06-13 13:43:33 +01:00
rmagueta 7b770042ad Merge remote-tracking branch 'origin/develop' into develop-SRS-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/main.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-06-13 12:00:11 +01:00
Roberto Louro Magueta fa94c338a8 Updates in FAPI so in the future to be able to have a TPMI on MAC at gNB based on SRS 2022-06-08 11:37:03 +01:00
Melissa Elkadi cc2c3b9123 Adding required LOG_As for EpiSci CI testing. (Proxy)
In commit 05c07c401f,
four of the LOG_A logs were demoted. These are required
for the L2 simulator proxy CI testbed.
2022-06-03 16:40:46 -07:00
Roberto Louro Magueta 1bb0ce90cc Merge remote-tracking branch 'origin/develop' into develop-SRS-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
#	openair2/LAYER2/NR_MAC_gNB/main.c
2022-06-01 15:46:37 +01:00