Commit Graph
100 Commits
Author SHA1 Message Date
Cedric Roux 1f81b3f1a2 T tracer: textlog: remove GUI code
textlog is, well, text log. The GUI part is totally useless.
Let's remove it.
2024-02-28 16:19:32 +01:00
Cedric Roux ff38130196 bugfix: fix NSA CI test
It seems like initialDLBWPcontrolResourceSetZero needs to be set
otherwise the quectel UE does not accept the Reconfiguration.
2023-11-27 12:29:48 +01:00
Cedric Roux 18e59d3c2e lte: switch to RRC release 16.13.0
A COTS UE is sending UE capabilities with accessStratumRelease "rel16"
which is not decoded by our RRC. Switching to RRC 16.13.0 lets our RRC
accept these capabilities (and as a positive side effect lets this
particular UE work nicely in NSA fr1).
2023-11-24 12:32:48 +01:00
Cedric Roux 9e46a6a6ae nr pdcp: introduce nr_pdcp_get_rb() and some cleanup
cleanup means:
- typo: susbend -> suspend
- call nr_pdcp_manager_unlock() where needed
- simplify LOG_XX (remove __FILE__, __LINE__, __FUNCTION__)

note:
nr_pdcp_release_srb() and nr_pdcp_release_drb() don't use
nr_pdcp_release_drb() because they modify the arrays, so
it does not make sense to "abstract" the accesses to
->srb and ->drb.
2023-11-20 14:55:34 +01:00
Cedric Roux 2c2915dad8 reestablish only exisiting RBs 2023-11-20 11:00:23 +01:00
Cedric Roux 107913d6b2 nr pdcp: rework reestablishment
Security part needs to be checked, may fail to work.
But if it fails, it was probably not working before either.

This commit also contains adding 'static' to nr_pdcp_entity_release()
and nr_pdcp_entity_delete() (it was too complicated to do a separate
commit for this).

We also update stats in free_rx_list() (again, too complicated for
a separate commit).

openair2/RRC/NR/rrc_gNB.c probably needs some more work, it is a
bit ugly to reestablish all the drbs without checking if they
exit. It will generate warnings at runtime. I didn't do it because
I don't know the proper way.
2023-11-19 16:57:03 +01:00
Cedric Roux 7a7d8a1766 nr pdcp: stats: count delivered sdus 2023-11-19 16:49:55 +01:00
Cedric Roux 470af5f497 nr pdcp: bugfix: discard pdu if integrity fails 2023-11-19 16:49:11 +01:00
Cedric Roux f265b04593 nr pdcp: bugfix: use proper size for t_reordering_start 2023-11-19 16:47:58 +01:00
Cedric Roux 7203e5aba8 nr pdcp: minor: set function scope to static 2023-11-19 16:46:08 +01:00
Cedric Roux 07ee33f024 nr pdcp: minor: fix spacing 2023-11-19 16:43:57 +01:00
Cedric Roux 69a2f103ea minor: documentation: advertise correct default value for --ssb 2023-11-18 22:16:53 +01:00
Cedric Roux 13757862fb hotfix: set PDCP t-reordering to 100ms
The function generateDRB() sets the value to 100ms but the function
rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ() sets it to 0ms.

So what happens is that the UE gets the value 100ms in the
RRC Reconfiguration but the gNB creates the PDCP entity with 0ms.
Let's create it with 100ms instead, to be aligned with how we configure
the UE.

And also avoid some PDCP warnings at runtime when some packets
are retransmitted but rejected because of the 0ms timer. This is
the warning:

    [PDCP]   discard NR PDU rcvd_count=68469, entity->rx_deliv 68481,sdu_in_list 0

This is just a hotfix. A real solution is to have the RB creation in
only one place. And we should also have those parameters configurable.
Work for later.
2023-11-18 21:56:42 +01:00
Cedric Roux 578cd23d59 rfsimulator: ignore PIPE signal
When au UE disconnects, a write on the rf simulator socket may
generate a PIPE signal in the gnb and crash it.

