Commit Graph
248 Commits
Author SHA1 Message Date
Melissa 8c2a067a22 Merge branch 'episys/david/checking_downlink_siso_model' into 'episys/master-nsa'
Downlink SISO modeling

See merge request aburger/openairinterface5g!104
2022-02-08 14:51:55 -08:00
Melissa Elkadi 9da3cbc9ec Cherry picking UCI multiplexing for CSI reports 2022-02-08 13:03:13 -08:00
Melissa Elkadi b897287d1f Changes made to gNB cause emulated-L1 mode not to work for multiple UEs.
It seems that the RA procedure in the gNB was modified so
the RAR is sent in a single tx_data_req. The emualted mode
was not previously handling this. We now only process the
PDU in the rx_ind that has a matching preamble. If any
other PDUs exist, we ignore them and only build Msg3 based
on this single matching RAR PDU.

Also, two bug fixes applied here in the emulate-l1 mode.
2022-02-08 11:59:04 -08:00
Melissa Elkadi 118bd8b36f Merge branch 'eurecom-develop' into eurecom-episys-merge-nsa 2021-12-06 13:23:21 -08:00
Melissa Elkadi dd891537a7 Checking for pointers to be NULL before allocating memory 2021-11-23 12:37:22 -08:00
Melissa Elkadi 97eda100c7 Removed logic around CALLOCs
When we check if the pointer is NULL before CALLOCing,
then the gNB will crash. It seems that we are mostlikely
leaking memeory since the gNB only crashes with the old
change. By reverting these changes, the gNB does not crash.
We are seeing UE-to-UE IP traffic on this commit when
the tunnel interfaces are established (~50% of the time).
2021-11-23 07:33:31 -08:00
Melissa Elkadi 23582a4483 Adding more error checking 2021-11-22 16:31:47 -08:00
Melissa Elkadi eaa5782579 Merge branch 'episys/master-nsa' into episys/david/multi_ue_sa 2021-11-22 14:29:58 -08:00
Melissa Elkadi 8d94b36349 Adding assertFatals and code cleanup for MR 2021-11-22 14:24:06 -08:00
Melissa Elkadi 6d556607d4 Reverting incorrect CALLOC 2021-11-22 12:34:18 -08:00
Melissa Elkadi fc140b2007 Allocating for the number of DCIs and changing pdu_idx check 2021-11-22 07:40:36 -08:00
Melissa Elkadi 8d1196a9cd Merge branch 'episys/5gcn_traffic_testing' into episys/david/multi_ue_sa 2021-11-22 07:15:59 -08:00
Melissa Elkadi 32cca25075 Modifying how we handle the UCI multiplexing.
In this commit, we changed the UCI handling.
When the UL_TTI_REQ arrives at the NRUE it
has info related to how many UCIs we should
pull from the queue and send to the gNB. If
we do not have that many UCIs available (likely
becasue a DL_TTI_REQ is late), then we will
requeue the UL_TTI_REQ and wait until we have
all the UCI indications before multiplexing.
This change makes it easier to handle multiple
UCIs becasue previously we would send what we
had and then try again later which made keeping
track of the UL_TTI_REQ and second UCI more
difficult.
2021-11-19 14:14:21 -08:00
David Kim 202862bce1 Updated for multiple UEs CBRA procedure.
1. Added rnti filter for multiple UEs.
2. Adjusted mode offset for SA mode.
2021-11-19 13:42:34 -08:00
Melissa Elkadi 7f7bda5421 The number of active harqs is included in the UL_TTI_REQ
Also, we had two heap-buffer-overflow crashes while
filling the CRC_IND and RX_IND. The corrected CALLOC
command is included in this commit as well.

Lastly, we included a better fix for handling late
DL_TTI_REQs. If the number of active harqs is larger
than the number of UCIs we have built, this is a good
indicator that the DL_TTI_REQ is late. To mitigate
problems, we will requeue the UL_TTI_REQ to when the
late DL_TTI_REQ comes in, we can handle the late
UCI that is built from it.
2021-11-19 11:23:47 -08:00
Melissa Elkadi 87097d9767 Adding assertFatal to UCI multiplexing 2021-11-19 07:55:03 -08:00
Melissa Elkadi 2205d6472d Adding AssertFatal to check for array indicies 2021-11-18 10:43:15 -08:00
Melissa Elkadi c008c8e60d IP TRAFFIC IS WORKING WITH ONE NR UE IN SA MODE
This commit includes a hack fix that has allowed
the Ip traffic to work in SA mode. Furthermore,
NSA mode (without the EPC) works in this commit
as well with up to 4 NSA UEs. We will need to
understand better the issue with the UL_DCI
handling in the NRUE that was causing the gNB
to crash.

