Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 84d8f6c272 Add stubs for F1 Setup Request/Response/Failure messages 2023-09-21 12:49:20 +02:00
Robert Schmidt 5315d69692 Read SCD in separate function to simplify code 2023-09-21 12:49:20 +02:00
Robert Schmidt 24c61fe1f9 Completely read ServingCellConfigCommon when reading conf
Before this commit, we did not read the ServingCellConfigCommon (SCC)
completely at start; rather, we read most (but not all) of it, then also
the minRXTXTIME, and at RRC initialization in
openair_rrc_gNB_configuration(), we filled the
pusch-TimeDomainAllocationList into the SCC, depending on the
minRXTXTIME.

The reason might be that we read part of the SCC, use that to fill the
NRRRC_CONFIGURATION_REQ, read also the minRXTXTIME (part of the RRC
config), and then we have all we need to "finalize the SCC". Since we
move everything to the MAC, I avoid too much upfront code changes,
hardcode the minRXTXTIME (and check with an assert), and undo this in a
later commit when the "RRC config" relevant for radio parameters, e.g.,
minRXTXTIME, is moved to MAC.

I verified the equality of the SCC before (at the end
openair_rrc_gNB_configuration()) and after (at the end of
get_scc_config()) this commit manually using a printf, assuming that
after RRC initialization, we didn't do any further modifications to the
SCC.  But in fact, I cannot know that we don't do it...
2023-09-21 12:49:20 +02:00
Robert Schmidt ddd37ca145 Read SCC in separate function, and fill FDD values
- Simplify code by reading the SCC in a separate function
- Fill the F1 Setup Request message correctly in case of FDD, from SCC
2023-09-21 12:49:20 +02:00
Robert Schmidt 0a1b728051 F1 Setup Response: remove unused struct fields 2023-09-21 12:49:20 +02:00
Robert Schmidt ca374e86eb Refactor F1 Setup Req: sys_info is specific to each cell 2023-09-21 12:49:20 +02:00
Robert Schmidt d21aa79fe0 Refactor F1 Setup Req: MeasurementTimingInformation is part of cell info 2023-09-21 12:49:20 +02:00
Robert Schmidt 85d8916476 Refactor F1 Setup Req: Move radio info into cell 2023-09-21 12:49:20 +02:00
Robert Schmidt 7456cf945d Refactor F1 Setup Req: Reorganize cellIDs_t and rename to f1ap_served_cell_info_t 2023-09-21 12:49:20 +02:00
Robert Schmidt 3dbcadf244 Refactor F1 Setup Req: TAC is optional 2023-09-21 12:49:20 +02:00
Robert Schmidt d8276eed3e F1AP: harmonize f1ap_plmn_t type in all messages 2023-09-21 12:49:20 +02:00
Robert Schmidt d6e99a8218 gnb_config.c: Simplify F1 Setup reading 2023-09-21 12:49:20 +02:00
Robert Schmidt fd3ecb29b0 Remove unused stuff in F1 module 2023-09-21 12:49:20 +02:00
Robert Schmidt 4badf66973 Add mutexes to CreateF1Inst(), only save data if provided 2023-09-21 12:49:20 +02:00
Robert Schmidt a241922614 DU: Retry on unsuccessful SCTP connection attempt 2023-09-21 12:49:20 +02:00
Robert Schmidt 632ca15752 Separate F1 Setup Request and network configuration
This branch series implements the usage of the F1 Setup Request
internally at the gNB, even if CU and DU run in the same process. Until
now, the F1 Setup Request contained struct fields to pass IP
configuration to the F1AP module; this information is not necessary in
monolithic, nor should it be relevant when passing the information in
F1 Setup Request.

Therefore, this commit moves all IP connection-related information out
of the F1 Setup Request and into a separate structure instead.  In order
to give the F1AP module the necessary connection information, the
DU_REGISTER_REQ message is introduced that combines the F1 Setup Request
and IP configuration, such that the F1AP module can setup the SCTP
connection and then send the F1 Setup Request message.

