Commit Graph

179 Commits

Author SHA1 Message Date
Xavier Arteaga e3bd92d87c Fix SSB pattern in UE 2021-10-04 10:28:34 +02:00
Xavier Arteaga 8f90ee847a Refactor carrier frequency from PHY and fix OFDM phase compensation 2021-10-04 10:28:34 +02:00
Xavier Arteaga 1aa65bd10c HOTFIX: force DFT wisdom save at exit 2021-10-01 18:06:37 +02:00
Fabian Eckermann 2d0be77660 Add helper functions for abs freq point a. 2021-09-29 16:03:44 +02:00
faluco fa351cd285 Rename functions that contain the unsafe word to nolock.
The term "unsafe" does not clearly state that the function is not locking the shared date and it sounds "dangerous", so use a more explicit term.
2021-09-27 13:26:21 +02:00
faluco 6c91a824e2 Whitelist the TSAN lock order inversion issue in srsenb::mac::rlc_buffer_state. 2021-09-24 14:27:37 +02:00
Xavier Arteaga 0324806d6c Packed NR TDD config in duplex configuration and created test case for FDD 2021-09-21 18:11:16 +02:00
faluco d2f09a8d3c Fix a nasty data race in the ue_bearer_manager class. The underlying std::map member was being accessed concurrently potentially corrupting memory. 2021-09-17 11:34:28 +02:00
Andre Puschmann b127327684 enb,s1ap: print filename when writing S1AP PCAP 2021-09-16 15:25:46 +02:00
David Rupprecht e8a464228d Cleaned string helpers 2021-09-16 15:24:32 +02:00
Andre Puschmann 07019a5bd6 nr: refactor DL/UL frequency deriviation
* add separate DL/UL freq point a in NR carrier struct
* use freqInfoDL/freqInfoUL to get freq point a
* simplify carrier tuning logic
2021-09-13 10:27:16 +02:00
Andre Puschmann d26a7e0350 band_helper: add helper to derive DL/UL freq from abs_freq_point
calculate DL and UL freq in carrier struct based on given values
2021-09-13 10:27:16 +02:00
Andre Puschmann 69619d725a band_helper: add helper to derive UL ARFCN from DL ARFCN 2021-09-13 10:27:16 +02:00
faluco 934802d23c Report the SIB9 home enb name in the enb sector start/sector stop events. 2021-09-07 16:36:56 +02:00
faluco d168536bc4 Add a new program option to control how ASN1 messages get printed into the enb JSON report file. 2021-09-07 16:36:56 +02:00
faluco df6ae7b0e0 - Implement new enb events:
* ho_command
* connection_resume
* rlf_detected
- Rename rlf_report event to "rlf_report".
2021-09-07 16:36:56 +02:00
faluco 8a3586dfbf Include a ASN1 json representation for RRC enb events. 2021-09-07 16:36:56 +02:00
David Rupprecht a9a23214b0 Added more 5G security kdfs
Added new 5G SIM functions

Added const parameters for security functions
2021-09-07 11:06:56 +02:00
David Rupprecht a645d74eaf USIM functions for res star
Added gen_res_star in security.h

Added USIM interfaces for res star

Added RES star test case
2021-09-07 11:06:56 +02:00
David Rupprecht bce6b5cc0f Added kdf common
Use kdf functions in 5G KDF

Moved EPS KDF function to new KDF structure
2021-09-07 11:06:56 +02:00
David Rupprecht 15eaef21e2 Update test f12345 function
Moved XOR functions to lib

Added testcase for KDF