The AssertFatal in the gNB when the gNB runs out
of downlink HARQ PIDs is caused by the NRUE
receiving a UL_DCI and then building BOTH a UCI
and a CRC/RX pair. So we are essentially sending
a UL and DL DCI to the gNB in this case which
results in an unexpected HARQ PID being received
in the gNB. The filtering in this commit stops
the UCI being built in the NRUE when a UL_DCI
is recevied.
2021-11-18 08:26:12 -08:00
Melissa Elkadi bb4db86d61 Do not handle multiplexing of UCIs if nothing is in UCI queue 2021-11-17 15:39:07 -08:00
Melissa Elkadi d28deb3c34 Handling multiplexing of UCI indications
The IP traffic of a single NRUE works most
of the time in this commit. There seems to
be a bug in the gNB and it will occassionally
crash with a heap-buffer-overflow. This will
be looked at in the next commit.

The changes in this commit include gathering
all of the UCI indications in the queue that
have the same scheduled sfn_slot and sending
them as one aggregated UCI when the scheduled
sfn_slot matches the received ul_tti_request.
2021-11-17 11:33:05 -08:00
Melissa Elkadi 368977b3bb The NRUE and gNB are connected to the 5GCN!
When IP traffic is started on the NRUE, the
gNB immediately crashes
2021-11-12 09:03:47 -08:00
Melissa Elkadi 83f8d71233 Fixing indentation in if statement and adding conf file 2021-11-09 09:44:48 -08:00
Melissa Elkadi dbacbfd0cd Removing more unnecessary filtering in NRUE
Got rid of unnecessary mac->scc check as well
2021-11-08 11:28:41 -08:00
Melissa Elkadi fa4617c0bf Fixing MR based on OAI feedback
The following was changed in this commit:
 - A new struct in the mac instance was created
   for all emulated L1 fields.
 - NR UE RRC state bug was fixed
 - Checking the RAR rnti based on the MAC instance
   ra.ra_rnti and not hardcoding to 0x10b
 - Modified the name of the new emulate_l2 flag
   to make sense: emulate_l1
2021-11-08 10:59:28 -08:00
Melissa Elkadi 85e066054f Checking for emulate_l2 instead of NSA flag 2021-11-05 15:45:48 -07:00
Melissa Elkadi f536682367 Fixing formatting and added AssertFatal 2021-11-05 14:59:00 -07:00
Melissa Elkadi a2a823d54b Removing log 2021-11-05 11:56:28 -07:00
Melissa Elkadi bf8a37f878 CBRA and CFRA procedure complete!! 2021-11-04 18:27:26 -07:00
Melissa Elkadi 954a64a1c0 SA mode SIB processing
In SA mode, we will not be able to process the SIB if
we change for mac->scc_SIB == NULL : return;

So we change the statement for NSA mode
2021-11-04 17:58:01 -07:00
Melissa Elkadi 7c484fba33 Changing how we filter DCI's fixes NSA mode
It will likely break SA mode because it will
filter out Msg3. I will come back to this and
fix it for Msg3.
2021-11-04 17:17:55 -07:00
Melissa Elkadi f4448023df Merge branch 'episys/master-nsa' into episys/mel/sa_development_init 2021-11-04 11:48:34 -07:00
Melissa Elkadi 81716e4c77 Filtering for multiple UEs in MAC excluding SIB and RAR
For multiple UEs, we need to be able to filter the rx'd messages by
the RNTI. However, we do not have the RNTI value until the CFRA (NSA)
or CBRA (SA) procedure is complete. The check below will handle this.
Also, depending on the RNTI value, we can have a SIB (0xffff), RAR (0x10b),
Msg3 (TC_RNTI) or an actual DCI message (CRNTI). When we get Msg3, the
MAC instance of the UE still has a CRNTI = 0. Only once the RA procedure
succeeds is the CRNTI value updated to the TC_RNTI.
2021-11-03 16:28:42 -07:00
Melissa Elkadi 54a894e534 Updated the following for SA development:
1. The preamble index in the NRUE is random for SA.
   Using the preamble index from the mac->ra is
   correct.

2. The dl_pathloss calculated is from L1. We should
   shunt this feature out for our emulated mode. If
   we add the abstraction later, we can model the
   pathloss in the proxy and update it in the RA
   procedure of the NRUE.

3. Checking that the crnti != t_crnti is not valid
   for SA mode. And may only be needed for multi-UE
   in NSA mode. We might be able to delete it all
   together. For now, we only use for NSA mode.

4. Checking the RAR based on rnti = 10b and not the
   RA_STATE is better.
