Commit Graph
6392 Commits
Author SHA1 Message Date
Chieh-Chun ChenandTeodora Vladic 76aa112cec Add more RLC stats and correct RLC stats
- Add GOL-delay and AVG-soujour
- Correct the types of/measurement the tx/rxsdu_bytes and tx/rxsdu_occ_bytes
- Update txsdu_avg_time_to_tx value only when measurements activated

Co-authored-by: Teodora Vladic <teodora.vladic@openairinterface.org>
2023-08-23 17:15:48 +02:00
Chieh-Chun Chen 8a4df37e83 nr rlc: rename delete() to delete_entity() 2023-08-23 17:15:48 +02: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 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
Laurent THOMAS 206aa36a47 Make read-only globals const, additional fixes
- Global variables that are never written to are marked const
- Remove some EXTERN declaration
- Remove unused `log_mem_multi` from logging module
2023-08-18 14:20:37 +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 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
francescomani cb003e4f10 mapping LCID to RBID to find RLC entity 2023-08-17 10:29:18 +02:00
Cedric Roux 3f8c8b73e2 nr rlc: change retx logic
When t_poll_retransmit expires we need to consider an SDU for
retransmission.

We used to take the first SDU (which could be a segment, not a full SDU)
of the wait list and put it in the retransmit list.

When testing with some UE (Amarisoft UE) a bad behavior was detected.

This is what happens for the SDU with SN 6 (for illustration purpose).

The gNB is sending an SDU in several pieces (it is segmented).

slot n:     rlc sn 6 [1 .. 119[   p=0   RECEIVED
slot n+x:   rlc sn 6 ]120 .. 180[ p=0   RECEIVED
slot n+x+y: rlc sn 6 ]181 .. 210] p=1   not RECEIVED

Then when t_poll_retransmit expires rlc retransmits only the PDU of
slot n (with p=1 this time) and the UE replies with ack 6. So nothing
happens on the gnb side.
(We would have expected ack 7 + nack 6 181..end.)

Then after t_poll_retransmit expires again rlc retransmits only PDU
of slot n and the UE still replies with ack 6.

This goes on forever (or some other timeout occurs.)

The logic is now changed.

When t_poll_retransmit expires we transfer all the SDUs in the wait list
having the same SN as the head of the wait list into the retransmit list.

Testing with Amarisoft UE, it seems to work properly.
2023-08-15 13:16:36 +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 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
Vijay Chadachan 707cf8088a Addressed the review comments 2023-08-11 18:34:54 +02:00
Robert Schmidt 9790246daf Do-ra: write out directly 2023-08-11 17:38:12 +02:00
Robert Schmidt 5c42004e21 RRC: switch to NGAP UE ID as CU UE ID 2023-08-11 17:38:12 +02:00
Robert Schmidt 2e1107fa41 Refactor PDCP: DRB callback for gNB to look up IDs 2023-08-11 17:38:12 +02:00
Robert Schmidt f48d86d7c5 UE Ctxt Release Req/Cmd/Complete 2023-08-11 17:38:12 +02:00
Robert Schmidt d24454ce9a UE Context setup and modif 2023-08-11 17:38:12 +02:00
Robert Schmidt d220ee23e2 UL RRC Message has CU/DU UE IDs 2023-08-11 17:38:12 +02:00
Robert Schmidt 0943891005 Use CU/DU UE ID in DL RRC Message Transfer, manage at DU, refactor
- The CU/DU UE ID is used in DL RRC Message Transfer
- Note: The CU UE ID currently is still the RNTI
- on every DL RRC Message, the DU verifies that the UE exists
- Refactor RRC: common function to forward protected SRB PDUs
2023-08-11 17:38:12 +02:00
Robert Schmidt 0a0f6b7952 Initial UL RRC Message: manage DU UE ID at CU 2023-08-11 17:38:12 +02:00
Robert Schmidt 3e0f07705c Init F1 UE data structs at MAC, RRC & CU-UP 2023-08-11 17:38:12 +02:00
Robert Schmidt c5b9962954 Remove unnecessary dl_rrc_message_transfer_direct() 2023-08-11 15:20:47 +02:00
Robert Schmidt 97b65555fd Invalid free: do not free RRC container 2023-08-11 15:20:47 +02:00
Robert Schmidt ab9f9bdd76 Don't delete RA in delete_nr_ue_data()
for reusing the old UE Context after reestablishment: we have to free a
UE context, but that also free's the RA process that we still need.
Remove here

