Commit Graph
3594 Commits
Author SHA1 Message Date
Cedric Roux 18cb68ecc2 nr pdcp: first draft of NIA2 integrity
This code has not been tested with a COTS UE. We need SRB1/2 (so we need SA)
to test.

The activation of security and integrity for SRB1 will need more code
(new functions) because it happens after some time, not at creation time
of the PDCP entity and there is no way to do this with current code.
2021-03-30 11:57:51 +02:00
Cedric Roux 14c823037f nr pdcp: bugfix: D/C bit set only for DRBs 2021-03-30 11:57:51 +02:00
hardy ddf3f9e88c Merge remote-tracking branch 'origin/NR_FAPI_beamindex_SSB_RO' into integration_2021_wk13_a 2021-03-29 10:02:51 +02:00
Laurent THOMAS 1cb33aa7de code review fixes, merge latest develop 2021-03-22 09:46:24 +01:00
Thomas Schlichter bc041092c8 NR_UE: always break out of MAC PDU processing after pdu_len Bytes
In case of false positive PDSCH CRC check, a random MAC PDU is processed.
Currently pdu_len is unsigned 16 Bit, so we did break out of the processing loop only if we _exactly_ hit a residual pdu_len of 0, or we hit a LCID of DL_SCH_LCID_PADDING.
If we didn't hit either of these, pdu_len wrapped to a very positive value, and we continued processing the PDU even beyond its bounds!
This behavior was observed with SNR 1 dB and MCS 9.

So better make pdu_len signed and break out of the loop after processing at max. pdu_len Bytes!
2021-03-19 17:45:14 +01:00
Thomas Schlichter dade64ea43 Merge remote-tracking branch 'develop' into NR_DL_MIMO 2021-03-19 11:18:02 +01:00
francescomani f659a76f43 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-03-19 10:06:20 +01:00
francescomani d30b8c69ae fix dlsim crashes (wrong detection of dci for ul) 2021-03-17 18:45:56 +01:00
hardy 9abc8a6425 Merge remote-tracking branch 'origin/ptrs_rrc_config' into integration_2021_wk11 2021-03-16 16:28:31 +01:00
hardy dc60f04a46 Merge remote-tracking branch 'origin/NR_MAC_TCI_UCI_GlobalEdge' into integration_2021_wk11 2021-03-16 16:26:41 +01:00
Thomas Schlichter 8768deaf74 Merge remote-tracking branch 'develop' into ptrs_rrc_config 2021-03-16 14:01:32 +01:00
Thomas Schlichter 3152df445e Merge remote-tracking branch 'develop' into NR_DL_MIMO 2021-03-16 13:37:07 +01:00
hardy ee398c7610 solved merge conflicts related to CI scripts 2021-03-16 11:55:23 +01:00
francescomani 5eb86207db Merge remote-tracking branch 'origin/develop' into NR_MAC_TCI_UCI_GlobalEdge 2021-03-16 08:49:54 +01:00
hardy ca3aaf700f Merge remote-tracking branch 'origin/fix-nr-pdcp-timer' into integration_2021_wk11 2021-03-15 09:31:40 +01:00
francescomani dd1b8b64cf tentative fix for RC.gNB[inst] allocation 2021-03-12 13:15:48 +01:00
Remi Hardy c775073aad Merge remote-tracking branch 'origin/nr-pdcp-improvements' into integration_2021_wk10 2021-03-12 11:07:44 +01:00
Remi Hardy c12dd11d6e Merge remote-tracking branch 'origin/develop-SA-RA' into integration_2021_wk10 2021-03-12 11:07:25 +01:00
Robert Schmidt 43f6e2f0de Shorten RSRP meas print, avoid SIGFPE 2021-03-11 12:22:32 +01:00
Robert Schmidt 6274348dfb Remove redundant code 2021-03-11 12:12:35 +01:00
Shweta Shrivastava a0fa146e04 Merge branch 'ptrs_rrc_config' of https://gitlab.eurecom.fr/oai/openairinterface5g into ptrs_rrc_config 2021-03-10 22:58:06 -06:00
Shweta Shrivastava 7eec3e3bcc Merge branch 'develop' into ptrs_rrc_config 2021-03-10 22:37:44 -06:00
francescomani c05b62d620 including measured rsrp in mac stats 2021-03-10 15:05:26 +01:00
Cedric Roux 4ff8f8832e NR: fix: set PDCP discard timer to infinity
The discard timer is used by the PDCP layer to discard packets that were not
transmitted to RLC after some time.

We don't really need it for the moment, maybe never for the default
bearer which is a best-effort bearer passing all kind of IP traffic.
Maybe for voice over IP kind of traffic it's important, or realtime
applications.

I ran an iperf UDP uplink test and saw no error on the PHY layer but still
lots of packets lost in the iperf logs, which was very surprising. By
analyzing the logs in wireshark I saw that, with the current scheduler,
an IP packet sent by the UE took 40ms to be sent piece by piece to the
gNB, and then the next uplink IP packet was never sent at all because
the discard timer was expired, leading to the high count of packets lost
in the iperf logs.

