Commit Graph

626 Commits

Author SHA1 Message Date
Xavier Arteaga b501f2eeaf SRSENB/UE: Added NR workers 2020-12-12 15:59:26 +01:00
Francisco 86ab1864f7 The struct tti_point is now used ubiquitously in the scheduler 2020-12-12 15:59:26 +01:00
Pedro Alvarez 235f373af7 Started to add ability to send error indication when G-PDU from invalid TEID is received. 2020-12-12 15:59:26 +01:00
Francisco 8fb3ea6922 Added the ability to choose scheduling policy from enb.conf
- The two options provided at the moment are time-domain RR and PF
2020-12-12 15:59:26 +01:00
Francisco b71e8075f4 Refactoring of scheduling algorithms
- Use single interface for both DL and UL
- Wrote helper functions for tasks that are common to different algorithms
- created subfolder for all scheduling algorithms
2020-12-12 15:59:26 +01:00
Francisco d7fae0b7a3 Implementation of time-domain PF scheduler
- PF scheduling becomes the new default
2020-12-12 15:59:26 +01:00
Andre Puschmann 07d2bc4fe8 change license header to agnostic version with hint to root LICENSE file 2020-12-12 15:59:25 +01:00
Francisco f07e52129c increase mcs ul upper bound to 24 when ue is cat4 and enb supports 64qam. Simplified max_mcs computation 2020-12-12 15:59:25 +01:00
Francisco 3d80ff4831 fix activation of PDCCH for adaptive retxs. 2020-12-12 15:59:25 +01:00
Francisco fc81a5c6ba harq ack state can now only be NACK or ACK. The ul_harq pending phich flag is now reset after phich scheduling. Thus, the existence of a crc_info(...) signal from the PHY is not required. 2020-12-12 15:59:25 +01:00
Francisco 7a74bf28d1 forward declare s1ap types in enb interfaces 2020-12-12 15:59:25 +01:00
Francisco 66712023bb remove unneeded includes of full rrc asn1 lib 2020-12-12 15:59:25 +01:00
Francisco 3067e81e67 fix check of pending UL bytes 2020-12-12 15:59:25 +01:00
Francisco bb96625129 renaming lch_manager -> lch_ue_manager 2020-12-12 15:59:25 +01:00
Francisco a348508072 simplified sched_ue pending DL bytes calculation API 2020-12-12 15:59:25 +01:00
Francisco 0ffea62411 Wrote logging functions for SCHED MAC CE/LCID allocations 2020-12-12 15:59:25 +01:00
Francisco c1fb161004 Move sched lch_manager to separate file 2020-12-12 15:59:25 +01:00
Francisco eae0dc93ad rename scheduler files. scheduler -> sched 2020-12-12 15:59:25 +01:00
Francisco 68eda336bd remove ENB_METRICS_MAX_USERS compile time macro and use run-time variable to set maximum number of UEs the srseNB can have connected at a given instant. 2020-12-12 15:59:25 +01:00
Francisco 324cb80cac rename cell_info_common->enb_cell_common and cell_ctxt_dedicated->ue_cell_ded 2020-12-12 15:58:34 +01:00
yagoda bdc1964335 consolidating RRC eMBMS configuration into single function, setting some parameters to const 2020-12-12 15:58:34 +01:00
yagoda b90574975b refactoring asn1 eMBMS code, removing asn1 from PHY and MAC in eNodeB 2020-12-12 15:58:34 +01:00
Francisco 92c1c2a182 more efficient measObjToAddModList reconfiguration by ensuring consistency in EARFCN ordering 2020-12-12 15:58:34 +01:00
Francisco 68d463b08f remove var_meas_cfg_t class 2020-12-12 15:58:34 +01:00
Francisco 25bfb6d84d move rrc measconfig handling functions to separate file. Update measconfig tests 2020-12-12 15:58:34 +01:00
Francisco 1cb65f07f1 enable meas gaps in RRC and enb parser 2020-12-12 15:58:34 +01:00
Francisco Paisana 49a48c0130 add measgap awareness to scheduler metric and sf_sched. Add measGap test to random sched test suite. 2020-12-12 15:58:34 +01:00
Francisco Paisana 9579931f16 added meas gap checks to scheduler ue 2020-12-12 15:58:34 +01:00
Francisco Paisana bf7c587e4f add UL 64QAM support to eNB RRC and scheduler 2020-12-12 15:58:33 +01:00
Pedro Alvarez 604e79214d Changed NAS is_attached interface to is_registered. 2020-12-12 15:58:33 +01:00
Pedro Alvarez 14844a168a Created new class to hold all NAS states for the NAS state machine. Added EMM-DEREGISTERED substates and EMM-REGISTERED substates.
Decoupled PLMN selection, attach request and service request. Removed RRC connect procedure from NAS.
2020-12-12 15:58:33 +01:00
Francisco Paisana d5f6ccc0c4 integrated UL UE-dedicated sched tests in random test 2020-12-12 15:58:33 +01:00
Francisco Paisana 88105c1577 change the namespace of tti point helper functions for the eNB 2020-12-12 15:58:33 +01:00
Francisco Paisana 3ea47b645a changed the way the number of UL pending bytes is calculated in the scheduler 2020-12-12 15:58:32 +01:00
Francisco Paisana d8203acd56 implement harq resuming functionality 2020-12-12 15:58:32 +01:00
Francisco Paisana 510959b50f update nr asn1 files, and asn1 tests 2020-12-12 15:58:32 +01:00
Francisco Paisana f927ccaf55 fix pusch grant allocation for cqi reporting in CA. 2020-11-05 19:35:03 +00:00
Francisco Paisana a351b2534e allow PUSCH grants for CQI in PCell 2020-11-03 09:25:17 +00:00
Francisco Paisana a865858db3 disable srbs UL during handover to avoid UL grants and scheduling requests before the handover is complete 2020-10-30 21:51:58 +00:00
Francisco Paisana 42cdc5e340 Allocate all the leftover bytes of the TBS to last allocated MAC SDU.
Fix the way the RLC header is accounted for depending on the bearer id.
For instance, the SRB0 does not require any RLC header.
2020-10-30 13:35:15 +00:00
Francisco Paisana 55d62a2baa fix rlc buffer updating inside the scheduler to account for RLC headers 2020-10-30 13:35:15 +00:00
Francisco Paisana 980278fdec add comments regarding radio resource asn1 setting in the eNB 2020-10-29 21:19:40 +00:00
Francisco Paisana b40a5a958e use common function to fill rrc reconf message in handover 2020-10-29 21:19:40 +00:00
Francisco Paisana 836e7d7ede refactor scell addition in the srsenb::rrc to follow the same style of other rrc recfg fields 2020-10-29 21:19:40 +00:00
Francisco Paisana a8e11d7991 removal of the special case for rrc reconf update 2020-10-29 21:19:40 +00:00
Francisco Paisana f26b5ccde7 fix drb reestablishment during handover 2020-10-29 21:19:40 +00:00
Francisco Paisana 7bf196a6e0 removal of srb handling from srsenb::rrc::bearer_cfg_handler 2020-10-29 21:19:40 +00:00
Francisco Paisana 2ef1e286b2 fix set of rrc reconf message radio resource cfg fields 2020-10-29 21:19:40 +00:00
Francisco Paisana 890113fd32 now the rrc enb is using a common function for rr_cfg reconf for the first reconf message 2020-10-29 21:19:40 +00:00
Francisco Paisana ce78fa82ce now the rrc enb is using a common function for rr_cfg setup/reest 2020-10-29 21:19:40 +00:00
Francisco Paisana 97f2e4336e refactor of functions for filling the asn1 radio resource config structs. This functions are used during rrc setup/reest/reconf 2020-10-29 21:19:40 +00:00
Francisco Paisana 44a9ad76f1 avoid sched_ue dangling pointer
With the sched feature that allows scheduling in TTIs
ahead of time, there is no guarantee that when
the tti arrives to generate a sched result, the stored
raw sched_ue pointers are still valid. For this reason,
I now store the rnti and check if the rnti still exists.
2020-10-22 12:42:34 +01:00
Francisco Paisana 852c31c0bc log warnings when the sched ue cfg is not valid 2020-10-22 09:59:45 +02:00
Francisco Paisana 1ce928ab2e use of current / future ue sched config structs in the srsenb::rrc::ue::mac_controller as an approach to deal with the multi-step mac reconfiguration of the UE 2020-10-20 16:30:01 +01:00
Francisco Paisana 1e6d902873 cleanup of srsenb::rrc::ue::mac_controller api 2020-10-20 16:30:01 +01:00
Francisco Paisana f1bdf33d10 addition of cells provided in cell_meas_list of rr.conf to cellsToAddModList in the rrc reconfiguration message 2020-10-16 15:55:22 +01:00
Francisco Paisana c5c7700cb7 implemented DL logical channel prioritization test for finite PBRs 2020-10-14 22:55:12 +01:00
Francisco Paisana 9b10acff06 implemented logical channel prioritization in DL scheduler 2020-10-14 22:55:12 +01:00
Francisco Paisana b7ed8b1858 - added react method to to_state<...> transitions
- s1 handover composite state simplified
- the eNB now starts a HO cancellation when it receives an invalid
Handover Command
- the FSM log now prints the current state when it receives an unhandled
event
2020-10-12 18:24:14 +01:00
Francisco Paisana a761762ec8 extended cc_sched_ue fsm to account for more harmonious transition of an scell to deactivated state 2020-10-12 14:45:13 +01:00
Francisco Paisana 74c18ecf6c implementation of SCell Deactivation 2020-10-12 14:45:13 +01:00
Francisco Paisana eafc003671 Altered the way the generation of the scheduling decision for a given
TTI is made. Instead of generating one CC in each dl_sched()/ul_sched()
call, all CC decisions are generated at once. This avoids race
conditions with calls from the RRC to the MAC to configure UEs.
2020-10-12 14:04:34 +01:00
Francisco Paisana c46402c836 fix phy configuration during handover on srsenb. The function srsenb::rrc::ue::fill_scell_to_addmod_list assumes that the phy_cfg of the PCell is up-to-date, which was not the case. With this PR, the srsenb rrc updates the phy_cfg before the ho cmd is sent, but, in the case of intra-enb ho, the updates are not submitted to the phy before the reception of the crnti mac ce 2020-10-07 09:10:47 +01:00
Francisco Paisana 0f51d70aac fix measObj addition in srsenb. Now the enb considers both scells and meas_cells in the rr.conf 2020-10-06 21:16:18 +01:00
Francisco Paisana d42cdca729 fix scell activation in the phy during intra-enb handover. 2020-10-06 17:08:08 +02:00
Francisco Paisana 688dda30a4 favour carriers with best channel conditions for UL grants due to SRs 2020-10-01 19:58:00 +01:00
Francisco Paisana 137e554eb3 reestablish pdcp bearers is required in case of AM bearers 2020-10-01 16:57:08 +01:00
Francisco Paisana 4c88404801 fix measurement report handling in case of intra enb handover 2020-09-30 18:03:03 +01:00
Francisco Paisana 942c28881d converted member method of list of cells in the enb to a free function 2020-09-25 15:03:58 +01:00
Francisco Paisana 3a924a1d80 avoid sending cellsToAddModList if cell offsets are zero 2020-09-25 15:03:58 +01:00
Francisco Paisana da70c0fdaf fix cellsToAddModList handling. Now the eNB always adds PCell+SCells as measObjects in the RRC Reconfiguration messages. It may also further include cellsToAddModList if they are provided in the rr.conf file 2020-09-25 15:03:58 +01:00
Francisco Paisana 141960fbda remove unnecessary shared_ptrs and use value semantics instead for the var_meas_cfg of the different enb cells 2020-09-24 09:52:09 +01:00
Francisco Paisana 7e6487b6fa perform PUCCH+PRACH PRB reservation right at the start of a new TTI in the scheduler 2020-09-15 16:10:50 +01:00
Ismael Gomez 59b6301cc8 Remove legacy arbritrary 1s timeout for eNB requests 2020-09-08 22:28:35 +02:00
Ismael Gomez 38e2ffe414 Use Format1A when using CA and 15 PRB due to DCI size ambiguity 2020-09-03 10:45:06 +02:00
Francisco Paisana fddcc3d8ea In the case of Handover, postpone the activation of the CQI and SR config present in the HO command for after the RA proc completion to the target eNB 2020-08-28 10:14:23 +01:00
Francisco Paisana 13caf287f9 fix S1 Handover with UE CA. The HandoverPreparation message was not being filled correctly 2020-08-26 17:24:57 +01:00
Ismael Gomez a4835dd2c8
More accurate MCS reduction when PUSCH carries UCI (#1630) 2020-08-25 22:30:35 +02:00
Francisco Paisana cc469fc7a3 fix reestablishment after S1 handover by setting ncc accordingly 2020-08-25 14:41:09 +01:00
Francisco Paisana 0036941af4 added extra state to S1 target enb mobility FSM. Accounts for out-of-order arrival of MMEStatusTransfer. Also, now we avoid creating DRBs before the MMEStatusTransfer 2020-08-22 09:40:09 +01:00
Francisco Paisana bb5dd92dca implemented s1 handover cancellation procedure to force the target enb to release the ue ctxt 2020-08-21 00:05:58 +01:00
Francisco Paisana 8c9e596f89 refactored s1ap handover request interface. cleaned up rrc tenb s1 handover code 2020-08-21 00:05:58 +01:00
Francisco Paisana 7cd4f45d62 fsm refactor.
- avoid triggering directly a subfsm
- improved metafunctions
- other cleanups
2020-08-18 16:07:21 +01:00
Francisco Paisana 5d1343fe75 implemented S1 bearer status transfer 2020-08-18 13:55:17 +01:00
Francisco Paisana db8af399f8 extended rrc tenb s1 handover test. implemented layer reconfig during s1 handover 2020-08-18 13:55:17 +01:00
Francisco Paisana 7605c7df23 added s1ap handover notification, fixed s1ap asn1 bug, and fixed bad fields for admitted erabs in ho req ack 2020-08-18 13:55:17 +01:00
Francisco Paisana 20b69fb22e substitution of ul_alloc_t for prb_interval 2020-08-14 15:06:06 +01:00
Francisco Paisana 26f46ea067 add S1 Handover Request handling in target eNB 2020-08-14 14:28:56 +01:00
Francisco Paisana caf862c99f moved expected, bounded_bitset, move_callback to adt folder. created a test for bitset 2020-08-13 13:13:34 +01:00
Ismael Gomez 382811e10e
Update S1AP RNTI context when doing Reestablishment (#1582) 2020-08-12 23:48:20 +02:00
Francisco Paisana 35fa5346b9 only reduce mcs if the current tti requires uci 2020-07-21 10:51:11 +01:00
Francisco Paisana 58c4bcf288 reduce mcs for UL grants carrying UCI 2020-07-21 10:51:11 +01:00
Andre Puschmann a7911f0dab pdcp,rlc: refactor SDU queueing policy
this patch refactors the SDU queuing and dropping policy of the RLC and PDCP layer.
the previous design had issues when packets have been generated at a higher
rate above the PDCP than they could be consumed below the RLC.

When the RLC SDU queues were full, we allowed two policies, one to block on the write
and the other to drop the SDU. Both options are not ideal because they either
lead to a blocking stack thread or to lost PDCP PDUs.

To avoid this, this patch makes the following changes:

* PDCP monitors RLC's SDU queue and drops packets on its north-bound SAP if queues are full
  * a new method sdu_queue_is_full() has been added to the RLC interface for PDCP
* remove blocking write from pdcp and rlc write_sdu() interface
  * all writes into queues need to be non-blocking
  * if Tx queues are overflowing, SDUs are dropped above PDCP, not RLC
* log warning if RLC still needs to drop SDUs
  * this case should be avoided with the monitoring mechanism
2020-07-13 17:05:28 +02:00
Francisco Paisana 5e06430455 removal of stack handler interface 2020-07-13 11:19:25 +01:00
Francisco Paisana 039977aeb5 renamed interfaces 2020-07-13 11:19:25 +01:00
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 2020-07-13 11:19:25 +01:00
Francisco Paisana e9f34c7613 using task scheduler in enb stack 2020-07-13 11:19:25 +01:00
Francisco Paisana 4f5e65781f created task scheduler class to deal with timers, thread pool, multiqueue, internal tasks 2020-07-13 11:19:25 +01:00
Pedro Alvarez 89b6e0f714 Send paging message to all cells. 2020-07-10 10:14:08 +01:00
Francisco Paisana fe8f8be62d apply separate cqi configurations to scells 2020-07-09 18:56:01 +02:00
Francisco Paisana e550bf726d updated fsm to allow enter methods to receive event that caused them 2020-07-06 14:25:03 +01:00
Ismael Gomez e378a45db0 Reorganized priorities to avoid GW starve the CPU 2020-07-02 11:52:14 +02:00
Francisco Paisana 97d20ca579 remove obsolete bearer cfg methods 2020-06-29 20:32:23 +01:00
Francisco Paisana 0929a9de62 created rrc mac_controller class to handle the configuration of scheduler 2020-06-29 20:32:23 +01:00
Francisco Paisana 7ab4b5f723 fix long bsr handling 2020-06-29 17:31:07 +01:00
Francisco Paisana af58597647 fix mac tb building in scheduler 2020-06-29 17:31:07 +01:00
Francisco Paisana cb7f620254 created separate class to manage bearers buffers/status reports in the scheduler 2020-06-29 17:31:07 +01:00
Francisco Paisana 2cb80f9bf3 remove rnti in mac/phy in staged manner. First the "upper mac", and then the "lower mac" and phy 2020-06-26 11:59:06 +01:00
Ismael Gomez 493b7ea2da Remove SNR threshold based link failure detection 2020-06-25 22:57:31 +02:00
Francisco Paisana f0874b780b add radio_base/null classes 2020-06-18 23:37:26 +01:00
Francisco Paisana 64e8f5e3ed update license year 2020-06-18 12:41:54 +01:00
Pedro Alvarez 9c1a7d2cf1 Removed get_bearer_status in PDCP. Renamed get_state/set_state to
get_bearer_state/set_bearer_state.
2020-06-18 12:13:57 +01:00
Pedro Alvarez fb088a8c54 Restoring PDCP state only when using RLC AM. 2020-06-18 12:13:57 +01:00
Pedro Alvarez 66d4f320e5 Added intereface to set PDCP state after reestablishment. 2020-06-18 12:13:57 +01:00
Pedro Alvarez 217f16d137 Getting PDCP state on re-establishment. 2020-06-18 12:13:57 +01:00
Pedro Alvarez 33567d81db Added interface to get internal PDCP state. 2020-06-18 12:13:57 +01:00
Andre Puschmann 06d31f46ba enb: set maximum allowed TTI difference between PHY and Stack TTI clocks for ZMQ
this fixes the issue where PHY and MAC threads, and the processing
of events therein, are drifting apart too much.

This patch effectivly enforces a strong wait on the PHY if the
stack thread is too slow in processing its tasks.

For RF hardware the default is still 8192 TTIs, for ZMQ 1 TTI is used.
2020-06-12 21:37:10 +02:00
Andre Puschmann a1d64c1efe enb: improve error message when RAR cannot be sent 2020-06-12 21:37:10 +02:00
Francisco Paisana 3c2e3dbdbf added latest mac nr updates 2020-06-11 15:50:36 +01:00
Francisco Paisana d859c33035 added check for UCI collision during DL scheduling for CA 2020-06-10 22:22:41 +01:00
Francisco Paisana 53b85691b5 moved sf result to sched class. This way each carrier has a view to the results of the remaining carriers in the same subframe 2020-06-10 22:22:41 +01:00
Francisco Paisana 5d33acdb53 changed name of sched_ue_carrier class 2020-06-10 22:22:41 +01:00
Ismael Gomez 60b5fb9a74 Refactor variable name 2020-06-10 21:30:39 +02:00
Pedro Alvarez 20c5ea7d17 Fix warning with GCC 10.1 with EEA/EIA prefrence list. 2020-06-10 15:08:32 +01:00
Francisco Paisana 7ce23e0afb extend handover intraenb handover fsm to account for multiple C-RNTI CEs 2020-06-06 12:16:00 +01:00
Francisco Paisana 92c4b3f226 fix non-final sdap/mac/rlc dtor error 2020-06-05 15:10:11 +01:00
Francisco Paisana e4a91a207d remove unused variables 2020-06-05 15:10:11 +01:00
Francisco Paisana b843585abc add srsgnb stack class 2020-06-05 15:10:11 +01:00
Francisco Paisana f5174415f8 add srsenb::sdap class 2020-06-05 15:10:11 +01:00
Francisco Paisana 613003ac53 add srsenb::rrc class 2020-06-05 15:10:11 +01:00
Francisco Paisana 0916e29de4 add srsenb::rlc_nr class 2020-06-05 15:10:11 +01:00
Francisco Paisana 9001117b2d add srsenb::pdcp_nr class 2020-06-05 15:10:11 +01:00
Pedro Alvarez 960c0e97cd Added handling of RRC re-establishment to srsENB.
* Added the appropriate code for handling and sending the
   re-establishment procedure messages to rrc_ue.c/.h.
 * Triggered RRC reconfiguration after the reception of RRC
   re-establishment complete
 * Refreshed K_eNB at the reception of re-establishment
   request
 * Changed the mapping of TEIDs to RNTIs in the GTP-U layer,
   as the RNTI might change with reestablishment.
2020-06-02 11:19:17 +01:00
Francisco Paisana 452c043370 created a global map of lcids to srbs/drbs for NR 2020-05-29 14:11:23 +01:00
Francisco Paisana 6a164e032d added srsue::rrc_nr 2020-05-29 14:11:23 +01:00
Francisco Paisana 026628a84f use of reestablishment method to reset the RLC bearers during handover 2020-05-26 14:46:41 +01:00
Francisco Paisana 9a0ea6e08c use log_helper for log macros 2020-05-26 10:02:08 +01:00
Francisco Paisana edba7f57e4 corrected mac_nr_pdu includes 2020-05-26 10:02:08 +01:00
Francisco Paisana d7b35ba7d1 added nr mac 2020-05-26 10:02:08 +01:00
Andre Puschmann a0e4b18507 enb_mac: pre-allocate UE object for quicker PRACH/RAR handling
we've seen long delays in handling PRACH on low-power devices
such as the RPi4. This was mainly caused by long delays
in creating the UE object on the fly during PRACH handling.

This patch pre-allocates one UE object that is then used
during the PRACH.
2020-05-25 13:12:19 +02:00
Ismael Gomez a1f0f8de35
Add callback to RLC to indicate BSR for TX and reTX queues (used in ENB) (#1361) 2020-05-22 11:20:33 +02:00
Francisco Paisana 860174a819 remove comment and changed handover_type enum 2020-05-21 16:45:16 +01:00
Francisco Paisana b37923312e added intraenb handover fsm and respective test 2020-05-21 16:45:16 +01:00
Francisco Paisana 65ef16c7f1 void sending rrc connection release as msg4 2020-05-20 18:43:46 +01:00
Francisco Paisana 61680d64d7 move rrc::ue to separate file 2020-05-19 18:54:55 +01:00
Pedro Alvarez 51f8ba60da Make MBMS MCS configurable for the eNB. 2020-05-15 10:58:42 +01:00
Francisco Paisana e8aff22e1b using new rrc obj id util methods in handover code 2020-05-14 20:51:16 +01:00
Francisco Paisana f43985b6cd small updates for testing handover and configuring the rrc 2020-05-13 21:02:53 +01:00
Francisco Paisana f2af447b1a use of unique_byte_buffer for sib scheduling to allow for padding 2020-05-13 14:38:21 +01:00
Francisco Paisana 598bad1f0e changed rrc ue cfg files names 2020-05-13 12:39:58 +01:00
Francisco Paisana ea5ba93f25 changed file names 2020-05-12 21:04:57 +01:00
Francisco Paisana d43448e8a1 created security cfg handling class for rrc ue and refactor bearer_list handling 2020-05-12 17:28:11 +01:00
Francisco Paisana 09cafaa4bb update ded_info_nas_list handling 2020-05-12 14:17:57 +01:00
Francisco Paisana 0515229240 perform mac bearer addiction via the bearer handler class 2020-05-12 14:17:57 +01:00
Francisco Paisana 6bcb5910c9 usage of new bearer list cfg class for srb1/srb2 setup 2020-05-12 14:17:57 +01:00
Francisco Paisana ca0db7fffe created generic methods to apply toaddmodlist and removelists. 2020-05-12 14:17:57 +01:00
Francisco Paisana c65c081b51 created separate files to handle rrc bearers 2020-05-12 14:17:57 +01:00
Francisco Paisana 71520d681a changes in pucch res allocation api to allow replacing p/scells 2020-05-11 12:44:08 +01:00
faluco 7ff251f112 - Fixed warnings caught by Clang 9.0.0 2020-05-07 10:10:24 +02:00
Francisco Paisana aab989022d avoid forward declarations 2020-05-05 17:33:03 +01:00
Francisco Paisana 08e1f01c72 allocation of the sr/cqi/pucch_cs resources takes place at a frequency basis now 2020-05-05 17:33:03 +01:00
Francisco Paisana ee994468f7 separate sr and pucch_cs allocation from rrc class 2020-05-05 17:33:03 +01:00
Francisco Paisana b16c7c1cfa created separate cqi res allocation types 2020-05-05 17:33:03 +01:00
Francisco Paisana 4b525127c9 created separate cell ctxt common list 2020-05-05 17:33:03 +01:00
Francisco Paisana 500a7f6357 created new separate ue class in sched tester to handle acks and harq tests 2020-05-05 14:35:40 +01:00
Pedro Alvarez 2ea78c8feb Added configuration options for stack logging. 2020-05-05 14:34:47 +01:00
Francisco Paisana 442ce0d7b0 fix cqi allocated check in rrc::ue 2020-04-30 18:34:25 +01:00
Francisco Paisana 5ef6031b44 added ability to use single-carrier if we are unable to allocate resources for the scells 2020-04-30 18:34:25 +01:00
Francisco Paisana 439193e4b0 added code to handle fail to alloc ue cqi and sr 2020-04-30 13:19:11 +01:00
Ismael Gomez 485771749e Allocate Scell resources when creating it rather than at UE creation 2020-04-29 10:11:43 +01:00
Ismael Gomez c0054140e9 Configure properly PUCCH CS mode for CA in ConnectionReconfiguration. Allocate n_pucch_cs resource and cqi/sr at rrc::ue constructor 2020-04-29 10:11:43 +01:00
Francisco Paisana b8e6ba02e4 remove warnings related to unused vars and fwd declarations with trivial dtors 2020-04-27 22:19:08 +01:00
Francisco Paisana df06443470 use c++ variadic template instead of variadic function 2020-04-27 22:19:08 +01:00
Francisco Paisana 367a190829 created dl-sch lcid type 2020-04-24 11:55:53 +01:00
Francisco Paisana 0526ae8ab1 updated rrc mobility parsing. added some utility methods 2020-04-22 12:57:11 +01:00
Francisco Paisana 20f6655c6b use common method to build mac pdu. allow CE allocations in dci format2/2a 2020-04-22 11:34:08 +01:00
Francisco Paisana 64557740fc use mac_buffer_state interface to schedule CEs in scheduler 2020-04-22 11:34:08 +01:00
Francisco Paisana ec94819f08 changed mechanism for conres ce scheduling to be controlled by rrc 2020-04-22 11:34:08 +01:00
Francisco Paisana d716d8bf7e use mini state machine for ConRes CE scheduling instead of relying that there is data in the DL buffer 2020-04-22 11:34:08 +01:00
Francisco Paisana d183d64409 added allocate_rnti method to mac. Useful both during PRACH and handover UE resource allocation 2020-04-22 11:34:08 +01:00
Francisco Paisana 6ddedd5972 moved pdu to common mac folder 2020-04-22 10:06:08 +01:00
Pedro Alvarez b176eef8e7 Using a single map to store erab_info messages. 2020-04-13 20:45:27 +02:00
Pedro Alvarez cc2b474754 Starting to add array of erab_info messages. 2020-04-13 20:45:27 +02:00
Pedro Alvarez f872e6ec39 Marking nas_pending a vector to support multiple erab setup on sending RRC reconf. 2020-04-13 20:45:27 +02:00
Francisco Paisana c09f76ed6c unified stack task defer method 2020-04-10 22:30:59 +01:00
Xavier Arteaga 5b7493cab5 Added 256QAM modulation tables to scheduler 2020-04-10 17:48:53 +02:00
Xavier Arteaga 8b265883e4 SRSENB: UL TA measurement waits for a start order before start measuring 2020-04-10 15:57:41 +02:00
Andre Puschmann b994255b35 enb: fix handling of GTPU and S1AP init return values
if the eNB stack startup fails, for example due to binding
the wrong GTPU socket or similar issues, the eNB should stop
and log a message. Previously the return values for
S1AP and GTPU init were not even evaluated.
2020-04-10 14:58:36 +02:00
Francisco Paisana c661025cda fix log tti, and print a warning when the ul_harq tti does not match existing ones 2020-04-01 15:02:21 +01:00
Francisco Paisana 30ae2226c1 common interface for stack multiqueue tasks, background tasks and timers 2020-03-31 13:42:06 +01:00
Francisco Paisana 344eaf49ec use logmap in the whole enb and ue 2020-03-25 15:50:30 +00:00
Francisco Paisana 1839b9a6e5 cleaned up paging code to avoid extra processing steps in worker threads 2020-03-24 17:48:29 +00:00
Francisco Paisana 9c028ab723 removed user_mutex from srsenb::rrc. All that needed to happen was the prach_worker calling add_user from stack thread (done in an earlier PR), and the get_metrics run in the stack thread. I achieved the latter with an extra metrics queue 2020-03-24 17:48:29 +00:00
Ismael Gomez 7a7385d0e5 Support multiple carriers for common buffers (RAR/BCCH/PCCH) 2020-03-24 16:47:33 +01:00
Francisco Paisana a2866f661b made the number of ue payload allocations proportional to number of active carriers. Made mac::ue_db use unique_ptrs 2020-03-23 14:49:17 +00:00
Francisco Paisana 8772d8f85c use byte buffer pool for the ue tx_payload_buffer allocation. This halves the mac::ue object creation time 2020-03-23 14:49:17 +00:00
Francisco Paisana 82cb6baef0 now the whole ue and enb mac uses the logmap 2020-03-20 11:32:03 +00:00
Ismael Gomez 5846e64a4d
Deallocate all CQI resources when deallocating users (#1097) 2020-03-20 12:24:46 +01:00
Andre Puschmann 76f1b87b69 fix uninit var in s1ap 2020-03-19 10:33:15 +01:00
Francisco Paisana 807d177b47 fix hanging issue, and simplified the handling of minRBG for different CFIs 2020-03-17 22:06:37 +00:00
Francisco Paisana ede09cb9b2 added dynamic CFI capability to the eNB scheduler 2020-03-17 22:06:37 +00:00
Xavier Arteaga ada8772f57 Initial srenb TA compensation 2020-03-17 17:21:43 +01:00
Ismael Gomez cf4f4508ce Normalize throughput in CSV/stdout metrics with respect to number of TTIs 2020-03-16 22:58:09 +01:00
Ismael Gomez 858165f177
Allocate a different PDU buffer for each carrier in MAC eNodeB (#1069) 2020-03-16 13:35:03 +01:00
Ismael Gomez 73447972d8
Fix issue with simultaneous CQI and ACK/NACK transmission in CA (#1067)
* Fix memory corruption when phy calling mac scheduler and not yet initiated

* Do not drop CQI if collision with ACK/NACK and PUSCH

* Allocate CQI resources for SCell properly

* Use UE_PCELL_CC_IDX macro

* Protect ul_sched from being called if not yet started
2020-03-16 13:10:21 +01:00
Xavier Arteaga e832769ae6 Updated copyright 2020-03-16 11:26:06 +01:00
Francisco Paisana 5330249625 created tti_point type and unit test. Added also the tti_point to the scheduler harqs, and rrc procedure 2020-03-13 19:20:40 +00:00
Francisco Paisana e824cbd251 fixes in the mac log and cell parsing 2020-03-13 18:45:38 +01:00
Francisco Paisana 567790c1a2 Renamed struct to store cell context in rrc. Moved sib buffers to this struct. Created helper methods for lookup 2020-03-13 11:46:12 +00:00
Francisco Paisana 349aed5e0d use sib configuration to set SCellToAddModList 2020-03-13 11:46:12 +00:00
Francisco Paisana 4217dba7e0 fix msg3 delayed allocation and update test 2020-03-13 08:30:42 +01:00
Andre Puschmann ab210c5f3c tiny cosmetic changes to the error messages printing 0x and clear cc_idx use 2020-03-12 12:22:41 +01:00
Andre Puschmann b7aad27d86 move packing of SCell list into extra method and add fill PHY config on the spot
previously we've packed the RRCReconfig with SCellToAddMod list and have then
parsed the message again to pack the PHY config dedicated for the new SCell carrier. This
is now done in one step.
2020-03-12 12:22:41 +01:00
Francisco Paisana d18b476e37 use utility macro for printing function name 2020-03-12 11:11:20 +00:00
Francisco Paisana 9b4a0baa87 activate scells in the phy 2020-03-11 21:56:33 +01:00
Francisco Paisana 7548402632 change scell activation interface to use arrays. Added a method to the scheduler to get the current set of activated carriers 2020-03-11 21:56:33 +01:00
Xavier Arteaga 76408b195e Rename TX_DELAY and FDD_HARQ_DELAY_MS 2020-03-11 21:16:36 +01:00
Andre Puschmann a8acd235f6 extend eNB MAC to support multiple CC per UE
- add tx/rx softbuffers for each CC that a UE might have
- make sure to call assign correct buffers when iterating
  over the CC for UL/DL grant assignment
2020-03-11 10:16:23 +01:00
Pedro Alvarez 96c82b3fc6 Moved PDCP configs to pdcp_config.h. Added `as_security_cfg_t` structure to hold access stratum keys.
Refactored PDCP, RRC and USIM accordingly.
2020-03-11 09:00:38 +00:00
Francisco Paisana a744729007 use range of rbgs 2020-03-10 22:06:07 +00:00
Francisco Paisana 46579da1ff use signed integer to express the error 2020-03-10 22:06:07 +00:00
Francisco Paisana bcbb08ebae use initial_dl_cqi for first DL tx. 2020-03-10 22:06:07 +00:00
Francisco Paisana 3b937348a2 refactored some sched util methods 2020-03-10 22:06:07 +00:00
Francisco Paisana fad897cb35 DL scheduler metric now takes into account the min and max of RBGs possible. This is to forbid segmentation of SRB0 allocations 2020-03-10 22:06:07 +00:00
Francisco Paisana 6317750de2 fix computation of ranged of allowed sched dl bytes 2020-03-10 22:06:07 +00:00
Francisco Paisana 414259e83b fix allocation expected alloc bytes (min and max) 2020-03-10 22:06:07 +00:00
Andre Puschmann f2e1bfa699 refactor naming for s/p/cell structs and {enb,ue}_cc_idx 2020-03-10 15:01:00 +01:00
Francisco Paisana e62972d38e fix fdd delays in scheduler 2020-03-10 14:17:49 +01:00
Pedro Alvarez 08a4ce0970 Added the ability to save S1AP pcaps at the eNB. 2020-03-09 17:35:10 +00:00
Andre Puschmann 2edecea33e fix SIB transmission for CA
Avoid double buffering of SIBs in MAC as this would require one buffer for each CC.
Instead, use byte_buffer managed by RRC that contains packed SIBs to avoid
double memcpy for each SIB tx. Only use MAC provided buffer in error case.

Also avoid MAC calling RLC for each SIB and call RRC directly.
2020-03-09 14:18:09 +01:00
Andre Puschmann 120ad76c63 refactor cell param handling and fix SIB transmissions
- move cell specific eNB params to cell list in rr.conf
- make sure DL EARFCN and DL freq can be used to manually overwrite a single cell config
- fix SIB packing and transmission for multi cell configs
- introduce cell list to MAC
- adapt default enb.conf.example and rr.conf.example
2020-03-06 16:20:44 +01:00
Xavier Arteaga da701cd82b SRSENB: Added PUSCH TA and EVM measurement. Some more PHY cleanup. 2020-03-06 13:58:49 +01:00
Pedro Alvarez bd3598f774 Moved srsEPC to the new S1AP library. Deleted liblte_s1ap.cc and liblte_s1ap.h. 2020-03-06 11:57:07 +00:00
Francisco Paisana ec1f1cc677 remove const_casts from scheduler. Fix ODR issue 2020-03-05 20:23:07 +00:00
Francisco Paisana e9a599857a created a header for all common structs and helper functions 2020-03-05 20:23:07 +00:00
Francisco Paisana 02ccb8b32b fix wrong calculation of sched tx and rx delays 2020-03-05 20:23:07 +00:00
Andre Puschmann 664170fec6 pcap: add CC index when writing PCAP 2020-03-05 20:46:14 +01:00
Francisco Paisana 43e67b8536 created a harq entity that handles all harq procs. This entity accepts as arg the number of harq procs. 2020-03-05 17:51:33 +00:00
Francisco Paisana 1c041b2c1d created harq entity class 2020-03-05 17:51:33 +00:00
Francisco Paisana 7e840bde86 fix tb idx assignment in scheduler mac sdu alloc 2020-03-05 12:18:05 +00:00
Francisco Paisana d1356568e0 separated sf sched result from sf_sched class. The interface became way simpler. No need for finish_tti() method, sf_sched::new_tti() is called automatically when we access the sf_sched. 2020-03-05 00:04:21 +00:00
Francisco Paisana bb38fa7119 fixed tti resetting after tti end 2020-03-05 00:04:21 +00:00
Francisco Paisana 47b05118ad simplified msg3 allocation. Now we can allocate resources ahead of time (e.g. msg3 is 2 ttis ahead) using the sf_sched interface. It's guaranteed that the given allocations wont be erased when the respective tti starts 2020-03-05 00:04:21 +00:00
Francisco Paisana 8f7890c60a store mask results in separate variables for testing, and reset sf_sched state at the end of the tti 2020-03-05 00:04:21 +00:00
Pedro Alvarez afc209711c Fix jump depending on uninitialized variable in srsenb::sched_ue::set_bearer_cfg_unlocked 2020-03-04 22:03:17 +01:00
Francisco Paisana b37d9b9930 fixed msg4 setting in sched tester 2020-03-03 21:26:17 +00:00
Francisco Paisana 3cc94c3694 simplified mutexing of the scheduler. One single mutex for everything, and removed rwlock 2020-03-03 21:26:17 +00:00
Francisco Paisana 7210c35c6c checked all methods of srsenb::pdcp to see if they are called by different threads. Since it is all single-threaded, I removed the locks 2020-03-03 21:03:37 +00:00
Francisco Paisana fed06138b9 moved rach_detected to stack thread. Created a more friendly interface to enqueue tasks in stack 2020-03-03 21:03:21 +00:00
Andre Puschmann a8bbe551ac move thread class into srslte namespace to avoid ambiguity between std::thread 2020-03-03 16:22:04 +01:00
Francisco Paisana ad9e126299 test for different enb_cc_idxs as pcell. Bug fixes 2020-03-02 16:33:31 +00:00
Francisco Paisana 0f3ef11f8b now the scheduler only activates a scell after receiving a valid CQI for the SCell 2020-03-02 16:33:31 +00:00
Xavier Arteaga 4c61ffd391 SRSENB: set UE common PHY configuration in RRC::UE constructor 2020-03-02 12:19:09 +01:00
Xavier Arteaga b45223c880 Fix minor MAC Clang warnings 2020-03-02 12:19:09 +01:00
Francisco Paisana ac52208409 removed most of clang-tidy warnings, introduced logmap in asn1, fixed info object naming in s1ap and ngap for successful and unsuccessful outcomes 2020-02-28 18:03:29 +00:00
Francisco Paisana e859d622c7 added logref class to forbid logmap pointer invalidation. Created a test for the logref, and introduced it in the scheduler, rrc and nas 2020-02-28 11:33:26 +00:00
Francisco Paisana 052892916e fix mme/enb id assignment. Also, now using the macro for invalid rnti and a boolean flag for the uninitialized mme s1ap id 2020-02-26 15:17:45 +00:00
Francisco Paisana 2f57db5352 changed invalid rnti to 0 2020-02-26 15:17:45 +00:00
Francisco Paisana 7557ef45c8 changed the s1ap to allow the insertion of users without rnti 2020-02-26 15:17:45 +00:00
Francisco Paisana d831522692 addition of SCell Activation CE Cmd to scheduler and MAC 2020-02-14 21:49:01 +00:00
Francisco Paisana 838053e8f2 added SCell Activation CE to scheduler. Handling this CE in the MAC is still missing 2020-02-14 21:49:01 +00:00
Xavier Arteaga 385102fa2d SRSENB: minor format, renaming and interface changes 2020-02-13 10:29:00 +01:00
Xavier Arteaga bf4ecc8064 Fix srsenb PHY and unit/component tests 2020-02-13 10:29:00 +01:00
Xavier Arteaga 231431f569 SRSENB: enabled CA PUCCH decode in eNb 2020-02-13 10:29:00 +01:00
Xavier Arteaga 35f4e5d69a Initial PUCCH 1B with channel selection 2020-02-13 10:29:00 +01:00
Francisco Paisana c9ac42f11d renamed rlc pdu / mac sdu allocate functions, and added some comments describing what these functions do 2020-02-10 16:55:18 +00:00
Francisco Paisana 87038375d5 fixed the building of MAC SDUs in the scheduler. Now, we ensure there is always space for the MAC subheader and RLC header. The MAC subheader is correctly discounted from the remaining bytes in a TB. 2020-02-10 16:55:18 +00:00
Francisco Paisana c8fc0d91b3 changed the supported cc list to a vector of structs 2020-02-07 15:06:46 +00:00
Francisco Paisana 42b15c7bed use common ue_cfg interface to set the ue antenna info 2020-02-07 15:06:46 +00:00
Francisco Paisana 5f557700f2 changed the sched::ue_cfg(...) function to allow diff configurations. The RRC now activates all carriers after rrc reconf complete 2020-02-07 15:06:46 +00:00
Francisco Paisana b66bc3a6b0 create a sched_interface struct for antenna info dedicated. This way we remove the asn1 as a dependency in the scheduler 2020-02-07 15:06:46 +00:00
Francisco Paisana 88a22e7dbf support cc cfg from rrc 2020-02-07 15:06:46 +00:00
Francisco Paisana 095d0cda5a fix regs leak 2020-02-07 15:06:46 +00:00
Francisco Paisana e86862611c update the scheduler interfaces to accommodate the configuration of multiple carriers 2020-02-07 15:06:46 +00:00
Francisco Paisana 2dc31ea440 added interface to configure multiple cells from the RRC 2020-02-07 15:06:46 +00:00
Andre Puschmann d3cb2eac83 add RLC suspend/resume to eNB interface 2020-02-03 16:26:15 +01:00
Andre Puschmann 369592544c store last RRC Connection Reconfig with transaction identifier 2020-02-03 16:26:15 +01:00
Francisco Paisana c537d38650 separated sched tests based on output into a separate file. Added scheduler random tester to unit tests 2020-01-29 17:15:35 +00:00
Francisco Paisana a9b8c3fd55 fix msg3 prb limit for prb==6. It has to collide with PUCCH 2020-01-28 17:15:23 +00:00
Francisco Paisana 39fff9ed68 fix potential bug with grouping of RARs with same RA-RNTI but different prach_tti. The scheduler might not clear the old tti on time before the grouping. 2020-01-28 17:15:23 +00:00
Francisco Paisana de195e9521 changed the RAR schedule to support the allocation of nof_grants lower than the current nof_grants in the queue with same ra-rnti 2020-01-28 17:15:23 +00:00
Francisco Paisana a74dcd947f changed rar/msg3 scheduling to accommodate multiple rars per TTI 2020-01-28 17:15:23 +00:00
Francisco Paisana dc782e514b change the naming from tti --> sf for scheduling operations specific to a subframe 2020-01-28 17:15:23 +00:00
Xavier Arteaga a6105a3020 SRSENB: made possible custom UL/DL frequencies for each carrier 2020-01-28 11:22:50 +01:00
Xavier Arteaga b08c1f003e SRSENB: enabled multiple cells from rr.cfg 2020-01-28 11:22:50 +01:00
Francisco Paisana 5468189cd9 fix some variables' naming (e.g. x2_ap -> x2ap, e_rab -> erab) 2020-01-21 00:58:19 +00:00
Francisco Paisana 2a83eee0ee fix security key setup 2020-01-21 00:58:19 +00:00
Francisco Paisana ee24b59924 converted s1ap to new s1ap asn1 lib. Cleaned up bitstring packing/unpacking and bitstring types 2020-01-21 00:58:19 +00:00
Francisco Paisana 25bb36cdc3 converted ho preparation to new s1ap asn1 lib. Extended s1ap test 2020-01-21 00:58:19 +00:00
Francisco Paisana b6c53d786b updated s1ap rrc interface with new asn1 lib types 2020-01-21 00:58:19 +00:00
Andre Puschmann fef6893ce4 make user activity handling independent of system time
this commit removes the getsystime() call from the activity handling.
it uses a single timer per UE to handle its activity.

three different timer values exist. one for the Msg3 reception. This
is like before and is quite low to quickly remove fake UEs from the
RRC. The second is a generic value (set to 1s for now) that covers
the entire UE configuration phase where multiple messages are sent
back and forth until the UE is fully set up and the default
bearer runs. From there on, the UE inactivity timer is used which
may be much bigger than 1s.
2020-01-14 20:52:09 +01:00
Andre Puschmann 476f970ee1 replace FIXME with TODO 2019-12-18 11:25:56 +01:00
Pedro Alvarez c5979f59eb Clang format UE, eNB and lib (#850)
* Clang-formated UE, eNB and lib.
* Fixed compiling errors from clang-format.
* Fix linking issues introduced by clang-format
* Fix poor formating in initializing arrays of arrays.
* Fix mistake in conflict resolution on rm_turbo.c
* Re-apply clang format to gtpc_ies.h
2019-12-16 16:04:22 +01:00
Andre Puschmann 8a064cd3a6 pass msg_type from caller when logging RRC message
before the type of some message wasn't displayed correctly,
like SIBs, for example because the logger didn't
know the filed to retrieve the type string
2019-12-16 12:49:07 +01:00
Francisco Paisana d59016ae68 use of srslte::log* type for ASN1 logging. Initialization of the asn1 and rrc_asn1 loggers done now in both the ue and enb 2019-12-12 15:45:24 +00:00
Francisco Paisana 6b4488d5c1 added sending of enb status transfer from SeNB 2019-12-11 17:41:49 +00:00
Francisco Paisana a18a7e307e moved all the parsing of the libconfig files to separate functions that can be called from individual tests. Created several stack layer dummy classes for testing. Extended the rrc_mobility test to check correctness of RRC HOPreparation struct 2019-12-06 10:21:41 +00:00
Francisco Paisana b792a3158c removed magic numbers for s1ap timers, and handled the error in the s1 ho cmd 2019-12-05 17:36:15 +00:00
Francisco Paisana 524c80a804 added handling of ho command 2019-12-05 17:36:15 +00:00
Pedro Alvarez e1cdd51eba Clang-formated before pull request 2019-12-04 18:21:14 +01:00