Let's ignore this signal.
2023-11-18 21:44:21 +01:00
Cedric Roux e98acd7c5a T: set dependancies for generated files
This commit follows the previous one and adds a dependancy for the
generated .h files so that when we change T_messages.txt to add a
T trace, the compilation succeeds when using ninja in
cmake_targets/ran_build/build.
2023-11-12 14:07:11 +01:00
Cedric Roux 1111eccac6 T: isolate generated .h files when using make
When using the make system to generate T files, if you change
T_messages.txt you may have problems compiling the gnb with ninja.

If you want to see the problem:
First run: cd cmake_targets; ./build_oai --ninja --gNB
Then: cd common/utils/T
edit T_messages.txt, add a trace, for example:
---
ID = ENB_PHY_UL_TOCK
    DESC = eNodeB uplink tick - one tick per ms at start of uplink processing
    GROUP = ALL:PHY:GRAPHIC:ENB
    FORMAT = int,eNB_ID : int,frame : int,subframe
---
then run: make
then: cd cmake_targets/ran_build/build; ninja nr-softmodem
You should have an error looking like this:
---
[3/81] Checking validity of VCD files
FAILED: common/utils/T/CMakeFiles/check_vcd /tmp/develop/cmake_targets/ran_build/build/common/utils/T/CMakeFiles/check_vcd
cd /tmp/develop/cmake_targets/ran_build/build/common/utils/T && /tmp/develop/cmake_targets/ran_build/build/common/utils/T/_check_vcd /tmp/develop/common/utils/T/T_messages.txt /tmp/develop/common/utils/T/../LOG/vcd_signal_dumper.h
error: VCD_FIRST_VARIABLE is not correct in T_defs.h

You probably added a VCD trace (variable or function) but you did not
update T_messages.txt and/or T_defs.h in common/utils/T/
[...]
---

Let's first isolate the generated T .h files when using make because
we have two versions of T_IDs.h and T_messages.txt.h when mixing
make/cmake.

A next commit will regenerate T_IDs.h and T_messages.txt.h when
T_messages.txt chages for the cmake system, because this commit
does not solve the problem.
2023-11-12 14:04:36 +01:00
Cedric Roux 8aea710a6c nr rlc: minor: fix tests
delete() has changed its name
2023-09-28 10:52:55 +02:00
Cedric Roux 82e83bc6a6 nr rlc am: bugfix: correc usage of tx_next
tx_next was increased only when all segments of an SDU were sent to
lower layers. This may lead to a situation where the receive entity
transmits a control PDU that is rejected because it sets its ACK to
tx_next+1 (if all segments were not transmitted when the control PDU
is sent).

What is done now is to increase tx_next as soon as we send the first
segment of an SDU to lower layers. A control PDU received from the
receive entity is now accepted and processed.

