Commit Graph
172 Commits
Author SHA1 Message Date
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
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
Raymond Knopp bb044cf940 Update logs to NR_ version and add some new 2024-02-06 16:03:56 +01:00
Laurent THOMAS b257734c6f Fix tPool calls: symmetric to pushing messages
Messages are pushed using pushNotifiedFIFO(), so we pullNotifiedFIFO()
2023-10-27 13:02:24 +02:00
Raymond Knopp 2a6b188635 removed temporary "USE_MSGQ" definition. Now, with
reorder_thread_disable we use the native message queue and L1_rx_thread instead of the thread-pool for the main L1 thread. There is a single TX thread (no slot parallelization)
2023-04-27 15:17:07 +02:00
Raymond Knopp 455e2203e7 Merge remote-tracking branch 'origin/develop' into threading-rk 2023-04-09 18:29:42 +02: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
francescomani 0d66410317 another round of review 2023-03-27 15:39:49 +02:00
Robert Schmidt 6e93619896 review comments 2023-03-27 15:26:52 +02:00
francescomani f3126586f3 removing constant max number of xlsch 2023-03-27 15:26:52 +02:00
francescomani 7c9b501310 removing call from MAC to PHY to clear structures (now automatic clearing) 2023-03-27 15:26:52 +02:00
Raymond Knopp e3425b1f9e added msg-q threading options (and CPU thread pinning) from O-RAN 7.2 branch to develop-based for testing
with USRP.
2023-03-07 11:24:26 +01:00
francescomani 721b8e9d9f setting max dlsch/ulsch limit 2023-01-23 11:31:01 +01:00
francescomani 571f488ddb remove NUMBER_OF_NR_CSIRS_MAX 2023-01-23 11:13:05 +01:00
Robert Schmidt d73e1a4133 Handle NULL return of pullTpool() 2022-08-16 14:41:02 +02:00
Robert Schmidt c4a657cc33 Avoid additional malloc() for queues and Tpool 2022-08-16 14:41:01 +02:00
Raymond Knopp 6abb1e362d Merge remote-tracking branch 'origin/tdd25period_for_MR' into F1_interop_ACC
Conflicts:
	cmake_targets/CMakeLists.txt
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair1/SCHED_NR/fapi_nr_l1.c
	openair1/SIMULATION/NR_PHY/dlschsim.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
	openair2/LAYER2/NR_MAC_gNB/main.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
	openair2/RRC/NR/MESSAGES/asn1_msg.h
	openair2/RRC/NR/nr_rrc_proto.h
	openair2/RRC/NR/rrc_gNB.c
	openair3/ocp-gtpu/gtp_itf.cpp
	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
2022-03-09 19:16:23 +01:00
Raymond Knopp 2bd90d5b49 Merge remote-tracking branch 'origin/develop' into tdd25period_for_MR
Conflicts:
	openair2/RRC/NR/MESSAGES/asn1_msg.h
2022-03-07 07:38:03 +01:00
Robert Schmidt 26d0d65747 get execution time_stats_t from Tpool job 2022-02-25 17:55:27 +01:00
Sakthivel Velumani 57c480a8a3 Merged the two thread stats into a global one 2022-02-25 17:21:17 +01:00
Raymond Knopp 5ba8b83856 Merge remote-tracking branch 'origin/aw2s-n41' into harq_latency_control
Conflicts:
	openair1/SIMULATION/NR_PHY/dlsim.c
	openair2/LAYER2/NR_MAC_gNB/config.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
	openair2/RRC/NR/nr_rrc_proto.h
	openair2/RRC/NR/rrc_gNB_nsa.c
	openair2/RRC/NR/rrc_gNB_reconfig.c
	targets/ARCH/AW2SORI/oaiori.c
2022-02-13 12:24:45 +01:00
Raymond Knopp b9b24588af Merge remote-tracking branch 'origin/develop' into aw2s-n41
Conflicts:
	cmake_targets/phy_simulators
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
2022-02-11 12:21:29 +01:00
Robert Schmidt a36555b254 Merge remote-tracking branch 'origin/develop-SRS' into integration_2022_wk06_a 2022-02-08 18:06:53 +01:00
rmagueta e8657ec854 Merge remote-tracking branch 'origin/develop' into develop-SRS
# Conflicts:
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
2022-02-08 09:31:32 +00:00
Robert Schmidt 9594e422bc Merge remote-tracking branch 'origin/NR_pdcch_improvements' into integration_2022_wk06 2022-02-07 18:48:52 +01:00
Raymond Knopp 495f0150da Merge branch 'NR_pdcch_improvements' into aw2s-n41
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
2022-02-01 10:56:20 +01:00
Raymond Knopp 7d4bdfb566 Merge remote-tracking branch 'origin/develop' into aw2s-n41 2022-02-01 10:46:13 +01:00
luis_pereira87 0e159f8b6b Merge remote-tracking branch 'origin/develop' into bler_txoptim
# Conflicts:
#	openair1/SCHED_NR/fapi_nr_l1.c
2022-01-25 08:49:16 +00:00
francescomani e7f544e139 Merge remote-tracking branch 'origin/develop' into NR_pdcch_improvements 2022-01-24 19:08:21 +01:00
Raymond Knopp 90c66bb7b1 Merge remote-tracking branch 'origin/develop' into aw2s-n41
Conflicts:
	executables/nr-softmodem.c
	openair1/PHY/NR_TRANSPORT/nr_dlsch.c
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair1/SIMULATION/NR_PHY/dlsim.c
	openair1/SIMULATION/NR_PHY/ulsim.c
	openair2/LAYER2/NR_MAC_gNB/config.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
