Commit Graph
9620 Commits
Author SHA1 Message Date
francescomani e49c6db2bf final round of warning fixes to compile nr softmodems 2023-04-07 15:52:16 +02:00
laurent f4ed558cc5 fix a bug in UE_CAPABILITY_DUMMY message, fix is correct, but the surround code is not fully consistent 2023-04-07 15:52:16 +02:00
francescomani 3ca0f39088 new round of clang warning fixes 2023-04-07 15:52:16 +02:00
luis_pereira87 486ae6e7bd Merge remote-tracking branch 'origin/nr-rrcreestablishment-fix-multipdu-proper-commits' into integration_2023_w14 2023-04-06 10:48:38 +01:00
Angelo Athanassopoulos 1679cf38ba NR RRC - RRCReestablishment - Reviewer comments
Changes
1. Passing function argument  by reference.
2. Use a pointer for ue->established_drbs[drb_id - 1] in generateDRB.
2023-04-05 22:40:55 +02:00
Robert Schmidt 19d3014150 Merge remote-tracking branch 'origin/bugfix-phy-mac-interface' into integration_2023_w14 2023-04-05 19:30:30 +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
Angelo Athanassopoulos 5b35523c2c NR RRC - RRCReestablishment - Apply clang format 2023-04-05 11:22:59 +02:00
francescomani ebd70a3915 Merge remote-tracking branch 'origin/NR_pbch_errors_at_MAC' into integration_2023_w14 2023-04-04 19:35:23 +02:00
luis_pereira87 3cf3a42b44 Flag integrityProtection work in inverse logic state, '0' means enabled which is the default the value, we need to set it to '1' to disable it 2023-04-04 18:25:08 +01:00
luis_pereira87 6fb10cd5fa Fix SRB_configList2 and DRB_configList2 array position (new_xid) while creating RRCReconfiguration message after RRCReestablishmentComplete 2023-04-04 18:13:11 +01:00
Robert Schmidt a0a92f4581 Merge remote-tracking branch 'origin/NR_UE_aperiodic_SRS' into integration_2023_w14 2023-04-04 18:50:41 +02:00
Angelo Athanassopoulos f4dc362247 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Fixed a bug where the integrity protection was included in the ASN1 and caused significant throughput bottleneck.
2023-04-04 14:05:06 +02:00
Angelo Athanassopoulos 778c88d8a9 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Cosmetic changes, also changed the LOG message for updating the UEid, and moved the drb_id_to_setup_start and nb_drb_to_setup right before the function that they are used
2023-04-04 14:05:06 +02:00
Angelo Athanassopoulos ad598a2d5d NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Removed the unused variables, and changed the tenary operator conditions of drb_id_to_setup_start & nb_drb_to_setup, to the correct ones
2023-04-04 14:05:05 +02:00
Angelo Athanassopoulos ca010654bf NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Changed the SRB2 and DRB at the do_RRCReconfiguration arguments, to pass the correct structures that are generated
2023-04-04 14:05:05 +02:00
Angelo Athanassopoulos 1923bed4a3 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Simplify RRCReestablishmentComplete procedure with respective function,
removed the block that creates the SRB2  and created a function, with doxygen
2023-04-04 14:05:05 +02:00
Angelo Athanassopoulos 9142357069 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Simplify RRCReestablishmentComplete procedure with respective function,
removed the block that creates the ASN1 DRBs  and created a function, with doxygen
2023-04-04 14:05:04 +02:00
Angelo Athanassopoulos a3c13fdc71 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Simplify RRCReestablishmentComplete procedure with respective function,
removed the block that updates NGU Tunnels and created a function, with doxygen
2023-04-04 14:05:04 +02:00
Angelo Athanassopoulos bf844247bf NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Simplify RRCReestablishmentComplete procedure with respective function,
removed the block that updates NAS PDUSession and created a function, with doxygen
2023-04-04 14:05:04 +02:00
Angelo Athanassopoulos 7eb2e99dcd NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Simplify RRCReestablishmentComplete procedure with respective function,
removed the block that frees all the NAS PDUs and created a function for this.
2023-04-04 14:05:03 +02:00
Angelo Athanassopoulos 26909e7c32 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Cosmetic changes, added doxygen configuration, and changed the rrc_gNB_process_RRCReestablishmentComplete function arguments' alignment, so in the future if an argument is removed or added to be better visible in the commits
2023-04-04 14:05:03 +02:00
Angelo Athanassopoulos 33c09b7776 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
The generateDRB function now creates a DRB and puts it in the struct member of gNB_RRC_UE_t, from this struct we can generate ASN1 messages by calling the generateDRB_ASN1
2023-04-04 00:44:43 +02:00
Angelo Athanassopoulos af8b3b0486 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Added function to create ASN1 DRB-ToAddMod structs from, gNB_RRC_UE_t established_drbs
2023-04-04 00:44:38 +02:00
Angelo Athanassopoulos 5403198996 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
Added struct member to gNB_RRC_UE_t to store the established DRBs for a UE, this can be used to generate ASN1 structs, during RRCReconfiguration
2023-04-04 00:18:44 +02:00
Sakthivel Velumani 2bfe9ba229 Remove dead code 2023-04-03 10:25:13 -04:00
Sakthivel Velumani 15c12caa37 Contains MAC changes to run || DLSCH
DL config as array in MAC
Run RX slot processing in Tpool thread
Fixed race in phy config
Changed mac_IF_mutex
Proc Tx: Lets wait for Proc Rx to get ACK/NACK
-(only on slots that carry ACK/NACK)
Fix problem with rfsim
Separated PDCCH and PDSCH decoding functions. Run PDCCH decoding in main UE_thread.
Fixed race in MAC dci config struct
needed for parallel processing of slots
Moved DLSCH transport block buffer to stack
rx_ind as static allocation
L2sim: Fixed calling of MAC sched in wrong slot
Fix DCI extract bug for RA procedure
2023-04-03 10:24:24 -04:00
francescomani 5c333cca65 move radio link failure detection on pbch at MAC 2023-04-02 09:48:09 +02:00
Robert Schmidt 51fe9b84dd Merge remote-tracking branch 'origin/pdcp-callbacks-simplify' into integration_2023_w13 2023-03-31 18:03:40 +02:00
Robert Schmidt 5268dbf3f8 Merge remote-tracking branch 'origin/deregistration' into integration_2023_w13 2023-03-31 18:01:00 +02:00
Robert Schmidt 8c1aeb4ab9 Merge remote-tracking branch 'origin/develop-fix-DL-2x2-errors' into integration_2023_w13 2023-03-31 17:59:54 +02:00
Robert Schmidt c4a9f0ea03 gNB RRC: Shorten time till UE is removed for RRCRelease 2023-03-31 17:23:03 +02:00
Robert Schmidt a6149386dc NR UE MAC: Decode TBS and print warning if unknown LCID 2023-03-31 17:23:03 +02:00
Robert Schmidt 25b3aaf230 NR UE RRC: DCCH messages can be on SRB1 or SRB2 2023-03-31 17:23:03 +02:00
Robert Schmidt 06436655ff Bugfix: Forward F1 DL RRC Message transfer on correct SRB 2023-03-31 17:22:59 +02:00
Robert Schmidt 7fb242d33e Send NAS_CONN_RELEASE_IND to correct NAS UE task from RRC NR UE 2023-03-31 17:22:59 +02:00
Roberto Louro Magueta b69fb5bd74 Do not send TA command when rrc_processing_timer is active 2023-03-31 14:38:56 +01:00
Robert Schmidt d1fc95a8a1 GTP: when creating a tunnel, tell which functions to use
The GTP module is common for 4G and 5G. It hardcodes the functions to
call when creating S1U and NGU tunnels. The S1U case is both applicable
for LTE and NR (NSA), which until now was not a problem as the PDCP data
forwarding functions where called pdcp_data_req. The issue is that in this
branch, the NR PDCP functions have changed to nr_pdcp_data_req_drb().

