From 4d014e7cebdaab592576eaf8fd4ea55df0dfa630 Mon Sep 17 00:00:00 2001 From: Francisco Paisana Date: Tue, 29 Jun 2021 10:14:53 +0100 Subject: [PATCH] s1ap,feature: make the ts1 reloc timers configurable via the enb.conf --- lib/include/srsran/interfaces/enb_s1ap_interfaces.h | 2 ++ lib/include/srsran/interfaces/sched_interface.h | 2 +- srsenb/enb.conf.example | 4 ++++ srsenb/hdr/stack/s1ap/s1ap.h | 3 --- srsenb/src/main.cc | 2 ++ srsenb/src/stack/s1ap/s1ap.cc | 4 ++-- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/include/srsran/interfaces/enb_s1ap_interfaces.h b/lib/include/srsran/interfaces/enb_s1ap_interfaces.h index 233857470..5e6b11859 100644 --- a/lib/include/srsran/interfaces/enb_s1ap_interfaces.h +++ b/lib/include/srsran/interfaces/enb_s1ap_interfaces.h @@ -30,6 +30,8 @@ struct s1ap_args_t { std::string s1c_bind_addr; uint16_t s1c_bind_port; std::string enb_name; + uint32_t ts1_reloc_prep_timeout; + uint32_t ts1_reloc_overall_timeout; }; // S1AP interface for RRC diff --git a/lib/include/srsran/interfaces/sched_interface.h b/lib/include/srsran/interfaces/sched_interface.h index e9549b244..ec9d3a32d 100644 --- a/lib/include/srsran/interfaces/sched_interface.h +++ b/lib/include/srsran/interfaces/sched_interface.h @@ -55,7 +55,7 @@ public: uint32_t max_nof_ctrl_symbols = 3; int min_aggr_level = 0; int max_aggr_level = 3; - bool adaptive_aggr_level = true; + bool adaptive_aggr_level = false; bool pucch_mux_enabled = false; float target_bler = 0.05; float max_delta_dl_cqi = 5; diff --git a/srsenb/enb.conf.example b/srsenb/enb.conf.example index 4eacc23e1..ceed0689a 100644 --- a/srsenb/enb.conf.example +++ b/srsenb/enb.conf.example @@ -333,6 +333,8 @@ enable = false # eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1). # eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0). # gtpu_tunnel_timeout: Time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU (0 for no timer). +#ts1_reloc_prep_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds +#ts1_reloc_overall_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds # ##################################################################### [expert] @@ -361,3 +363,5 @@ enable = false #eia_pref_list = EIA2, EIA1, EIA0 #gtpu_tunnel_timeout = 0 #extended_cp = false +#ts1_reloc_prep_timeout = 10000 +#ts1_reloc_overall_timeout = 10000 diff --git a/srsenb/hdr/stack/s1ap/s1ap.h b/srsenb/hdr/stack/s1ap/s1ap.h index 57b330f4e..0be19f3b5 100644 --- a/srsenb/hdr/stack/s1ap/s1ap.h +++ b/srsenb/hdr/stack/s1ap/s1ap.h @@ -55,9 +55,6 @@ public: using erab_id_list = srsran::bounded_vector; using erab_item_list = srsran::bounded_vector; - static const uint32_t ts1_reloc_prep_timeout_ms = 10000; - static const uint32_t ts1_reloc_overall_timeout_ms = 10000; - s1ap(srsran::task_sched_handle task_sched_, srslog::basic_logger& logger, srsran::socket_manager_itf* rx_socket_handler); diff --git a/srsenb/src/main.cc b/srsenb/src/main.cc index 3b264fe74..a3f31fb26 100644 --- a/srsenb/src/main.cc +++ b/srsenb/src/main.cc @@ -234,6 +234,8 @@ void parse_args(all_args_t* args, int argc, char* argv[]) ("expert.gtpu_tunnel_timeout", bpo::value(&args->stack.gtpu_indirect_tunnel_timeout_msec)->default_value(0), "Maximum time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU. (0 for infinity)") ("expert.rlf_release_timer_ms", bpo::value(&args->general.rlf_release_timer_ms)->default_value(4000), "Time taken by eNB to release UE context after it detects an RLF") ("expert.extended_cp", bpo::value(&args->phy.extended_cp)->default_value(false), "Use extended cyclic prefix") + ("expert.ts1_reloc_prep_timeout", bpo::value(&args->stack.s1ap.ts1_reloc_prep_timeout)->default_value(10000), "S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds") + ("expert.ts1_reloc_overall_timeout", bpo::value(&args->stack.s1ap.ts1_reloc_overall_timeout)->default_value(10000), "S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds") // eMBMS section diff --git a/srsenb/src/stack/s1ap/s1ap.cc b/srsenb/src/stack/s1ap/s1ap.cc index 9ad267ea4..e5302c2e2 100644 --- a/srsenb/src/stack/s1ap/s1ap.cc +++ b/srsenb/src/stack/s1ap/s1ap.cc @@ -2006,10 +2006,10 @@ s1ap::ue::ue(s1ap* s1ap_ptr_) : s1ap_ptr(s1ap_ptr_), ho_prep_proc(this), logger( // initialize timers ts1_reloc_prep = s1ap_ptr->task_sched.get_unique_timer(); - ts1_reloc_prep.set(ts1_reloc_prep_timeout_ms, + ts1_reloc_prep.set(s1ap_ptr->args.ts1_reloc_prep_timeout, [this](uint32_t tid) { ho_prep_proc.trigger(ho_prep_proc_t::ts1_reloc_prep_expired{}); }); ts1_reloc_overall = s1ap_ptr->task_sched.get_unique_timer(); - ts1_reloc_overall.set(ts1_reloc_overall_timeout_ms, [this](uint32_t tid) { + ts1_reloc_overall.set(s1ap_ptr->args.ts1_reloc_overall_timeout, [this](uint32_t tid) { //> If the UE Context Release procedure is not initiated towards the eNB before the expiry of the timer // TS1RELOCOverall, the eNB shall request the MME to release the UE context. s1ap_ptr->user_release(ctxt.rnti, asn1::s1ap::cause_radio_network_opts::ts1relocoverall_expiry);