Minor liblte_security updates
2021-09-07 11:06:56 +02:00
Francisco Paisana 227ae97bcb workaround gcc4.8 issue with inability to derive move ctor noexcept specifier 2021-09-03 12:06:17 +02:00
Francisco Paisana f4df55c245 stack lte: separate bearer manager into two classes, one for the ue and one for the enb 2021-09-03 12:06:17 +02:00
Francisco Paisana 2ade4628ca stack lte: create an gtpu-pdcp adapter class that correctly converts lcids to eps bearers and vice-versa 2021-09-02 17:12:04 +02:00
Francisco Paisana 4b2f079581 gtpu: renamed lcid to eps_bearer_id as parte of the refactor of gtpu to use eps_bearer_ids 2021-09-02 17:12:04 +02:00
Andre Puschmann db8b710442 bearer_manager: move to lib folder and extend for multiple users
prepare bearer manager to be used by eNB which requires
to support multiple RNTIs
2021-09-02 17:12:04 +02:00
Francisco Paisana 020bec025e sched: created class common to LTE and NR for ue buffer status management 2021-09-01 20:08:11 +02:00
Francisco Paisana da4b7e4f80 sched,nr: fix sched RAR NR test; update test assert macros 2021-08-26 12:09:11 +02:00
Xavier Arteaga e07263ee26 Added band helper for getting band from ARFCN 2021-08-26 09:34:43 +02:00
Francisco Paisana f518861ebc fix location of support/ folder. Created macros for ASSERT_EQ and ASSERT_NEQ 2021-08-23 16:47:54 +02:00
Francisco Paisana 599fc978a5 improvement of srsran_assert design, with specializations to enable/disable assertions based on compile flags other than ASSERTS_ENABLED. Creation of the support/ folder 2021-08-23 16:47:54 +02:00
Xavier Arteaga 98f29961bc Fix old GCC compilation 2021-08-03 10:46:13 +02:00
Xavier Arteaga 956c4f8266 Added PHY NR test TDD FR1.15-1 pattern 2021-08-03 10:46:13 +02:00
Xavier Arteaga dfa323df6b Added 20MHz default configuration 2021-08-03 10:46:13 +02:00
Xavier Arteaga 1b50758bd5 Initial NZP-CSI default configuration from TS38.101-4 2021-08-03 10:46:13 +02:00
Andre Puschmann 3b5344b0f7 thread_pool: add optional ID to thread pool
this allows to prepend an ID to each thread pool to
better differentiate workers from different pools
2021-08-02 15:18:47 +02:00
Andre Puschmann 4915dc9642 test_pcap: add function description 2021-07-28 10:26:09 +02:00
Francisco Paisana 12e33483e1 sched,nr: add slot_point to sched nr 2021-07-26 11:52:07 +02:00
Francisco Paisana a0a1af9d0f nr: slot value that handles wrapping around 2021-07-26 11:52:07 +02:00
Andre Puschmann 60a795acc0 asn1,rrc_nr,test: extend RRC reconf test, add PCAP output
test now can write the NR reconfig into a PCAP for easy
debugging with Wireshark

patch also adds a new test helper to write a RRC PDU
into a PCAP file (helper packs PDCP and RLC AM first)
2021-07-19 12:53:09 +02:00
Andre Puschmann a142192d4e test_common: handle return value from make_byte_buffer() 2021-07-16 12:35:12 +02:00
Andre Puschmann b5b2f8190e signal_handler: use std::atomic for running var 2021-07-14 23:03:51 +02:00
Andre Puschmann 6c82d63aa6 remove legacy PNF/VNF code
the code hasn't been maintained for a while an likely needs to be
adapted for a real-world scenarios.