In a later commit, there will be a callback for F1 Setup Request at MAC
to simply register the DU at the CU. The monolithic callback will simply
forward the F1 Setup Request The F1AP callback will look up the IP
configuration and create DU_REGISTER_REQ message containing IP
configuration and F1 Setup Request, which is then handled by the F1AP
module. To this end, a separate function in gnb_config.c allows to read
IP information from configuration.
2023-09-21 12:49:20 +02:00
Robert Schmidt 4f7ae5dd2a No double instance book keeping 2023-09-21 12:49:20 +02:00
Robert Schmidt 57876fc13f F1 setup request: message encoder takes struct
Instead of storing the F1 Setup Request implicitly in F1 context, we
provide the F1 Setup Request message to be encoded explicitly to the
encoding function.
2023-09-21 12:49:20 +02:00
Robert Schmidt 45a678cb60 Harmonize call to F1AP_get_next_transaction_identifier()
We ever only have one instance, so hard code that.
2023-09-21 12:49:20 +02:00
Robert Schmidt 96e300dabd F1AP: remove default stream ID, we never use anything else but 0 2023-09-21 12:49:20 +02:00
Robert Schmidt 6e08c4c0bd Remove unused function nr_read_config_and_init() 2023-09-21 12:49:20 +02:00
Robert Schmidt 515b71f995 Remove useless type f1ap_cu_setup_req_t 2023-09-21 12:49:20 +02:00
Robert Schmidt 4be567bb77 Remove unneeded eth_params_n from eNB/UE MAC 2023-09-21 12:49:20 +02:00
Robert Schmidt e7b971a4af RRC: remove useless/unused variable 2023-09-21 12:49:20 +02:00
Robert Schmidt 3b8c1cd59e Fix memory leak in config_srs() 2023-09-21 12:49:20 +02:00
Robert Schmidt 15c2af2384 get_initial_SpCellConfig(): don't reuse memory
In the case of MIMO, we reused memory to point to the same PUCCH
resource. This is problematic, since ASN_STRUCT_FREE() would try to free
this resource twice.

This commit changes to create distinct memory for the PUCCH resources,
while putting the same configuration to still use the same PUCCH
resource from a radio configuration point of view.
2023-09-21 12:49:20 +02:00
Robert Schmidt a460794792 Delete dead code 2023-09-21 12:49:20 +02:00
Robert Schmidt 1987f3259c Merge remote-tracking branch 'origin/raphael/ci-fix-ubuntu-build-log-scheme' into integration_2023_w37 2023-09-14 17:59:19 +02:00
Robert Schmidt 4c83925fc4 Merge remote-tracking branch 'origin/service-models-integration' into integration_2023_w37 2023-09-14 17:59:12 +02:00
Robert Schmidt f66d995df7 Merge remote-tracking branch 'origin/NR_UE_harq_improvements' into integration_2023_w37 2023-09-14 17:59:04 +02:00
Robert Schmidt cf1a0b1cd7 Merge remote-tracking branch 'origin/bugfix-nr-rlc-control-pdu' into integration_2023_w37 2023-09-14 12:31:10 +02:00
Robert Schmidt 0fe4605143 Merge remote-tracking branch 'origin/develop-DL-chModel' into integration_2023_w37 2023-09-14 12:31:03 +02:00
Robert Schmidt e272dd89e1 Merge remote-tracking branch 'origin/Fix_FAPI_PARAM_and_CONFIG_messages' into integration_2023_w37 2023-09-14 12:30:53 +02:00
Robert Schmidt e70213cdf7 CI: declare variable before use 2023-09-13 15:12:16 +02:00
Robert Schmidt f43090fa01 CI: Wait for Attachment of UEs in L2sim 4G/5G tests 2023-09-13 15:12:16 +02:00
Robert Schmidt 79fd37b489 Merge branch 'integration_2023_w36' into 'develop'
integration_2023_w36

See merge request oai/openairinterface5g!2333