2021-11-03 10:54:33 -07:00
Melissa Elkadi b29fd449d0 Changed ul_tti_req queueing mechanism:
Instead of resetting queue when full,
take last item out.
2021-11-02 14:35:32 -07:00
Melissa Elkadi 554e7db1d9 Updated the nr_ue_get_rach() function to match develop
Also, in the nr_rrc_mac_config_req_ue(), we should
only be configuring L1 if we are not in the L2 emul
mode. We are crashing due to the RRC state in the NRUE
not being set/checked properly.
2021-11-02 13:21:42 -07:00
Melissa Elkadi 7825350905 Fixing merge request comments 2021-11-01 16:24:59 -07:00
Melissa Elkadi e635b90fda Decoding MIB and SIB1 in NR UE
In this commit, we changed the stub function of the NRUE
to handle the MIB and SIB1, which arrive in a single
DL_TTI_REQ. If we have not received the MIB, we first
call the scheduler, then we handle any received NFAPI
messages. The NFAPI message handler will then call
the nr_ue_dl_indication() again, which will process
first the MIB, then SIB1. It seems that we are not
properly sending the SIB1 response back to the gNB so
the NRUE eventually crashes. We are however, properly
decoding the MIB and SIB which is a step in the right
direction!
2021-11-01 12:42:01 -07:00
Melissa Elkadi 04251e84be Removing name from log and demoting log 2021-10-29 13:51:58 -07:00
Melissa Elkadi 1dec9dd9f6 First attempt at receiving MIB and SIB in SA mode 2021-10-29 13:49:56 -07:00
Melissa Elkadi 3007550150 Updating DCI configuration to avoid seg fault 2021-10-28 11:14:47 -07:00
Melissa Elkadi cfb49c17d2 Added a seprate queue for chan_params 2021-10-28 10:32:28 -07:00
Melissa Elkadi 455e3d8343 This commit gets rid of sfn_slot sleep
In the previous commit, the NRUE would record
the time it received a slot and compare this
rx time to the next slot. If the next slot
came in before it had been 500us, the NRUE
would sleep a delta amount to make the duration
between the two slot indications 500 us. This
change complicated the code and did not
improve the performance so it was removed.
Furthermore, this commit removes the old
queueing mechanism of the slot indications and
uses calloc rather than an array.
2021-10-28 08:14:20 -07:00
Melissa Elkadi 3ec5210652 Merge branch 'episys/master-sa' into episys/mel/merge_bw_testing_abs 2021-10-28 06:36:43 -07:00
Melissa Elkadi 0fd35a229a Instead of removing the frees we allocated from heap.
In SA mode, there were DCI_INDs and RX_INDS that
were allocated on the stack and were assigned to
pointers used in the MAC instance. In NSA mode we
allocated these members on the heap so we free'd
them once we were done. In SA mode, they were not
allocated on the heap so this free call caused an
a free() error. We have now allocated these pointers
on the heap to avoid this error and ensure the
pointers are correct.
2021-10-26 15:48:03 -07:00
Melissa Elkadi 99183b1761 Freeing memory that wasnt allocated on heap in SA mode 2021-10-26 09:19:41 -07:00
Melissa Elkadi 8a56d146cc Merge branch 'episys/master-nsa' into episys/mel/merge_bw_testing_abs 2021-10-25 11:07:59 -07:00
francescomani 43a831f951 Merge remote-tracking branch 'origin/develop' into NR_UE_acknack 2021-10-20 17:10:24 +02:00
Melissa Elkadi 58eb8d2af4 Creating new queue for ul_ttis if dl_tti is late
Also, this commit changes the len argument in the
pusharray32 to match the actual field type (uint16_t).
There is also simple name change from sf -> slot.
The new queueing system is not a permanent solution.
It was simply a way for us to try to handle late
dl_tti_requests. If we queue every single ul_tti_req
that we get, the queue gets full very quickly becasue
we only remove ul_ttis from the queue when a uci has
been populated with a matching sfn/sf. Because of this,
we only queue ul_ttis if we have a uci_indication
prepared already. Rarely, a dl_tti_req will arrive at
the NRUE too late, and the NRUE does not have time
to create the uci_ind so we dont process the corresponding
ul_tti. A seprate queue was made to hold all other ul_ttis
the arrive in the NRUE (this queue will continuously
get full and then emptied) but will occasionally hold
a ul_tti that corresponds to a uci that hasnt
been populated yet.
2021-10-19 07:59:55 -07:00
Melissa Elkadi ea2495ea0a Attemping to stop filling UL_TTI_REQ queue
This is sort of hacky, but it stops the gNB
from crashing for 2 UEs with the proxy and
4 UEs with our internal proxy.
2021-10-12 17:06:00 -07:00
Melissa Elkadi b17a5189b7 Adding timing informtion to rx'd slot indictions
Ensuring in the NRUE that the slot indications we
process are 500us apart.
2021-10-12 10:27:15 -07:00