in order to avoid having to maintain two MAC/PHY interfaces we
remove the code from now.
2021-07-12 19:24:02 +02:00
Xavier Arteaga ecc0b92142 Integrated PUSCH decoder in gNb 2021-07-08 16:47:07 +02:00
Xavier Arteaga f07d925be1 Initial NR PHY test scheduling for PUSCH 2021-07-08 16:47:07 +02:00
Andre Puschmann c9e87b2cf3 config_file: print message when config file couldn't be read
this prints an message on stdout so config files are not
simply skipped and the default one is read instead.
2021-07-06 21:57:44 +02:00
Xavier Arteaga cf496e75eb Fix default PHY NR configuration 2021-07-05 17:51:27 +02:00
Xavier Arteaga 2fbd172888 Initial PHY NR configuration generator 2021-07-05 17:51:27 +02:00
Xavier Arteaga 320aabec13 Initial PHY NR configuration 2021-07-05 17:51:27 +02:00
Xavier Arteaga e764a26136 Integrated PUCCH decoding in gNb 2021-07-05 17:51:27 +02:00
Xavier Arteaga e3afd945bc Refactored NR HARQ ACK feedback 2021-07-05 17:51:27 +02:00
Xavier Arteaga eecaccb541 Added NR PHY helpers 2021-07-05 17:51:27 +02:00
David Rupprecht f90e359208 Moved cp to test common 2021-07-02 17:23:06 +02:00
Andre Puschmann bbcaa49429 network_utils: fix TSAN detected race 2021-07-02 17:22:49 +02:00
Andre Puschmann a9ad408f51 task_scheduler: use block_queue for internal tasks
TSAN detected wrong use of the old deque-based internal queue. To avoid
unwanted/undetected mis-use the patch uses the thread-safe block_queue
data structure instead.
2021-07-02 17:22:49 +02:00
Andre Puschmann 626f24c9f9 block_queue: use class mutex to protect size() getter
detected with TSAN
2021-07-02 17:22:49 +02:00
Xavier Arteaga aef3e5a40a More NR PHY test and GNB PHY development 2021-06-28 00:27:36 +02:00
Xavier Arteaga 567c7c9c77 Create TTI semaphpore default constructor 2021-06-28 00:27:36 +02:00
Pedro Alvarez aae266e848 Added configuration option for S1AP SCTP bind port 2021-06-22 11:11:54 +01:00
David Rupprecht 85d7a851fb Added 5G NAS PCAP support 2021-06-22 09:02:07 +02:00
Xavier Arteaga 939dd1b977 Change struct sync_raster_t to class 2021-06-08 14:55:12 +02:00
Xavier Arteaga 9621cf57c2 Implemented NR SS raster object 2021-06-08 14:55:12 +02:00
Andre Puschmann c0be8187c8 rlc interface: convert entire read_pdu() interface to return uint32_t
we had it returning int but had a bug in using the return value properly,
i.e. handling when -1 was returned in RLC TM.

Thinking about it more, it doesn't make sense to have a negative return
value here anyway. Either the RLC can return a PDU or not. If it can't the
returned lenght is zero.
2021-06-04 13:23:54 +02:00
Francisco f7aef3ffc1 sched,bugfix: fix nof_retx update when UL HARQs are resumed 2021-06-02 20:21:32 +01:00
Andre Puschmann 1ef3cb7e5d threads: fix race in stopping periodic thread 2021-06-01 22:44:12 +02:00
Andre Puschmann 312b5a241c mac_pcap_base: fix race detected with TSAN 2021-06-01 22:44:12 +02:00
Francisco f36f5271d3 timers,feature: make timers thread-safe by using atomic to store timers state. 2021-05-31 23:26:36 +01:00
Andre Puschmann bb6a5ebe80 tsan: add TSAN options file to set some default flags and exclude some libs from checks 2021-05-27 17:26:39 +02:00
Andre Puschmann d9a5d3f95a pcap_base: increase PDU queue length
some systems with slower HDD seem to have issues
writing the PDUs to disk. increasing length to see if that helps.
2021-05-27 13:29:00 +02:00
Andre Puschmann c1ad867824 epoll_helper: use std::atomic to protect exit called from different thread 2021-05-26 14:25:38 +02:00
Andre Puschmann f1e6a975de thread_pool: fix concurrent access of state variable
the thread workers need access to their current state to exit properly
when they are set to state STOP. However, since the state is kept in
a std::vector for all workers, it seems more appropiate to add a per-thread
running variable rather then mutexing the entire vector.
2021-05-26 14:25:38 +02:00
Francisco f2a56c9139 simplification of multiqueue design.
- the consumer does multi-staged waiting:
  1. spins first across all queues in a RR fashion
  2. each queue access is done with a try_lock.
  3. if the try_lock fails, it increases the number of spins needed
  2. if no queue had data, the consumer sleeps for 100 usec.
- no differentiation between queues, in terms of notification features
2021-05-24 17:24:12 +02:00
Francisco 60a8ee0af9 multiqueue optimization - use condition_var wait_for() method, use queue try_lock in the consumer side 2021-05-24 17:24:12 +02:00
Francisco 2d6a878826 change interface to create multiqueue queues 2021-05-24 17:24:12 +02:00
Francisco f705735093 optimization - only allow some multiqueue queues to notify the multiqueue consumer of the arrival of tasks 2021-05-24 17:24:12 +02:00
Xavier Arteaga c8cb128317 Declare band helper methods as constant 2021-05-18 18:41:03 +02:00
Andre Puschmann 167200f5cd rrc_bearer_cfg: replace fixed E-RAB to DRB mapping
also make sure we don't assign LCIDs beyond the possible
number.

