Commit Graph
15338 Commits
Author SHA1 Message Date
Raymond Knopp a3867df5f3 cleanup after removing harq state in L0 2021-02-07 10:39:39 +01:00
Raymond Knopp ee2ce7670d made L1 DLSCH encoding stateless. harq_pid/round information are not kept in PHY. Full channel encoding is performed for each transmission of a transport block.
Still to be done: test, then cleanup data structures and fix unitary simulations.
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
ChiehChun 62c58bd722 Use correct pucch_index_used 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