* !2185 DL delay compensation
* !2255 Add condition to call or not the function nr_mac_prepare_ra_ue()
* !2301 NR UE handling MCS for retransmissions
* !2308 Heap Allocation issue: Removed Dynamic allocation
* !2317 bugfix: don't force an UE to support en-dc, respect its capabilities
* !2318 Set security for all active SRBs after NR_RRCReestablishment
* !2321 Use appropriate CMake flags to link to UHD
* !2332 T tracer: add a trace for NR SIB1
* !2322 Remove small races in ue
* !2323 NR UE fix DCI candidates
* !2328 Add SRB1 and SRB2 received bytes to statistics
2023-09-12 11:37:40 +00:00
Robert Schmidt f13830cf29 Include log module in ASN.1 config only if necessary 2023-09-12 08:57:16 +02:00
Robert Schmidt 59d1c14dad Merge remote-tracking branch 'origin/Stats_add_srb1_srb2_rx_bytes' into integration_2023_w36 2023-09-11 14:14:03 +02:00
Robert Schmidt 2a94583e29 Merge remote-tracking branch 'origin/NR_fix_UE_max_nb_candidates' into integration_2023_w36 2023-09-11 14:13:51 +02:00
Robert Schmidt 48dd9bb31f Merge remote-tracking branch 'origin/remove-small-races-in-ue' into integration_2023_w36 2023-09-11 14:10:26 +02:00
Robert Schmidt 52abf72c29 Merge remote-tracking branch 'origin/t-trace-nr-sib1' into integration_2023_w36 2023-09-11 09:06:30 +02:00
Robert Schmidt 378516bd4f Merge remote-tracking branch 'origin/wan-sdr_dev' into integration_2023_w36 2023-09-11 09:06:19 +02:00
Robert Schmidt a1c15da786 Merge remote-tracking branch 'origin/SRBs_set_security_after_reestablishment' into integration_2023_w36 2023-09-08 17:25:23 +02:00
Robert Schmidt f5c502670a Merge remote-tracking branch 'origin/bugfix-nsa-endc' into integration_2023_w36 2023-09-08 17:25:14 +02:00
Robert Schmidt 60f99e510e Merge remote-tracking branch 'origin/HeapAllocIssue' into integration_2023_w36 2023-09-08 17:25:04 +02:00
Robert Schmidt bb7174997b Merge remote-tracking branch 'origin/NR_UE_MCS_improvements' into integration_2023_w36 2023-09-08 15:09:19 +02:00
Robert Schmidt 0226dc76cb Merge remote-tracking branch 'origin/develop-prepare-ra' into integration_2023_w36 2023-09-08 15:08:55 +02:00
Robert Schmidt 97b0844031 Merge branch 'integration_2023_w34' into 'develop'
integration_2023_w34

See merge request oai/openairinterface5g!2316

* !2283 going back to sync mode when cell is barred in MIB
* !2290 fix gtp delete. we should not delete all bearer in case of dedicaded bearer release
* !2299 fix-mem-overflow_64qam
* !2288 NR UE avoid crashes upon renewal of SIB1
* !2279 web server enhancement and doc link fix
* !2302 Tutorials: update links for Open Cells SIM Card programming tool and Ubuntu 22.04 LTS
* !2303 NR gNB limit on PUCCH bits to be scheduled
* !2207 Use F1 internally: UE Context Modification Required
* !2315 Fix LCID to RB association, allow more than 8 LCIDs in the UE
2023-08-30 06:13:45 +00:00
Robert Schmidt f08998af2c Merge remote-tracking branch 'origin/fix-lcid2rb-index-error-and-missing-lcid-greater-than-8' into integration_2023_w34 2023-08-29 14:31:54 +02:00
Robert Schmidt f0923f68fb Merge remote-tracking branch 'origin/int-f1-ue-ctxt-modif-req' into integration_2023_w34 2023-08-29 10:23:34 +02:00
Robert Schmidt 1bb77d65a6 Merge remote-tracking branch 'origin/NR_gNB_PUCCH_bits_code_rate' into integration_2023_w34 2023-08-27 17:54:00 +02:00
Robert Schmidt 04eebcbdc3 Merge remote-tracking branch 'origin/NR_SA_Tutorials' into integration_2023_w34 2023-08-24 16:51:34 +02:00
Robert Schmidt 998b58da04 Merge remote-tracking branch 'origin/fix_websrvdoc' into integration_2023_w34 2023-08-24 16:51:21 +02:00
Robert Schmidt 86801cc136 Merge remote-tracking branch 'origin/NR_UE_RRC_SIBs_renewal' into integration_2023_w34 2023-08-24 16:51:09 +02:00
Robert Schmidt 014e02904a Merge remote-tracking branch 'origin/fix-mem-overflow_64qam' into integration_2023_w34 2023-08-24 16:46:48 +02:00
Robert Schmidt 9f7e553e3e Merge remote-tracking branch 'origin/fix-gtp-delete' into integration_2023_w34 2023-08-24 16:46:42 +02:00
Robert Schmidt 21f7128209 Merge remote-tracking branch 'origin/NR_UE_cell_barred' into integration_2023_w34 2023-08-24 16:46:33 +02:00
Robert Schmidt 464a62dd97 Merge branch 'integration_2023_w33' into 'develop'
integration_2023_w33