Specifications (38.322 5.2.3.1.1) say to increase tx_next when the
RLC entity receives an SDU from upper layers. But for us, since the
buffering of SDUs is done in the RLC layer and since the buffer size
may be big, we may increase tx_next too much. The choice has been
made to increase it only when we transmit an SDU to lower layers.
We may change this logic if needed. (But it won't be simple.)
2023-09-28 10:40:11 +02:00
Cedric Roux 9cfa0f239f T tracer: add a trace for NR SIB1 2023-09-07 22:19:50 +02:00
Cedric Roux 282a20578f nr rlc test: minor: change the logging 2023-09-05 21:55:15 +02:00
Cedric Roux 1272847fea nr rlc am: rewrite process_control_pdu()
A first pass checks that the control PDU is valid.
A second pass processes it for real.
2023-09-05 21:52:30 +02:00
Cedric Roux f7fe3b448f nr rlc am: harmonize comparisons of SNs in process_control_pdu()
Let's compare SNs in a similar way as done in previous commit, to ease
readability.
2023-09-04 12:26:17 +02:00
Cedric Roux 43f5eecd19 nr rlc am: bugfix: use sn_compare_tx() to compare SNs
The use of < is not correct. SNs are cyclic. We must use sn_compare_tx().
2023-09-04 12:13:46 +02:00
Cedric Roux e3dbc97723 nr rlc am: prepare variable to be reused 2023-09-04 11:09:06 +02:00
Cedric Roux b4fea523b9 nr rlc am: bugfix: discard a control PDU if ack-sn is invalid
It is possible to receive an ACK that is not expected, in which
case the whole control PDU has to be discarded.
2023-09-04 11:00:23 +02:00
Cedric Roux 9f0ec74cf4 bugfix: don't force an UE to support en-dc, respect its capabilities 2023-08-24 16:53:35 +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
Cedric Roux 70b66a8644 nr rlc: let the tests be runnable with run_tests.sh 2023-08-01 12:11:39 +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
Cedric Roux 325dcf939e remove unused RRC_FIRST_RECONF 2023-07-26 16:26:46 +02:00
Cedric Roux 6c8f7ae17b NR RRC: send "init context setup resp" after receiving reconfig from ue 2023-07-25 11:25:15 +02:00
Cedric Roux 149ca8e190 nrUE: quick fix for compatibility with Open5GS 2023-07-18 15:01:11 +02:00
Cedric Roux ad8612abd6 Import T documentation from wiki 2023-07-13 10:29:33 +02:00
Cedric Roux 8a2a5015e6 T tracer tools: fix memory leaks, clang warnings
- Fix memory leaks detected by ASan
- Initialize variables that are flagged by compiler
- C struct initializer: x:y needs to be .x=y
2023-07-13 10:29:33 +02:00
Cedric Roux 74ae831cf9 nr sib1: add mandatory fields for FDD 2023-06-20 09:38:14 +02:00
Cedric Roux 2778fd560f bladerf: have it functional (lte only, no nr)
At Eurecom now we only have Nuand bladeRF 2.0 (bladerf2) and those
calibration calls fail, so let's remove them. Maybe they are needed
for other boards, but we can't test at Eurecom. In case of problems
with other boards, contact us.
2023-06-15 17:14:24 +02:00
Cedric Roux 8561a0f764 asn1: properly initialize variables for uper_decode() and aper_decode() 2023-06-12 16:15:57 +02:00
Cedric Roux 46f0e348f1 e1: fix security 2023-06-11 12:28:56 +02:00
Cedric Roux c0c3a737ed asn1c: use better version of asn1c
We don't work much on asn1c. The version we use has several bugs.
There is an active community out there that fixes bugs and improves
asn1c. Let's use their version.
2023-06-01 18:26:00 +02:00
Cedric Roux a4ae28fdd6 ci: activate DRB ciphering and integrity protection
We need to test security and integrity protection in the CI.

This commit activates ciphering+integrity protection for SRBs
and DRBs using nea2/nia2 for the amarisoft-ue + aw2s CI pipeline.
2023-06-01 11:01:03 +02:00
Cedric Roux 214596d3c6 bugfix: nea2 security: use correct bearer argument to init security 2023-06-01 11:01:03 +02:00
Cedric Roux c68549d861 modification of get_samplerate_and_bw(): add break where needed 2023-05-07 15:24:51 +02:00
Cedric Roux 6e5511b220 bugfix: use an array of size NGAP_MAX_DRBS_PER_UE for drb_priority
It may happen that the drb to configure is not 1, so we may need
this array in rrc_gNB_generate_dedicatedRRCReconfiguration().

Not tested, this commit is mostly to harmonize with other places in
openair2/RRC/NR/rrc_gNB.c
2023-04-15 21:26:24 +02:00
Cedric Roux bf10230185 bugfix: use correct index in array
Accelleran CU configures DRB ID 4, not 1, so we need to take index 3
in the array 'priority', not 0.

So let's use i-1 as it was before.
2023-04-15 20:20:10 +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
Cedric Roux 50bf571347 hack: see "Bye." message when quitting gnb running with aw2s
For some (unclear) reason, nr-softmodem with aw2s device does not print
"Bye." when stopping it with control+c, which is problematic in the CI.

This little hack solves the problem.

(Maybe not the right solution, to be changed if needed.)
2023-03-30 12:57:10 +02:00
Cedric Roux a4718d4a16 bugfix: LDPC decoding in the gNB: clear d properly
The d array has to be cleared at the first usage, which may not necessarily
be when new_rx is true. For example, in case of DTX detected for a first
transmission, the next transmission won't have new_rx true, so d won't be
cleared, containing data from a previous transmission. Or when a LDPC
decoding is cancelled for a segment when new_rx is true, a decoding for
a retransmission will not clear d because then new_rx will not be true.
(Yes, the logic of cancellation will be changed in the future, but the
changes will be orthogonal to the ones of this commit.)

new_rx is removed.
2023-03-23 17:18:50 +01:00
Cedric Roux 39c42bca41 bugfix: bad usage of T() in the log module
The LOG_x() and T() logic was wrong.

LOG_x() goes to the terminal when T_stdout == 1 or T_stdout == 2.
It goes to T() when T_stdout == 0 or T_stdout == 2.

The call T() does the check for T_stdout == 0 or T_stdout == 2.
So we have to call it out of the check "if (T_stdout)".

So, well, let's fix that.

Some spacing was fixed as well. clang-format may complain.
2023-03-10 12:10:08 +01:00
Cedric Roux 3084ae89dd bugfix: set max priority to trx_usrp_write_thread 2023-03-04 16:42:01 +01:00
Cedric Roux 6315dae4ca minor typo 2023-02-25 13:45:52 +01:00
Cedric Roux f64ed09574 bugfix: increase size of nrb
We can have 273 RBs, so 8 bits to store the number of RBs is not enough.
16 bits ought to be enough for anybody.
2023-02-23 21:36:46 +01:00
Cedric Roux a4eeefc13f support old versions of openssl
Needed for ubuntu 16 and centos 7.
2023-02-23 21:35:26 +01:00
Cedric Roux 16b0b5f0ec bugfix: length type too short
On a setup, length of cellGroupConfig was > 255.

Using uint8_t to store the length is thus wrong
and gives a bad encoding of the cellGroupConfig.

So let's use uint32_t to store length instead of uint8_t.
2023-02-15 22:50:40 +01:00
Cedric Roux 344f8b75e6 bugfix: try to handle USRP devices correctly to avoid crashes
Some problems when we release the device:

    - Calling the destructors is wrong, we should set the pointers to NULL.
      These are shared pointers, this is C++.
    - We have to stop rx by doing a STREAM_MODE_STOP_CONTINUOUS.
    - The end-of-burst for tx has been simplified.

This problem when we acquire the device:

    - Calling get_rx_stream() many times seems to be problematic.

We now should have a better behavior with UHD 4.2 and N310. (Hopefully with
others too.) No crash seen so far.
2023-02-04 23:37:58 +01:00
Cedric Roux 698122d6d2 bugfix: fix sdap
There was a problem testing accelleran cu + oai du + oai ue + rfsim
because accelleran cu configures sdap header for UL but not for DL
and our sdap implementation deals with either "no sdap header at all"
or "sdap headers for both UL and DL".

The code has been modified to deal with the other cases
("sdap header for UL but not DL" and "sdap header for DL but not UL").

has_sdapDLheader and has_sdapULheader have been removed, has_sdap
too, replaced by has_sdap_rx and has_sdap_tx, which makes the code
independant of ue or gnb and is, I think, clearer.

With this work, accelleran cu + oai du + oai ue + rfsim works. We
also have oai gnb + oai ue + rfsim functional for all cases of sdap
header configuration (this won't happen for users, the code of gnb has to
be modified to have sdap header for only ul or only dl). It also works
with a COTS UE for all cases of sdap configuration (again, this won't
happen for users, only "no sdap header" and "sdap headers for both
UL and DL" exist in oai gnb with the current code).

To have other cases, you can edit openair2/RRC/NR/rrc_gNB_radio_bearers.c
and search for NR_SDAP_Config__sdap_HeaderDL_present in there.

To enable sdap, run the gnb with the command line argument
--gNBs.[0].enable_sdap 1
2023-01-22 00:09:22 +01:00
Cedric Roux 565b8482f9 remove patch in install_simde_from_source()
upstream took it
2023-01-18 13:01:37 +01:00
Cedric Roux fc7bcceca9 fix a small bug and add a log for when recvfrom() fails
recvfrom() returns ssize_t, not size_t.
2023-01-18 10:23:37 +01:00
Cedric Roux 08e57ca313 bugfix: use correct size in malloc() 2023-01-17 15:03:44 +01:00
Cedric Roux 3674a6f0f2 bugfix: initialize all variables of the 'context' thing
There was a problem in rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND()
where we PROTOCOL_CTXT_SET_BY_INSTANCE() that does not initialize
eNB_index leading to a crash later on in pdcp. So let's initialize
everything.

Plus, while we're here, use do { } while(0) in the macros, just to avoid
problems like:

  if (condition)
    macro;

Without do { } while(0) only the first statement of the macro is done
in the if. (Not sure if the code has the problem somewhere, but doesn't
hurt to fix.)
2023-01-17 13:19:30 +01:00
Cedric Roux 924d88bbf9 bugfix: avoid a crash when oai_exit is set
There was a crash when we exit the nr softmodem with AW2S device.
The array rxbase[] was surely freed() by some other thread, so
let's not access it after detecting oai_exit != 0.

We also need to unblock a possible reader thread. The chosen way to
do may be not the best. To be checked.
2023-01-17 13:06:25 +01:00
Cedric Roux 551aee172a bugfix CU/DU: use correct IP address for GTP-U
Not only the teid is received from the DU but also the IP address. We
have to use it too.

Also, don't connect the UDP socket. The parameter remote_s_address in the
configuration file must not be used, at least not for gtp-u because the
IP address is received from the DU (plus for later, for multiple DUs, it
won't work at all).
2023-01-09 15:19:07 +01:00
Cedric Roux 3cd4b3c3fa fixes some issues found by review
- AssertFatal() in nr_rlc_srb0_recv_sdu() if the srb0 is not found
- do_RRCSetup() may return -1, handle it properly
- do_RRCReject() may return -1, handle it properly
- remove one switch in rrc_gNB_generate_RRCReject()
2022-11-29 15:22:46 +01:00
Cedric Roux 5d92e0d730 NR DU: nr rrc: hotfix: set default priority correctly
Using Accelleran CU, the DRB ID is 4 (not 1), we need to set and access
the array 'drb_priority' correctly in the DU specific functions.

Before this commit, we had the following error:
[NR_MAC]   ASN1 message CellGroupConfig encoding failed (rlc-BearerToAddModList, 18446744073709551615)!
2022-11-28 15:33:13 +01:00
Cedric Roux 231c2f3c5f gnb: remove srb0 shared global variable - use RLC module instead 2022-11-25 17:31:03 +01:00
Cedric Roux 7853673db7 f1 du: little hackish fix to get correct drb
I have a more complex fix that I'll put in a later merge request. That does
the job for the time being.
2022-11-09 17:00:11 +01:00
Cedric Roux df45820f71 f1 du: get IP address for UL UP GTP tunnel from the right place 2022-11-09 15:43:22 +01:00
Cedric Roux d2f456e089 bugfix: call nr_rlc_get_available_tx_space() with lcid, not rb id 2022-11-09 15:42:50 +01:00
Cedric Roux d4356efc70 f1 du: get list of sst/sd from configuration file
may not be the best place to get data from conf file, to be refined later
if needed
2022-11-09 12:40:41 +01:00
Cedric Roux 3b42e46cf0 nr rlc: add enum for rlc mode (am, um, or tm) 2022-09-06 15:58:47 +02:00
Cedric Roux 2c08302c89 nr rlc: fix in process_control_pdu()
the following:

         if (cur_wait_list == entity->wait_end)
           end_wait_list = prev_wait_list;

was done after cur_wait_list is updated to its new value, but the old value
has to be used in this test. So end_wait_list was not set properly.

This was leading to random crashes later on because then entity->wait_list
was NULL but entity->wait_end was not (because of the bug fixed by this
commit).

The new value for cur_wait_list is also now set using prev_wait_list->next
just before the goto, as done in other places in the code.

Also "cur" was removed, for it has no purpose and makes the code harder
to understand.
2022-09-05 16:29:51 +02:00
Cedric Roux af6059d4ab clang-format: open-brace at column one to start the body of a function 2022-08-26 20:14:40 +02:00
Cedric Roux 3e2d88907b use bool, not int 2022-08-18 17:07:04 +02:00
Cedric Roux 0618812554 T tracer: simplify
- don't call exit() if get_message() fails, simply terminate the thread and
  disable the T tracer
- T_dont_fork disappears, monitor_and_kill() as well, so now it's only 2
  processes: the main (enb/gnb/ue) and the local tracer
2022-08-16 14:44:23 +02:00
Cedric Roux 1b029be058 nr rlc stats: make avg time to tx optional
Introduce the function nr_rlc_activate_avg_time_to_tx() to
activate/deactivate collection of avg time to tx stats (which
may have an impact on realtime processing, so better not compute
them when not needed).

Fix a little bug in time_average_get_average() for when there is not stat.
2022-08-12 12:19:09 +02:00
Cedric Roux fad3f23164 Add RLC stats: avg time to tx for an RLC SDU 2022-08-12 12:19:09 +02:00
Cedric Roux ee7aca5d05 ngap: minor fix: access the array correctly 2022-08-09 12:22:40 +02:00
Cedric Roux 3155ec6df8 gtp: small fix: set E if there is an extension header 2022-08-03 10:34:12 +02:00
Cedric Roux 667b8e5eed nr_pdcp: nia1 implementation
We reuse existing code from eia1 for actual computation. Maybe not the most
efficient. To be revised if needed.

Some hacks in CMakeLists.txt were introduced to compile
phy simulators. To be removed at some point.
2022-07-21 16:59:38 +02:00
Cedric Roux 4505e780c5 nr rlc: minor: update tests
Behavior for ack/nack generation has changed not too long ago but the tests
were not checked and updated.
2022-06-23 11:44:01 +02:00
Cedric Roux 2802418c34 remove debug printf 2022-06-21 16:43:54 +02:00
Cedric Roux d0fa56b1de compilation fix 2022-06-20 15:15:11 +02:00
Cedric Roux 5cd674483b Merge remote-tracking branch 'origin/develop' into F1_interop_ACC_n78 2022-06-19 18:41:27 +02:00
Cedric Roux 2bed0352fd f1: remove hardcoded value, set to what is in develop 2022-06-19 18:33:57 +02:00
Cedric Roux 2521e46593 Merge remote-tracking branch 'origin/F1C_extensions_develop' into F1_interop_ACC_n78
Conflicts:
	openair2/F1AP/f1ap_du_interface_management.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/LAYER2/NR_MAC_gNB/main.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
	openair2/RRC/NR/MESSAGES/asn1_msg.h
	openair2/RRC/NR/rrc_gNB.c
	openair3/ocp-gtpu/gtp_itf.cpp
2022-06-15 11:28:37 +02:00
Cedric Roux 33b69bdf30 nr rlc: bugfix: use hard-coded mapping between drb ID and mac lcid
This will probably impact negatively the Accelleran interoperability
but the previous version is not correct and breaks the oai nr ue.

To be checked in a CU/DU scenario with Accelleran.
2022-06-13 18:28:07 +02:00
Cedric Roux 1ad8f254c2 Merge remote-tracking branch 'origin/develop' into F1_interop_ACC_n78 2022-06-13 16:59:59 +02:00
Cedric Roux f71766c3ee Merge remote-tracking branch 'origin/develop' into F1_interop_ACC_n78
Conflicts:
	openair2/F1AP/f1ap_du_ue_context_management.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
	openair2/RRC/NR/MESSAGES/asn1_msg.h
	openair2/RRC/NR/rrc_gNB.c
	openair3/ocp-gtpu/gtp_itf.cpp

There were some important conflicts in openair3/ocp-gtpu/gtp_itf.cpp
I rewrote a bit the function Gtpv1uHandleGpdu(). It might have been
done wrongly.
To be tested and fixed if needed.

To redo the merge, if needed:
git checkout 9b2a163ebb
git merge 5ea828e149
2022-06-08 15:48:24 +02:00
Cedric Roux 4b4e419aba nr rlc: fix NR RLC AM status generation
Several problems were found and fixed.
2022-04-21 16:47:27 +02:00
Cedric Roux 8b0be9cf87 nr rlc: speedup ack/nack reception
The code completely changed, expect problems.
2022-04-15 12:20:02 +02:00
Cedric Roux 78f0c8ff29 nr rlc: harmonize computation of sn_count
Functions generate_missing() and missing_size() had different
computations of sn_count. Not sure if it is a problem or not,
but let's do the same in both functions.

Hopefully the computation is correct.
2022-02-20 16:00:54 +01:00
Cedric Roux 7c652df820 nr rlc: bugfix - so_end was used instead of sn_end 2022-02-20 15:56:56 +01:00
Cedric Roux 52d75940be fix macpdu2wireshark
Somehow this file was in a bad state...
2022-02-11 10:36:00 +01:00
Cedric Roux e5a3bcdc33 nr-ue: fix T tracer
T tracer was not functional anymore. because init_tpools() was called
before T_Config_Init().

The problem was that init_tpools() creates some threads and T_Config_Init()
does call fork() and the child process (which is the one running the
softmodem, the parent process is used to monitor it, this is the design
of the T tracer, maybe to change at some point, it's too complicated) has
no thread after the fork(). The threads created by init_tpools() are gone.
Game over.

In conclusion: T_Config_Init() has to be called very early in the life of
the softmodem, at least before init_tpools().
2022-02-09 14:07:41 +01:00
Cedric Roux 1409e3bcb4 nr-ue: fix T tracer
T tracer was not functional anymore. because init_tpools() was called
before T_Config_Init().

The problem was that init_tpools() creates some threads and T_Config_Init()
does call fork() and the child process (which is the one running the
softmodem, the parent process is used to monitor it, this is the design
of the T tracer, maybe to change at some point, it's too complicated) has
no thread after the fork(). The threads created by init_tpools() are gone.
Game over.

In conclusion: T_Config_Init() has to be called very early in the life of
the softmodem, at least before init_tpools().
2022-02-09 10:22:01 +01:00
Cedric Roux 92c5115f13 lte: fixes in EpsNetworkFeatureSupport.c
We have to eat all the bytes, not only one.
We have to get the bit we want from the right buffer position.

Note: only one bit is supported from this "EPS network feature support",
not sure how to properly deal with it, so let's keep the code as it is.

This commit was made because the MAGMA MME sends "EPS network feature
support" to the UE in the NAS message "Attach Accept". OAI MME does not
send this. So the bug about size was not seen.
2022-02-04 16:32:49 +01:00
Cedric Roux fe4c988c97 nr ue: fix security setting of DRB
Maybe this fix won't work for non-openair gNB. We use the same keys and
algorithms as for SRBs, which is what openair gNB does.

(I hope I'm right there.)

To be changed if needed.
2022-01-24 15:56:45 +01:00
Cedric Roux de72d53c21 nr ue: fix rlc and pdcp tick generation
Ticks have to come every millisecond. The code was calling tick
only for DL slots.

(This whole logic will change at some point, this tick mechanism is not
good. But in the meantime, let's fix anyway.)
2022-01-11 11:04:48 +01:00
Cedric Roux fe81d31ea3 compilation warnings fixes
The previous commit created two new warnings:

    warning: 'avgs' may be used uninitialized in this function
    warning: 'seq_index' may be used uninitialized in this function

This commit removes them.

Maybe it's not the correct solution. To be fixed if needed.
2022-01-11 11:04:00 +01:00
Cedric Roux 0806734254 T tracer: add option to have both T traces and regular console logs
Use --T_stdout 2 to have both.

--T_stdout 0 is still the way to have only T traces and no console logs.
2022-01-11 11:04:00 +01:00