From 1677abce8d090b1a5fb7d8f9f89b49c732cc69d8 Mon Sep 17 00:00:00 2001 From: Francisco Date: Thu, 6 May 2021 18:27:41 +0100 Subject: [PATCH] create typedef for circular map of rntis. check return of gtpu ue creation --- srsenb/hdr/common/common_enb.h | 5 +++++ srsenb/hdr/stack/mac/mac.h | 6 +++--- srsenb/hdr/stack/mac/schedulers/sched_time_pf.h | 2 +- srsenb/hdr/stack/upper/gtpu.h | 5 ++--- srsenb/src/stack/upper/gtpu.cc | 6 +++++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/srsenb/hdr/common/common_enb.h b/srsenb/hdr/common/common_enb.h index 4c87f8f39..995bfc664 100644 --- a/srsenb/hdr/common/common_enb.h +++ b/srsenb/hdr/common/common_enb.h @@ -17,6 +17,7 @@ INCLUDES *******************************************************************************/ +#include "srsran/adt/circular_map.h" #include "srsran/common/common_lte.h" #include @@ -48,6 +49,10 @@ constexpr uint32_t drb_to_lcid(lte_drb drb_id) #define SRSENB_MAX_BUFFER_SIZE_BYTES 12756 #define SRSENB_BUFFER_HEADER_OFFSET 1024 +/// Typedef of circular map container which key corresponding to rnti value and that can be used across layers +template +using rnti_map_t = srsran::static_circular_map; + } // namespace srsenb #endif // SRSENB_COMMON_ENB_H diff --git a/srsenb/hdr/stack/mac/mac.h b/srsenb/hdr/stack/mac/mac.h index 5f68f710a..3461e09d8 100644 --- a/srsenb/hdr/stack/mac/mac.h +++ b/srsenb/hdr/stack/mac/mac.h @@ -136,9 +136,9 @@ private: sched_interface::dl_pdu_mch_t mch = {}; /* Map of active UEs */ - srsran::static_circular_map, 64> ue_db; - std::map > ues_to_rem; - uint16_t last_rnti = 70; + rnti_map_t > ue_db; + std::map > ues_to_rem; + uint16_t last_rnti = 70; srsran::static_blocking_queue, 32> ue_pool; ///< Pool of pre-allocated UE objects void prealloc_ue(uint32_t nof_ue); diff --git a/srsenb/hdr/stack/mac/schedulers/sched_time_pf.h b/srsenb/hdr/stack/mac/schedulers/sched_time_pf.h index 40526e655..8bddae0ea 100644 --- a/srsenb/hdr/stack/mac/schedulers/sched_time_pf.h +++ b/srsenb/hdr/stack/mac/schedulers/sched_time_pf.h @@ -64,7 +64,7 @@ private: uint32_t ul_nof_samples = 0; }; - srsran::static_circular_map ue_history_db; + rnti_map_t ue_history_db; struct ue_dl_prio_compare { bool operator()(const ue_ctxt* lhs, const ue_ctxt* rhs) const; diff --git a/srsenb/hdr/stack/upper/gtpu.h b/srsenb/hdr/stack/upper/gtpu.h index e6304fbbf..e1426ba01 100644 --- a/srsenb/hdr/stack/upper/gtpu.h +++ b/srsenb/hdr/stack/upper/gtpu.h @@ -36,7 +36,6 @@ struct gtpu_header_t; namespace srsenb { class pdcp_interface_gtpu; -class stack_interface_gtpu_lte; class gtpu_tunnel_manager { @@ -120,8 +119,8 @@ private: pdcp_interface_gtpu* pdcp = nullptr; srslog::basic_logger& logger; - srsran::static_circular_map ue_teidin_db; - tunnel_list_t tunnels; + rnti_map_t ue_teidin_db; + tunnel_list_t tunnels; }; using gtpu_tunnel_state = gtpu_tunnel_manager::tunnel_state; diff --git a/srsenb/src/stack/upper/gtpu.cc b/srsenb/src/stack/upper/gtpu.cc index 2e9afec35..aec0d9df8 100644 --- a/srsenb/src/stack/upper/gtpu.cc +++ b/srsenb/src/stack/upper/gtpu.cc @@ -91,7 +91,11 @@ const gtpu_tunnel* gtpu_tunnel_manager::add_tunnel(uint16_t rnti, uint32_t lcid, tun->spgw_addr = spgw_addr; if (not ue_teidin_db.contains(rnti)) { - ue_teidin_db.insert(rnti, ue_lcid_tunnel_list()); + auto ret = ue_teidin_db.insert(rnti, ue_lcid_tunnel_list()); + if (ret.is_error()) { + logger.error("Failed to allocate rnti=0x%x", rnti); + return nullptr; + } } auto& ue_tunnels = ue_teidin_db[rnti];