See merge request oai/openairinterface5g!2300

* !2247 Fix cppcheck warnings related to nullPointerArithmeticRedundantCheck
* !2250 Fix cppcheck warnings related to negativeIndex
* !2281 avoid NR UE stalling if SIB not decoded
* !2273 NR_UE: fix limited UL data throughput in do-ra mode
* !2295 hack: see Bye. message when quitting gnb running with aw2s
* !2298 mapping LCID to RBID to index RLC entities
* !2267 Make read-only global variables const, additional fixes
* !2297 nr rlc: change retx logic
* !2230 Readme correction
* Lower scheduler PF averaging constant
2023-08-22 06:05:25 +00:00
Robert Schmidt 8ad215f680 Lower scheduler PF averaging constant
This time constant plays a major role in how long a UE has to wait
maximally before it might be scheduled. For instance, if a UE had a lot
of traffic, the average traffic will be high, pushing the PF coefficient
down. If another UE with no traffic in the past becomes active with
heavy traffic, the first UE might not be scheduled for an extended
period of time.

In the AW2S-Amarisoft UE CI test pipeline, we sometimes see that the
maximum number of RLC retransmissions was reached. While this might not
be the (only) cause, scheduling a UE more often might prevent such
situations, and we saw an improved stability.
2023-08-21 17:16:21 +02:00
Robert Schmidt 4d244c5c7c Update AW2S-Amarisoft CI configuration file 2023-08-21 17:16:19 +02:00
Robert Schmidt 56ceb76a3a Merge remote-tracking branch 'origin/readme-correction' into integration_2023_w33 2023-08-18 18:17:13 +02:00
Robert Schmidt d1ac08ffaa Merge remote-tracking branch 'origin/nr-rlc-retx-modification' into integration_2023_w33 2023-08-18 18:16:55 +02:00
Robert Schmidt c3e04b65df Merge remote-tracking branch 'origin/remove-rw-globals-that-are-not-written' into integration_2023_w33 2023-08-18 18:16:48 +02:00
Robert Schmidt a8aa383fee Merge remote-tracking branch 'origin/NR_RLC_LCID_indexing' into integration_2023_w33 2023-08-18 13:05:22 +02:00
Robert Schmidt f8f7c40830 Merge remote-tracking branch 'origin/fix-bye-aw2s' into integration_2023_w33 2023-08-18 13:04:42 +02:00
Robert Schmidt d0895b5ebc Merge remote-tracking branch 'origin/avoid_NR_UE_stall_if_SIB1_not_decoded' into integration_2023_w33 2023-08-18 13:04:37 +02:00
Robert Schmidt 417509d146 Merge remote-tracking branch 'origin/NR_UE_fix_do-ra_UL_throughput' into integration_2023_w33 2023-08-18 13:04:32 +02:00
Robert Schmidt 699526236c Merge remote-tracking branch 'origin/negativeIndex_cppcheck_fix_on_w27_2023' into integration_2023_w33 2023-08-18 13:04:26 +02:00
Robert Schmidt 8b87c656e0 Merge remote-tracking branch 'origin/nullPointerArithmeticRedundantCheck_cppcheck_fix_on_w27_2023' into integration_2023_w33 2023-08-18 13:04:19 +02:00
Robert Schmidt ca96b9e9bf Improve and reformat documentation of config module 2023-08-18 13:02:18 +02:00
Robert Schmidt 336e4a5ef1 Link to LDPC doc from doc/README.md 2023-08-18 12:51:41 +02:00
Robert Schmidt 24f9f87941 Improve 5G RFsim README; clarify how to overwrite the second UE's IMSI 2023-08-18 12:48:50 +02:00
Robert Schmidt 31af346ebc Improve log messages for debugging 2023-08-18 12:34:25 +02:00
Robert Schmidt 35b5782968 CI F1 and F1+E1 tests: increase attenuation to stabilize connection 2023-08-18 12:25:51 +02:00
Robert Schmidt 27f9d6f743 Use nr_generate_Msg4() in the case of Msg.3 with C-RNTI
After removing RA.crnti, there is no need to use a separate function
nr_generate_Msg3_dcch_dtch_response() to generate Msg.4 (yes, the
function mentions Msg3 but it does Msg3 response == Msg.4).