2022-01-24 11:11:46 +01:00
luis_pereira87 015e360d42 Merge remote-tracking branch 'origin/develop' into bler_txoptim
# Conflicts:
#	ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
#	ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
#	openair1/SCHED_NR/fapi_nr_l1.c
2022-01-10 14:03:55 +00:00
Laurent THOMAS b4b457345d merge develop 2022-01-10 12:49:47 +01:00
francescomani 98e8b74331 Merge remote-tracking branch 'origin/develop' into NR_pdcch_improvements 2022-01-10 10:13:18 +01:00
rmagueta cf8f6fdeed Merge remote-tracking branch 'origin/develop' into develop-SRS
# Conflicts:
#	ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
#	ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
#	openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
#	openair2/RRC/NR/L2_nr_interface.c
2022-01-08 12:11:56 +00:00
Raymond Knopp e9e5dd4c1a Merge branch 'CSI-SA' into aw2s-n41
Conflicts:
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair2/LAYER2/NR_MAC_gNB/config.c
2021-12-12 22:47:46 +01:00
francescomani d6dedc1f49 handling multiple pdcch pdu at fapi and phy 2021-12-09 13:14:19 +01:00
Sakthivel Velumani 1af5a89dd1 Removed active waiting loop
which could block threads. Instead used a separate thread to reorder the finished the job messages
2021-12-05 17:48:32 +05:30
rmagueta c2d948a055 Implementation of the remaining procedures until call the new PHY function nr_get_srs_signal at gNB 2021-11-22 17:46:48 +00:00
rmagueta 5697860db1 Fill NFAPI of SRS pdu 2021-11-22 13:56:18 +00:00
Raymond Knopp 02b17c79d6 commit before merge. minor changes for testing 2021-11-14 17:28:24 +01:00
Melissa Elkadi 4eb0aceab6 Merge remote-tracking branch 'eurecom/develop' into episys/master-nsa 2021-10-27 15:05:05 -07:00
Melissa Elkadi b56c8ac3ce Merge remote-tracking branch 'eurecom/develop' into origin-episys-merge-nsa 2021-10-25 10:27:11 -07:00
francescomani a8d2265a9d Merge remote-tracking branch 'origin/develop' into NR_cleanup_MACPHY 2021-10-20 15:50:18 +02:00
rmagueta b1a8b06547 Merge remote-tracking branch 'origin/integration_2021_wk41' into integration_2021_wk41_bwt-abs
# Conflicts:
#	ci-scripts/xml_files/fr1_sa_quectel.xml
#	openair1/SCHED_NR/fapi_nr_l1.c
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
#	openair2/GNB_APP/gnb_paramdef.h
2021-10-14 14:22:23 +01:00
Raymond Knopp 33371f226a initial changes for n41 support with aw2s RRU 2021-10-05 11:37:34 +02:00
francescomani 773d55f422 some cleanup of MAC and PHY cross compilation 2021-09-27 17:29:17 +02:00
Deokseong "David" Kim 6a7fe60266 Episys/david/sync between dl tti req and tx data req 2021-09-21 22:38:29 +00:00
Sakthivel Velumani 0de2a333af Merge branch 'develop' into phy-asan-fixes 2021-09-14 16:47:15 +05:30
rmagueta 5765d0e508 Fix build after merge 2021-09-02 18:57:14 +01:00
rmagueta 5e1065e88f Merge remote-tracking branch 'origin/develop' into bandwidth-testing-abs
# Conflicts:
#	executables/nr-uesoftmodem.c
#	executables/nr-uesoftmodem.h
#	executables/softmodem-common.h
#	openair1/PHY/MODULATION/slot_fep_nr.c
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair1/SCHED_NR/fapi_nr_l1.c
#	openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
#	openair2/LAYER2/NR_MAC_UE/mac_proto.h
#	openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
#	openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2021-09-02 17:57:48 +01:00