When setting up a GTP tunnel, we now pass the PDCP data forwarding
functions into GTP, since the caller knows whether it is in 4G or 5G,
but GTP itself does not.
2023-03-31 11:53:52 +02:00
Robert Schmidt 99d5e50b6a fix merge 2023-03-30 19:58:55 +02:00
Robert Schmidt 1ac428a323 Merge remote-tracking branch 'origin/develop-handle-reconfigurationWithSync' into integration_2023_w13 2023-03-30 19:19:37 +02:00
Roberto Louro Magueta cf8dff2093 Implementation to update the RRC timers at UE 2023-03-28 18:52:48 +01:00
Roberto Louro Magueta 670fcc0459 Fix handle_nr_ul_harq() for CFRA in SA 2023-03-28 18:52:48 +01:00
Roberto Louro Magueta 81d44c6422 Stop timer T304 when RA is succeeded 2023-03-28 18:52:48 +01:00
Roberto Louro Magueta 889a50072f Implementation of resynchronization procedures for a gNB with a given Nid_cell 2023-03-28 18:52:48 +01:00
Robert Schmidt 4700dde2ae Trigger deregistration 2023-03-28 14:12:05 +02:00
Robert Schmidt e35401efde NAS refactor: no moduleID, group UICC and security in one context 2023-03-28 14:12:05 +02:00
francescomani 0de51bcd93 scheduling aperiodic SRS at UE 2023-03-28 11:11:31 +02:00
Robert Schmidt 6529d875d8 nr_pdcp_data_req_srb(): take callback to forward data 2023-03-27 16:47:46 +02:00
Robert Schmidt ffebe2498d Simplify callback for deliver_pdu 2023-03-27 16:47:46 +02:00
Robert Schmidt 0f43c2c713 PDCP DL handling: unlock PDCP before forwarding PDU
nr_pdcp_entity_recv_sdu() processes PDCP SDUs, and forwards the PDU at the
end of the function, while having the PDCP lock. This can lead to
deadlocks, e.g., when another thread goes through RLC and tries to
access the PDCP while the PDCP tries to lock the RLC.

This commit changes the logic: instead of having recv_sdu() forward the
PDU directly, it fills a buffer with the PDU (thus the name change to
process_sdu()), and returns. We then unlock the PDCP, before forwarding
the PDU, thus eliminating potential deadlocks.
2023-03-27 16:47:46 +02:00