So let's put infinity for the moment for the discard timer. From my
understanding of the moment it's not a problem. If for some reason we
should set it to some non-infinity value, then we can change later.
2021-03-10 10:30:23 +01:00
francescomani 3cfc9ae93c fix in handling csi meas report on pucch 2021-03-09 14:32:40 +01:00
Thomas Schlichter 2cf4daefa8 NR: move nr_bandtable from nr_mac_common.c to nr_common.c so PHY can use it, too 2021-03-09 11:56:06 +01:00
francescomani feaccd964c change a log to D from I 2021-03-09 11:12:16 +01:00
cig 443a449119 Fix after review MR 1039
- FAPI structures not to be used as config_req at MAC since that FAPI is
  just for communication between MAC and PHY
- additional frame_type member added to the FAPI struct
2021-03-09 10:36:27 +01:00
Thomas Schlichter 2411743f44 gNB: move get_band() to its only user in nr_init.c 2021-03-05 17:27:45 +01:00
Thomas Schlichter 62612feebf change get_band() to take the duplex spacing into account 2021-03-03 18:02:10 +01:00
Thomas Schlichter 7a6f789aed Merge remote-tracking branch 'develop' into NR_FDD_FIX 2021-03-03 17:59:17 +01:00
Thomas Schlichter 01645168f0 NR_UE: handle initial TA the same way as TA updates, independent of the UE_mode
In FDD mode, the UE_mode switches to PUSCH mode before the initial TA value was applied.
Because of this, the ta_command was misinterpreted.
Fix this by adding 31 to the initial TA comamnd and handle it the same as TA updates.
2021-03-03 17:58:07 +01:00
Cedric Roux 9edc8cce0a nr pdcp: improvements
Implement data transfer (38.331 5.2):
    - transmit operation (in nr_pdcp_entity_recv_sdu)
    - receive operation (in nr_pdcp_entity_recv_pdu)
    - t-Reordering expiration

To keep track of time the function nr_pdcp_wakeup_timer_thread has been
added and is called by the gNB's MAC scheduler via nr_pdcp_tick.

(The UE has not been modified.)

A thread has been introduced to set time of all the existing PDCP
entities in the system. This probably does not scale well with many
PDCP entities (many UEs connected to the gNB). To be changed at some
point when needed. Hopefully, with a few UEs this mechanism won't be
too problematic (ie. won't cause realtime problems).

The problem with time in PDCP is that SDUs are kept if some are
missing, to do reordering. A timer is started and when it expires
we have to transmit the SDUs even if some are still missing. We
want to do that as soon as possible. So we have to check timers
often (every millisecond).

In RLC the time is set when there is some activity (SDU or PDU
received). In PDCP we cannot wait for this kind of activity. We
would keep packets longer than necessary, which may disturb
upper layers (think: TCP). That is why we introduced the thread,
as a simple mechanism to keep packets no longer than necessary.

The locking done by this thread may create realtime issues.

The whole logic of time keeping can be changed later if it turns
out that it is not efficient.

The functions dealing with DRB AM have been removed. All the types
of PDCP entities (DRB AM, DRB UM, SRB) use the same mechanism for
transmit and receive operations. So the code has been made common
for all those types.

We don't deal with:
    - entity re-establishment, entity release or entity suspend
    - SDU discard (the timer is present but not used)
    - status reporting
    - data recovery
    - data volume calculation
    - header compression / decompression

There is no plan to implement those features in a near future.

Integrity protection is not done yet, and will be implemented soon.
2021-03-03 14:06:31 +01:00
rmagueta 5f66269a8b Merge remote-tracking branch 'origin/develop' into develop-SA-RA
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2021-03-02 12:01:11 +00:00
Guhan 02ae169250 Rebased to latest develop and removed nr_rx_acknack function 2021-03-01 11:43:30 +05:30
hardy 8d05695722 Merge remote-tracking branch 'origin/benetel_driver_update' into integration_2021_wk09_b 2021-02-26 16:09:05 +01:00
guhan 89c1a9c284 Removed SR 2021-02-26 14:16:35 +05:30
guhan 6505729aad some modifications in gNB_scheduler_uci.c 2021-02-26 14:16:01 +05:30
guhan f338d6d65d Removed rrc dependency, code rearrangement 2021-02-26 14:16:01 +05:30
guhan 5d4f815181 Removed dead code 2021-02-26 11:50:13 +05:30
rangaswamy 0e61b612ba fixed warnings 2021-02-26 11:47:33 +05:30
k.ramya 0a0a5e48c3 code rearrangement 2021-02-26 11:37:58 +05:30
r.karey e703638522 fixed memory leaks 2021-02-26 11:31:06 +05:30
Francesco Mani 27cfdd4974 some cleanup 2021-02-26 11:29:28 +05:30
Francesco Mani 2e17bd241f bugfix in pucch_rx 2021-02-26 11:29:28 +05:30
Francesco Mani cfdfd789b0 some code cleanup in csi_bitlen 2021-02-26 11:29:28 +05:30
Francesco Mani 898f752059 uci mac functions in a new file 2021-02-26 11:29:28 +05:30
Francesco Mani 5c35c9fba2 bugix for cri-rsrp in bitlen computation 2021-02-26 11:08:32 +05:30
r.karey c779ca120f Fixed the calculation of received csi payload size at MAC 2021-02-26 11:08:32 +05:30
Francesco Mani 827fcb2d30 remove log 2021-02-26 11:04:20 +05:30