possible fix for https://github.com/srsran/srsRAN/issues/658

Co-authored-by: herlesupreeth <herlesupreeth@gmail.com>
Co-authored-by: Francisco <francisco.paisana@softwareradiosystems.com>
2021-05-17 15:17:27 +02:00
Francisco 84ad6dd8ee Integrated new sched_dl_cqi class in sched_ue_cell
- extend sched_dl_cqi interface to allow getting tti when cqi was last updated
- extend sched_dl_cqi to quickly get average cqi across the whole bandwidth
2021-05-14 19:58:03 +01:00
Francisco a841b7580e fix deadlock caused by non-notification of multiqueue consumer side 2021-05-13 16:48:17 +01:00
Xavier Arteaga 7450232b3e Added more NR band related helpers 2021-05-13 07:55:46 +02:00
Francisco 996d8ef74d multiqueue bugfix for non-blocking pushes when queue is full 2021-05-11 21:27:08 +02:00
Francisco 99abae9e6a fix multiqueue producer to consumer notification to avoid deadlocks 2021-05-10 15:27:21 +01:00
Francisco 0d800eb8f6 stack, multiqueue - bugfix for multiqueue destruction, and addition of unit test 2021-05-10 15:27:21 +01:00
Francisco d947e259c9 stack optimization - optimization of the multiqueue
avoid notifying the consumer side of the multiqueue of a new pushed object, if the
multiqueue already knows that the queue is not empty.
2021-05-10 15:27:21 +01:00
Francisco d574afcd33 cleanup of multiqueue unused methods, and made queue_handle move semantics correct 2021-05-10 15:27:21 +01:00
Francisco ef9d1b8c13 stack optimization - reduction of contention in multiqueue class
With the new design, each queue created in the multiqueue object has its own mutex.
Pushing tasks to separate queues will, therefore, not cause contention.
There will be, however, still contention between the popping thread and the pushing threads.
2021-05-10 15:27:21 +01:00
Andre Puschmann bbea3dd6a1 byte_buffer: fix compilation when buffer pool log is enabled 2021-05-03 12:42:38 +02:00
David Rupprecht fafa03f7c8 Extended the band helper table 2021-04-27 20:28:36 +02:00
Andre Puschmann f76cd5ef83 backward: fix compile error on aarch64 2021-04-26 09:43:58 +02:00
Andre Puschmann 92d4e6e746 adt/common: remove const from return type
reported by LGTM https://lgtm.com/projects/g/srsLTE/srsLTE/rev/pr-9ae46cae260b6b8137b34b9423bf1477bd6b5c42
2021-04-25 21:03:53 +02:00
Andre Puschmann ff53d2b8b8 all: set of trivial changes reported by LGTM
mainly fixmes, unused/empty code, etc.
2021-04-25 21:03:53 +02:00
Francisco 2b572f5376 fix overwrite of timer timeout when it matches previous time wheel position 2021-04-21 10:02:03 +01:00
Francisco ce47cf5910 fix - re-add log flush to srsran_assert 2021-04-20 16:27:40 +01:00
Francisco 6137e4569b fix srsran_assert definition when asserts are disabled 2021-04-20 14:01:05 +01:00
Francisco 3b78bf3730 bugfix - fix memcheck warnings. move instructions with side effects outside of asserts 2021-04-20 14:01:05 +01:00
David Rupprecht a064e85c54 rename common lte header 2021-04-19 22:23:59 +02:00
David Rupprecht 81ad72b0ff Refactor srb and drb handling 2021-04-19 22:23:59 +02:00
faluco e1752c0878 Replace the queue in thread pool in favour of a static circular buffer to avoid allocations. 2021-04-16 09:29:44 +02:00
Ismael Gomez 635db8dde1 Initialize metrics in hub 2021-04-15 21:32:35 +02:00
Francisco 1f1233782f timers - fix old gcc compilation issue. Changed free list to intrusive list. 2021-04-15 18:46:42 +01:00