Also, using nr_generate_Msg4() has the advantage that it waits until we
have the reconfiguration available in RLC to be sent to the UE. Finally,
we can delete the old nr_generate_Msg3_dcch_dtch_response() as we don't
need it anymore.
2023-08-18 12:25:51 +02:00
Robert Schmidt 866a76dc4a Correct READMEs of docker-compose files to reflect config mounting 2023-08-18 10:35:23 +02:00
Robert Schmidt 93f59a3c6e Remove RA.crnti: it is not needed anymore
The RA.crnti field is marked as being used by NSA mode, but it is not.
OTOH, it is used in the case of RA with Msg.3 with C-RNTI MAC CE. The
latter does not necessarily need it, though, as we can change the RNTI
of the RA process when we receive C-RNTI MAC CE.

This introduces a slight complication, though, as we cannot remove the
MAC UE Context (generated when receiving Msg.3) directly when parsing
the C-RNTI MAC CE. Previously, we had both rnti and crnti in the RA
struct, and when sending Msg.4 after Msg.3 with C-RNTI MAC CE, we would
remove the UE context (this is changed in the next commit). Therefore,
we employ nr_mac_trigger_release_timer() which releases the UE after
60ms, circumventing this complication.
2023-08-14 16:25:02 +02:00
Robert Schmidt 7b7f045f1c DU: trigger UE Context Modification Required and handle 2023-08-14 16:25:02 +02:00
Robert Schmidt 3b87dd30a0 Implement ue_context_modification_required_direct() 2023-08-14 16:25:02 +02:00
Robert Schmidt d40db13e2a Make reconfiguration work 2023-08-14 16:25:02 +02:00
Robert Schmidt 6337951182 UE Context Modification Required: add RRC handler 2023-08-14 16:25:02 +02:00
Robert Schmidt e72fa6aa39 Implement F1 handlers 2023-08-14 16:25:01 +02:00
Robert Schmidt bb63aa79b2 Implement F1AP UE Context Modification Required/Confirm/Refuse F1AP messages 2023-08-14 16:24:59 +02:00
Robert Schmidt 57be09efaf Stubs for F1 UE Context Modification Required/Confirm/Refuse 2023-08-14 16:24:56 +02:00
Robert Schmidt 7fbccc709a Do not trigger RLC bearer establishment from RRC
The RRC should not trigger RLC bearer establishment: this should be done
only via F1, and in the remaining code (removed here), this principle
was violated.

Further, this code was doubly wrong, as it used the CU UE ID for the
RLC, setting up bearers with IDs 1,2,3 etc instead of the RNTI.
2023-08-14 16:24:56 +02:00
Robert Schmidt 7746897f0e Fix: use correct type for F1 UE Context Release Req 2023-08-14 16:24:56 +02:00
Robert Schmidt cd8cfab768 Remove MAC_NR target: it is not needed
The MAC_NR target is not needed; every dependent target also links
L2_NR. Therefore, this target just creates double compilation. We can
remove it without problems.
2023-08-14 16:23:47 +02:00
Robert Schmidt f40b4ab297 hack: see Bye. message when quitting gnb running with aw2s
Same commit justification as 50bf571347
2023-08-14 12:17:09 +02:00
Robert Schmidt 5b943f598d Merge branch 'integration_2023_w32' into 'develop'
integration_2023_w32

See merge request oai/openairinterface5g!2293

