Commit Graph
340 Commits
Author SHA1 Message Date
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
francescomani 12ccca72b6 further improvements 2023-03-27 15:26:52 +02:00
francescomani 779748579c fixes for physical simulators 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 48d19391e2 fix for PHY structure disactivation 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
Melissa Elkadi 4dd579e042 int32_t to c16_t conversion
This commit includes changes to the function
footprints for vaiours NR UE and gNB functions.
It does not updated the LTE code. For functions
shared by both LTE and 5G, we maintained the original
LTE footprint and argument structure.

Several of the simulators that use these functions
have been updated as well. The specific usage of these
functions which index into the int32_t buffers and
treat the first int16_t and the real and the second
as the complex should be modified in the near future.
2023-03-15 12:45:39 -07:00
francescomani 2385bc364a fixing most warning when compiling nr-softmodem 2023-03-09 19:01:46 +01:00
Robert Schmidt e90ef3bc68 Split phy_init.h into two files (for LTE/NR) 2023-03-06 20:05:38 +01:00
Robert Schmidt 3c73b3aadf Merge remote-tracking branch 'origin/NR_refactor_PHY_vector_sizes' into integration_2022_wk06 2023-02-09 19:22:57 +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
francescomani d8612a6ca7 some more cleanup 2023-01-23 11:13:05 +01:00
francescomani dd24ddd645 remove NUMBER_OF_NR_PUCCH_MAX 2023-01-23 11:13:05 +01:00
Robert Schmidt 12384bbe25 Clean up phy_init_nr_gNB()
- variable is_secondary_gnb is not used anywhere, so remove
- variable lowmem is not used/defines should be changed, so remove
2022-12-12 23:40:39 +01:00
francescomani e79b926905 rename sdr to radio 2022-10-19 17:42:26 +02:00
francescomani 539563f03e moving targets/ARCH to sdr/ 2022-09-26 11:17:44 +02:00
laurent 23f49bd013 merge-develop-and-conflicts 2022-09-20 14:03:25 +02:00
Robert Schmidt 203ac17833 Merge remote-tracking branch 'origin/by-core-thread-pool' into integration_2022_wk35b 2022-09-04 21:46:04 +02:00
Robert Schmidt 95dad65c9a Merge remote-tracking branch 'origin/nr_rotation_optimization' into integration_2022_wk35b 2022-09-04 21:39:09 +02:00
laurent aa2a36768c simplify thread pool configuration
fix segv

fix bug redeclaration of same struct in phy sim

Apply 1 suggestion(s) to 1 file(s)

code reveiw comments
2022-09-02 11:36:47 +02:00
laurent cfeae9560e merge develop 2022-08-26 18:02:50 +02:00
Thomas Schlichter 3c17573f34 apply nr rotation only on used PRBs instead of complete OFDM symbol 2022-08-25 11:05:48 +02:00
Hongzhi Wang 1d4ffe42c4 Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	executables/nr-softmodem.h
	executables/softmodem-common.h
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-22 20:02:34 +02:00
Raymond Knopp 787249fe8a fix for L2 emulator test 2022-08-20 19:20:50 +02:00
Hongzhi Wang 31acfdea58 Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-18 17:38:55 +02:00
Robert Schmidt 2465f1fb51 Don't allocate gNB rxdataF, it is managed at the RU
Removes phy_procedures_gNB_common_RX() (only used in nr_ulsim) + fixes
in pucchsim
2022-08-16 14:44:22 +02:00
Robert Schmidt 004d6d3bab Correctly stop tx_reorder and L1_stats threads 2022-08-16 14:41:02 +02:00
Robert Schmidt 31dcdf2152 Implement abortNotifiedFIFO() to unlock FIFO waits 2022-08-16 14:41:02 +02:00
Robert Schmidt d73e1a4133 Handle NULL return of pullTpool() 2022-08-16 14:41:02 +02:00
Robert Schmidt e63cc03c9d Implement abortTpool()
This stops all ongoing threads (using pthread_join()), and marks FIFOs
to not block anymore. In this case, returned messages will be NULL.
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 491d97dee9 removal of IF5_tools.x and old NR RU multi-threaded implementation. Fixes for LTE build 2022-08-06 12:13:16 +02:00
Raymond Knopp 1b35f0b163 added profiling circular buffer to gNB 2022-08-05 07:18:44 +02:00
Raymond Knopp 3760ffa4af Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-07-30 19:36:27 +02:00
Ilario FAVERO c5b8fa5418 New command line arg for disabling stats: --disable-stats 2022-06-24 14:32:39 +02:00
Hongzhi Wang b7295ab45f Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	executables/nr-gnb.c
	openair1/PHY/CODING/nrLDPC_defs.h
	openair1/PHY/INIT/nr_init.c
	openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
	openair1/SIMULATION/NR_PHY/ulsim.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-06-17 14:49:54 +02:00
Raymond Knopp 6236fe8e77 changes for thread-core pinning 2022-06-11 08:08:03 +02:00
Robert Schmidt dc4f610245 Merge remote-tracking branch 'origin/ulsim-perf-testing' into integration_2022_wk23 2022-06-09 17:47:57 +02:00
Sakthivel Velumani 93e6bd26da Made channel estimation techniques configurable 2022-06-08 21:32:07 +05:30
Robert Schmidt b1d07fb3e0 print_meas_log(): do not write beyond memory end 2022-06-07 17:41:21 +02:00
Robert Schmidt dd801325d4 Terminate LOG with newline 2022-06-03 17:10:03 +02:00
Raymond Knopp f0e8032b29 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-05-01 14:51:27 +02:00
francescomani 3ec401f2f6 Merge remote-tracking branch 'origin/develop' into tdd25period_for_MR 2022-04-28 17:26:33 +02:00
Raymond Knopp 86b5b9db3d Merge remote-tracking branch 'origin/develop' into tdd25period_for_MR
Conflicts:
	openair2/GNB_APP/gnb_config.c
	openair2/GNB_APP/gnb_paramdef.h
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
	openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
	openair2/RRC/NR/rrc_gNB_reconfig.c
2022-04-09 19:44:26 +02:00
Laurent THOMAS 293a53e373 code review remarks, cannot perform full test (develop bugged) 2022-04-06 17:07:25 +02:00
Laurent THOMAS a7e7d05da3 fix difficult to read code 2022-03-24 14:38:17 +01:00
francescomani 12f9dd95eb Merge remote-tracking branch 'origin/develop' into nr_mimo_precoding_codebook_I 2022-03-22 09:44:40 +01:00
Raymond Knopp d840ca0dee Merge remote-tracking branch 'origin/develop' into tdd25period_for_MR
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-03-22 07:03:40 +01:00
Robert Schmidt ca303c9fd5 Merge remote-tracking branch 'origin/continuous-tx' into integration_2022_wk11 2022-03-18 16:51:50 +01:00