Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 305902da42 Correctly allocate memory for NR measurement array 2021-02-20 15:43:02 +01:00
Robert Schmidt a3b1216b23 Fixup sched_ul_bytes logic
1) Only count new transmission as scheduled bytes (which is then
compared against the BSR)

2) When subtracting scheduled bytes after successful reception, subtract
TBsize from correct HARQ process
2021-02-17 10:17:59 +01:00
Robert Schmidt ef90d77b0e Reformat nr_initiate_ra_proc() [no other changes] 2021-02-12 20:53:36 +01:00
Robert Schmidt 54a2d698db Fix build: test for slot from within preprocessor 2021-02-09 16:46:44 +01:00
Robert Schmidt b86fdaf59b Revert "Lower UE log level"
This reverts commit 71e297de9d.
2021-02-08 11:20:23 +01:00
Robert Schmidt 9b77575af2 Use the MAX_BWP_SIZE macro everywhere 2021-02-07 10:45:57 +01:00
Robert Schmidt 318c4e0fd7 Skip DL HARQ feedbacks if the timing does not match
As the precedent commit, this commit deals with the realtime problems
that we currently have on the CI bench.

For DL HARQ feedback, nFAPI does not give us the HARQ process ID.
Instead, we have to figure this out "from timing", i.e., if we trigger
PUCCH reception, we will get a message with HARQ if we instructed the
PHY to do so. If we have real-time problems, it seems (I cannot verify:
don't have real time problems) that we do not get the nFAPI message with
HARQ feedback. Thus, we need to skip the HARQ processes that should have
been processed in the past, which happens in this commit.
2021-02-07 10:45:57 +01:00
Robert Schmidt f23890e0b9 Search correct UL HARQ, don't assert on late slot
At the time of this commit, the CI has realtime issues. This can mean
that the HARQ result is delivered in a delayed fashion. Before this
commit, we were asserting on whether the slot corresponds to the HARQ
process's expected feedback slot, but a particular feedback might be
delayed under realtime issues, and we actually don't care about the
timing since we get the HARQ process ID.

Instead, we loop through the HARQ processes for which we wait for a
feedback in the beginning until we have the right process (which did not
seem to cause a problem till now, but who knows.
2021-02-07 10:45:57 +01:00
Robert Schmidt 423a0e4afe Handle UL HARQ slot wrap around for slot = 0 2021-02-07 10:45:57 +01:00
Robert Schmidt 8bd3ec7602 Fix whitespace issues (review request) 2021-02-07 10:45:57 +01:00
Robert Schmidt 71fd526e12 Remove unused variables 2021-02-07 10:45:57 +01:00
Robert Schmidt 30d13ebf6d Lower various log levels 2021-02-07 10:45:57 +01:00
Robert Schmidt 77203ee989 Fix nr_dlschsim unitary simulator 2021-02-07 10:45:57 +01:00
Robert Schmidt dcd591bd2b Schedule BSR0 UE only one at a time, in round-robin 2021-02-07 10:45:57 +01:00
Robert Schmidt 3b972f6766 ULSCH fix: Only allocate CCEs when necessary 2021-02-07 10:45:57 +01:00
Robert Schmidt 77de70c82f Calculate TBS for coefficient only when needed 2021-02-07 10:45:57 +01:00
Robert Schmidt 6294ce715e Reorder pf_ul to process retransmission 2021-02-07 10:45:57 +01:00
Robert Schmidt c8168085dd Calculate UL coefficient 2021-02-07 10:39:40 +01:00
Robert Schmidt 4b1be522a5 Add estimated_ul_buffer & Update in DTCH 2021-02-07 10:39:40 +01:00
Robert Schmidt 75dbf5fa4d Don't log retransmissions explicitly 2021-02-07 10:39:40 +01:00
Robert Schmidt ca47955293 Bugfix: check that retransmission can be allocated 2021-02-07 10:39:39 +01:00
Robert Schmidt 78da8c9345 Save TB in MAC, transmit TX_req also on retx 2021-02-07 10:39:39 +01:00
Robert Schmidt 80e23a179e Enable 12 slots
This commit enables more slots so that the "real UE" preprocessor can
schedule them. The DL phytest preprocessor continues to only schedule
slots 1 & 3.  This is because the OAI-UE needs to have PUCCH scheduled
at least six slots in advance.  Since we do not support this (yet), but
assume that two slots are enough, we schedule the UE only in slot 1 & 3
so it has 6 slots until slot 7 to send PUCCH.
2021-02-07 10:39:39 +01:00
Robert Schmidt 59cb9c87e0 Refactor nr_rx_sdu() 2021-02-07 10:39:39 +01:00
Robert Schmidt 0773229b1a Implement UL HARQ using NR_list_t 2021-02-07 10:39:39 +01:00
Robert Schmidt a0d47c504c Create lists for UL HARQ management 2021-02-07 10:39:39 +01:00
Robert Schmidt 4ddd45f813 Implement DL HARQ using NR_list_t 2021-02-07 10:39:39 +01:00
Robert Schmidt 42710ee7ba Create lists for DL HARQ management 2021-02-07 10:39:39 +01:00
Robert Schmidt d7f46a2ff2 Set RRC nrofHARQ_ProcessesForPDSCH to 16 2021-02-07 10:39:39 +01:00
Robert Schmidt c9de1c70c0 Set secondaryCellGroup + default values in add_new_nr_ue() 2021-02-07 10:39:39 +01:00
Robert Schmidt 74cb9bf367 Refactor add_new_nr_ue() and mac_remove_nr_ue()
mac_remove_nr_ue(): no need to memset sched_ctrl, since it is done on
connection of a UE
2021-02-07 10:39:39 +01:00
Robert Schmidt 4a0efd6f48 mac_top_init_gNB(): do not init per-UE HARQ
the whole UE_sched_ctrl is initialized in add_new_nr_ue(), which will
also init the per-UE HARQ.
2021-02-07 10:39:39 +01:00
Robert Schmidt 77c7fe5b87 Create more generic NR_list_t with helper functions 2021-02-07 10:39:39 +01:00
Robert Schmidt 338d8debae Bugfix OAI UE: reset slot_for_feedback_ack to initial value 2021-02-07 10:39:39 +01:00
Robert Schmidt e328a6ccf7 Make multiple passes over RLC to get all data 2021-02-07 10:39:39 +01:00
Robert Schmidt 76d154f07c Do not count down TBS 2021-02-07 10:39:39 +01:00
Robert Schmidt a18ed9d92d Reorder DLSCH MAC PDU logic
Before this commit, the DLSCH scheduler would construct the MAC PDU by
reading RLC data into a memory on the stack, and then construct the PDU
with CEs first. There are at least two problems:
- we need to keep track of the exact number of bytes of CEs (cumbersome)
  to calculate the number of MAC SDUs to include
- we needlessly copy data around.

This commit does the following instead:
- write all CEs first (no need of keeping track of this in DLSCH and a
  separate function)
- then read MAC SDUs directly into nFAPI as much as possible or
  necessary, without recopying
2021-02-07 10:39:39 +01:00
Robert Schmidt 96e1f3597b Group PDCCH PDU per CC/BWP/CORESET in RA, and reuse in DLSCH 2021-02-07 10:39:39 +01:00
Robert Schmidt c71412882d nr_schedule_ulsch(): only one PDCCH PDU per BWP and CORESET 2021-02-07 10:39:39 +01:00
Robert Schmidt a26404c17f nr_schedule_ue_spec(): link TX_data/PDSCH PDU with common PDU index 2021-02-07 10:39:39 +01:00
Robert Schmidt a6348e8567 nr_generate_Msg2(): link TX_data/PDSCH PDU with common PDU index 2021-02-07 10:39:39 +01:00
Robert Schmidt 28b78ee09c nr_schedule_ue_spec(): only one PDCCH PDU per BWP and CORESET 2021-02-07 10:39:39 +01:00
Robert Schmidt 55c6ce1598 Add small notice that we assume no concurrent RA 2021-02-07 10:39:39 +01:00
Robert Schmidt 089f821dd2 Separate nFAPI PDCCH allocation from nFAPI DCI allocation
According to SCF222, a single PDCCH allocation groups DCIs that are
within the same BWP and CORESET. Therefore, if we want to allocate
multiple DCIs, we need to decouple PDCCH allocation and DCI (previously
jointly done in nr_configure_pdcch()), especially to be forward
compatible.

***Note that as of this commit, we would still allocate different PDCCH
PDUs for multiple UEs (which we do not support yet, anyway)***

nr_configure_pdcch(): simply take out DCI allocation.

nr_generate_Msg2(): separately allocate dci_pdu in common RA SS, and
rename DCI payload variable. Also, reorganize the function so that it is
first checked for CCE allocation and messages nFAPI messages are
allocated afterwards.

nr_schedule_ue_spec(): separately allocate dci_pdu in UE-specific SS.
Rename DCI payload variable.

nr_schedule_ulsch(): separately allocate dci_pdu in UE-specific SS.
Rename DCI payload variable.

nr_fill_nfapi_dl_sib1_pdu(): separately allocate dci_pdu in common SS.
2021-02-07 10:39:39 +01:00
Robert Schmidt 0655cc481d No DCI PDU array in nr_fill_nfapi_dl_sib1_pdu() 2021-02-07 10:39:39 +01:00
Robert Schmidt 080b776097 No DCI PDU array in nr_schedule_ue_spec() 2021-02-07 10:39:39 +01:00
Robert Schmidt 86b1c0035d No DCI PDU array in nr_generate_Msg2() 2021-02-07 10:39:39 +01:00
Robert Schmidt db792632c9 Refactor config_uldci() 2021-02-07 10:39:39 +01:00
Robert Schmidt 52ba0e277d Simplify config_uldci(): handle only one DCI 2021-02-07 10:39:39 +01:00
Robert Schmidt 1bf58a4482 Deleted commented code 2021-02-07 10:39:39 +01:00
Robert Schmidt ccaa5abc55 Reformat fill_dci_pdu_rel15() 2021-02-07 10:39:39 +01:00
Robert Schmidt 0473074acf fill_dci_pdu_rel15(): handle one DCI at a time 2021-02-07 10:39:39 +01:00
Robert Schmidt 0d90ecfd62 Make dci_pdu in PDCCH PDU an array
SCF222 says that dci_pdu in PDCCH PDU
(nfapi_nr_dl_tti_pdcch_pdu_rel15_t) should be an array, and not its
members.
2021-02-07 10:39:39 +01:00
Robert Schmidt 83f7c4be5f Make passed secondaryCellGroup pointer const in prepare_dci() 2021-02-07 10:39:39 +01:00
Robert Schmidt dc04e8cced Make passed pointers const in nr_dci_size() and get_transformPrecoding() 2021-02-07 10:39:39 +01:00
Robert Schmidt d0ae11783a Integrate nr_fill_nfapi_dl_pdu() back into nr_schedule_ue_spec()
Initially, filling the PDCCH and PDSCH nFAPI messages was split into a
separate function (in an attempt to keep the code structure similar to
LTE). However, this proved as not helpful: the nr_fill_nfapi_dl_pdu()
just filled the messages, with a parameter list almost size as long as
the actual messages (because most parameters are kind of independent).
This made no sense, so we put it back.

Also, from an understanding POV, they just fill a message as specified
in SCF222, so it should not be a problem.
2021-02-07 10:39:39 +01:00
Robert Schmidt 71e297de9d Lower UE log level 2021-02-07 10:39:39 +01:00
Robert Schmidt 8f399a1c9e Disable logging of PUCCH 2021-02-07 10:39:39 +01:00
Robert Schmidt a69ec6669a Assert on maximum number of used PUCCH resources 2021-02-07 10:39:39 +01:00
Robert Schmidt 943d55717e Scheduler: introduce BIT() macro 2021-02-07 10:39:39 +01:00
Robert Schmidt 614b2c1951 DLSCH: do not check for slot number 2021-02-07 10:39:39 +01:00
Robert Schmidt aa948f707a Deallocate CCE if PUCCH allocation fails 2021-02-07 10:39:39 +01:00
Robert Schmidt ac5ac8dd25 Clarify assumptions in nr_acknack_scheduling() 2021-02-07 10:39:39 +01:00
Robert Schmidt 1c75496ffa nr_schedule_pucch() for multiple UEs 2021-02-07 10:39:39 +01:00
Robert Schmidt 7879e6ad32 Remove (unnecessary) num_slots_per_tdd in DLSCH sched 2021-02-07 10:39:39 +01:00
Robert Schmidt 2225cd26fe Handle multiple TDD periods 2021-02-07 10:39:39 +01:00
Robert Schmidt 551b08c315 Skip CSI if present 2021-02-07 10:39:39 +01:00
Robert Schmidt 75f8591b9b Handle PUCCH frame/period wrap around 2021-02-07 10:39:39 +01:00
Robert Schmidt d281e41a50 Assert on TDD period "wrap around" 2021-02-07 10:39:39 +01:00
Robert Schmidt 91fd4ddf7e rewrite nr_acknack_scheduling() 2021-02-07 10:39:39 +01:00
Robert Schmidt c5968599b2 Add nr_fill_nfapi_pucch(): allocate PUCCH nFAPI message 2021-02-07 10:39:39 +01:00
Robert Schmidt 7a9ad3dbf7 Keep track of used PUCCH resources 2021-02-07 10:39:39 +01:00
Robert Schmidt 94d8147ece nr_csi_meas_reporting() for multiple UEs 2021-02-07 10:39:39 +01:00
Robert Schmidt 5a2caa5475 Refactor nr_csi_meas_reporting(): check only in slot 0 2021-02-06 20:50:28 +01:00
Robert Schmidt b6ebdc2fab Refactor nr_get_csi_bitlen() 2021-02-06 20:50:28 +01:00
Robert Schmidt 49c7dbf214 Use three fields 2021-02-06 20:50:28 +01:00
Robert Schmidt 171f7842bc Rewrite PUCCH allocation (simplified, restricted)
- No dynamic allocation of PUCCH structures
- Use first PUCCH for HARQ (can only allocate for up to two slots in
  single PUCCH, simplistic nr_acknack_scheduling!)
- Use second PUCCH for CSI, do not multiplex!
2021-02-06 20:50:28 +01:00
Robert Schmidt 4e91f44839 Rename NR_sched_pucch to NR_sched_pucch_t 2021-02-06 20:50:28 +01:00
Robert Schmidt a19a15cfb7 Enable logging of PUCCH 2021-02-06 20:50:28 +01:00
Robert Schmidt f1cb44a005 Bugfix: decrease actual MCS value 2021-01-29 09:31:56 +01:00
Robert Schmidt 28cd23887e Update NR Measurements periodically, remove rsrq typo 2021-01-27 15:43:48 +01:00
Robert Schmidt 13f0571a65 Fix log message: add newline, format 2020-12-04 11:07:18 +01:00
Robert Schmidt 3ae4744679 Single definition and declaration of nr_slots_per_frame 2020-12-04 11:07:18 +01:00
Robert Schmidt 1d7065c29c Remove DLSCH_pdu as it is not needed anymore 2020-12-04 11:07:18 +01:00
Robert Schmidt 89fc1e6e54 handle_nr_ulsch() for multiple UEs 2020-12-04 11:07:18 +01:00
Robert Schmidt 35e723d090 handle_nr_uci() for multiple UEs 2020-12-04 09:41:34 +01:00
Robert Schmidt d9c7243ac1 Remove LTE/FlexRAN-related headers from NR MAC 2020-12-04 09:41:34 +01:00
Robert Schmidt c71772e325 Remove LTE-related headers from NR PHY-MAC IF 2020-12-04 09:41:34 +01:00
Robert Schmidt 589ff862dc Improve retransmission messages in UL&DL 2020-12-03 09:52:41 +01:00
Robert Schmidt f821a333d7 Fix nr_dlsim: remove current_harq_pid, selected in DL scheduler 2020-12-03 09:42:22 +01:00
Robert Schmidt 5bb9a57ae9 Update SW_archi.md description 2020-12-02 18:42:47 +01:00
Robert Schmidt 12c6cd4481 Remove unused variable 2020-12-02 18:08:51 +01:00
Robert Schmidt c110ad7dc6 Take out DL phytest slot limitation 2020-12-02 18:08:51 +01:00
Robert Schmidt ec10d48b24 Reformat schedule_nr_prach() 2020-12-02 18:08:51 +01:00
Robert Schmidt 0e936a09ba Remove current_harq_pid: it is not needed 2020-12-02 18:08:51 +01:00
Robert Schmidt 3a37202beb Remove current_slot: it is not needed 2020-12-02 18:08:51 +01:00
Robert Schmidt e99d3635db ULSCH: warn when retransmission, basic debug logging 2020-12-02 18:08:51 +01:00
Robert Schmidt 0c730d7aa1 Mark PRACH in vrb_map_UL 2020-12-02 18:08:51 +01:00
Robert Schmidt 70c3915d81 Schedule PRACH (internally) one frame in advance 2020-12-02 18:08:51 +01:00
Robert Schmidt 7a7c1bcc98 Calculate TBS in pre-processor and use the results in post-proc 2020-12-02 18:08:51 +01:00