* !2061 Rel16 NR PRS improvements
* !2113 handle TDD pattern2 at UE
* !2266 Use cmake3 command if on RHEL
* !2287 Initialize OAIgraph before usage
* !2285 Fix alignment of Tpool user data to 32 bytes
* !2284 USRP driver: Make it compile for UHD < 4.0.0
* !2214 Use F1 Internally: switch to CU UE ID in CU
2023-08-14 06:19:33 +00:00
Robert Schmidt a082f708b6 Fix: link T into oai_eth_transpro
Via the include of the logging system, the ethernet transport
library implicitly depends on T. Hence, link T into
oai_eth_transpro.
2023-08-12 13:43:40 +02:00
Robert Schmidt 9d6de3b511 Merge remote-tracking branch 'origin/int-f1-ue-ids' into integration_2023_w32 2023-08-12 11:49:40 +02:00
Robert Schmidt d0bfaf4dcb Verify reestablishment in DU-CU split 2023-08-12 11:48:17 +02:00
Robert Schmidt 979ebdeb42 Implement RRC Reestablishment fallback with RRC Setup 2023-08-12 11:48:17 +02:00
Robert Schmidt 792cd56f63 Cleanup after RRC reestablishment 2023-08-12 11:48:17 +02:00
Robert Schmidt 7a298e73cd Repair reestablishment and make it work via F1
This commit repairs the reestablishment after the introduction of the CU
UE ID in the CU, different from the DU UE ID. Now, the CU uses an
identifier different from the RNTI, used in the MAC, to refer to UEs.

To repair the reestablishment, a number of changes needed to be
introduced:

- Handle old_gNB_DU_UE_id in MAC

The MAC handles the old_gNB_DU_UE_id field in the DL RRC Message. The
commit adds encoding/decoding of the field. The MAC will drop the old
UE, but retain the CellGroup of the corresponding UE(!). Because a UE
releases the spCellGroup on reestablishment, the MAC does the same; it
needs to reapply the old configuration after a reconfiguration. For the
latter, introduce new variables to keep a "future" CellGroupConfig to be
applied (reconfigCellGroup) and a flag (expect_reconfiguration) that
applies the CellGroupConfig if a DL RRC Message transfer on DCCH, which
is assumed to be the reconfiguration.

- Add RNTI change in RLC

The RLC needs to reuse the old UE context. Hence, we simply change the
RNTI in the old context, and delete the new one.

- No PDCP UE ID change

The previous implementation of the PDCP used the RNTI; hence, the ID
needed to be switch (as above for the RLC). Since the PDCP now also uses
the CU UE ID, no identifier change is needed, and we remove all
corresponding code.

- No MAC modifications/update from CU

As foreseen by the spec, the CU does not modify or change the
cellGroupConfig in the RRC during reestablishment. This change will be
generalized in the future to all of the RRC.  Also, the
nr_rrc_mac_remove_ue() function has been removed: the MAC handles any UE
changes autonomeously, without being triggered from the RRC explicitly.

- Remove reestablish_rnti_map

The RRC does not use RNTIs for UE identification. Hence, a
reestablish_rnti_map to link two UEs to each other is not necessary
anymore.
2023-08-12 11:48:17 +02:00
Robert Schmidt 04abbdb668 Implement PDCP reset counters for reestablishment
After a reestablishment, the PDCP sequence number counters have to be
reset. Implement an API to allow the RRC to reset the sequence numbers
for a particular UE in the case of reestablishment
2023-08-12 11:48:17 +02:00
Robert Schmidt b90a59a671 Trigger Reestablishment via resetting RLC sequence numbers
Plugin can trigger reestablishment (on DU)
and show counters of reestablishment (on CU)
2023-08-12 11:48:17 +02:00
Robert Schmidt 1c07afbeb6 RRC: Remove checks for UEs with existing RNTI
The RRC gives its own RRC UE ID. It won't intervene if DUs assign the same RNTI to different UEs: it simply does not care what the DUs do with the RNTI.
2023-08-11 17:38:12 +02:00
Robert Schmidt 644a5768a3 nrRRC_stats.log: provide info about UE (IDs, RRC state, PDU sessions) 2023-08-11 17:38:12 +02:00
Robert Schmidt 9790246daf Do-ra: write out directly 2023-08-11 17:38:12 +02:00