Is this necessary?
2023-08-11 15:20:47 +02:00
Robert Schmidt aa62ddfabd MAC: Fix check for spCellConfig before using 2023-08-08 17:56:10 +02:00
Robert Schmidt 6979b56aa7 Scheduler lock: provide additional info on failure 2023-08-08 17:56:10 +02:00
francescomani 9b8a8280ad handle TDD pattern2 at UE 2023-08-08 17:26:46 +02:00
Robert Schmidt 8dff8ff159 Merge remote-tracking branch 'origin/NR_MAC_gNB_handle_DLSCH_with_DCI10_common_SS' into integration_2023_w31 2023-08-07 21:18:25 +02:00
Robert Schmidt 93469ed565 Merge remote-tracking branch 'origin/NR_UE_MAC_remove_scc' into integration_2023_w31 2023-08-07 10:26:59 +02:00
Robert Schmidt a181c78bda Merge remote-tracking branch 'origin/fix-pdcp_config_req_asn1-proto' into integration_2023_w31 2023-08-07 10:26:49 +02:00
Robert Schmidt ab63aa3cac Merge remote-tracking branch 'origin/NR_UE_pucch_format1_fixes' into integration_2023_w31 2023-08-07 10:26:43 +02:00
francescomani 75c2f9e5f8 improving handling of tdd_UL_DL_ConfigurationCommon absence when checking DL or UL slot 2023-08-04 10:01:56 +02:00
francescomani 72e92f7e46 stop scheduling SIB reception only if it is acked otherwise UE get stalled 2023-08-03 17:06:48 +02:00
francescomani 6a03f3fd4c Correct bits and payload for PUCCH format 1 at MAC UE 2023-08-02 13:06:32 +02:00
francescomani 6b74f1d4db handle scheduling of DLSCH with DCI10 in common search space 2023-08-02 09:52:39 +02:00
Cedric Roux 70b66a8644 nr rlc: let the tests be runnable with run_tests.sh 2023-08-01 12:11:39 +02:00
Robert Schmidt 5d0c453ac2 Need minimal_lib for exit_function in nr_rlc tests 2023-08-01 12:11:39 +02:00
Robert Schmidt 37c9eebb8b NR_RLC: CMakeLists.txt in own subdirectory, with tests 2023-08-01 12:11:39 +02:00
Robert Schmidt 757bebd1da use log in nr_rlc test 2023-08-01 10:31:46 +02:00
francescomani fe99f633d6 harmonize reconfiguration with sync reception 2023-07-31 17:30:29 +02:00
francescomani 40b07ec483 remove scc and scc_SIB from mac structure 2023-07-31 17:30:29 +02:00
Robert Schmidt d10eb372ff Merge remote-tracking branch 'origin/bugfix-define-constants' into integration_2023_w30 2023-07-29 07:25:15 +02:00
Thomas Schlichter f1a095057e fix limited UL data throughput in do-ra mode
In case of noS1-mode, we initialize the 'logicalChannelBearer_exist' array element for the pre-configured DRB0 in function 'nr_l2_init_ue()'.
That array is indexed with the LCID.
For DRB0, the LCID is 4.
Unfortunately, the code incorrectly used the array at index 0.
Therefore, the UE sent neither scheduling requests nor buffer status reports, what resulted in extremely poor UL throughput.
2023-07-28 15:42:47 +02:00
Cedric Roux a20bfc9695 remove NGAP_MAX_DRBS_PER_UE, replace by MAX_DRBS_PER_UE 2023-07-28 14:03:26 +02:00
Cedric Roux 284b57acbf bugfix: put constants in correct file
The RLC tests were not compiling because of the include of

    openair2/RRC/NR/rrc_gNB_radio_bearers.h

by

    openair2/LAYER2/nr_rlc/nr_rlc_entity.h

which does not seem correct/necessary to start with.

The only thing needed by nr_rlc_entity.h from rrc_gNB_radio_bearers.h
is MAX_DRBS_PER_UE which can be defined in common/platform_constants.h
like NGAP_MAX_PDU_SESSION.
2023-07-28 11:43:48 +02:00