From 38641ac8bb0679305c44a964c9e5179e575f6998 Mon Sep 17 00:00:00 2001 From: jmasterfunk84 <48972964+jmasterfunk84@users.noreply.github.com> Date: Wed, 19 Oct 2022 20:39:21 -0600 Subject: [PATCH] enb: Introduce Configurable S1 Connection Timer --- lib/include/srsran/interfaces/enb_s1ap_interfaces.h | 1 + srsenb/enb.conf.example | 2 ++ srsenb/src/main.cc | 5 +++-- srsenb/src/stack/s1ap/s1ap.cc | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/include/srsran/interfaces/enb_s1ap_interfaces.h b/lib/include/srsran/interfaces/enb_s1ap_interfaces.h index f09486b61..55f493df7 100644 --- a/lib/include/srsran/interfaces/enb_s1ap_interfaces.h +++ b/lib/include/srsran/interfaces/enb_s1ap_interfaces.h @@ -33,6 +33,7 @@ struct s1ap_args_t { uint32_t ts1_reloc_prep_timeout; uint32_t ts1_reloc_overall_timeout; int32_t max_s1_setup_retries; + uint32_t s1_connect_timer; bool sctp_reuse_addr; int32_t sctp_rto_max; int32_t sctp_init_max_attempts; diff --git a/srsenb/enb.conf.example b/srsenb/enb.conf.example index fe830507b..f08c18340 100644 --- a/srsenb/enb.conf.example +++ b/srsenb/enb.conf.example @@ -387,6 +387,7 @@ nr_pdsch_mcs=28 # rlf_release_timer_ms: Time taken by eNB to release UE context after it detects a RLF # rlf_min_ul_snr_estim: SNR threshold in dB below which the enb is notified with RLF ko # s1_setup_max_retries: Maximum amount of retries to setup the S1AP connection. If this value is exceeded, an alarm is written to the log. -1 means infinity. +# s1_connect_timer: Connection Retry Timer for S1 connection (seconds) # rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings ##################################################################### [expert] @@ -423,5 +424,6 @@ nr_pdsch_mcs=28 #rlf_release_timer_ms = 4000 #rlf_min_ul_snr_estim = -2 #s1_setup_max_retries = -1 +#s1_connect_timer = 10 #rx_gain_offset = 62 #mac_prach_bi = 0 diff --git a/srsenb/src/main.cc b/srsenb/src/main.cc index c367521ce..6ed52cb0d 100644 --- a/srsenb/src/main.cc +++ b/srsenb/src/main.cc @@ -259,11 +259,12 @@ void parse_args(all_args_t* args, int argc, char* argv[]) ("expert.ts1_reloc_overall_timeout", bpo::value(&args->stack.s1ap.ts1_reloc_overall_timeout)->default_value(10000), "S1AP TS 36.413 TS1RelocOverall Expiry Timeout value in milliseconds.") ("expert.rlf_min_ul_snr_estim", bpo::value(&args->stack.mac.rlf_min_ul_snr_estim)->default_value(-2), "SNR threshold in dB below which the eNB is notified with rlf ko.") - ("expert.sctp_reuse_addr", bpo::value(&args->stack.s1ap.sctp_reuse_addr)->default_value(false), "Use SO_REUSE_ADDR on S1-C interface.") ("expert.max_s1_setup_retries", bpo::value(&args->stack.s1ap.max_s1_setup_retries)->default_value(-1), "Max S1 setup retries") + ("expert.s1_connect_timer", bpo::value(&args->stack.s1ap.s1_connect_timer)->default_value(10), "Connection Retry Timer for S1 connection (seconds)") + ("expert.sctp_reuse_addr", bpo::value(&args->stack.s1ap.sctp_reuse_addr)->default_value(false), "Use SO_REUSE_ADDR on S1-C interface.") ("expert.sctp_rto_max", bpo::value(&args->stack.s1ap.sctp_rto_max)->default_value(6000), "SCTP maximum RTO.") ("expert.sctp_init_max_attempts", bpo::value(&args->stack.s1ap.sctp_init_max_attempts)->default_value(3), "Maximum SCTP init attempts.") - ("expert.sctp_max_init_timeo)", bpo::value(&args->stack.s1ap.sctp_max_init_timeo)->default_value(5000), "Maximum SCTP init timeout.") + ("expert.sctp_max_init_timeo)", bpo::value(&args->stack.s1ap.sctp_max_init_timeo)->default_value(5000), "Maximum SCTP init timeout.") ("expert.rx_gain_offset", bpo::value(&args->phy.rx_gain_offset)->default_value(62), "RX Gain offset to add to rx_gain to calibrate RSRP readings") ("expert.mac_prach_bi", bpo::value(&args->stack.mac.prach_bi)->default_value(0), "Backoff Indicator to reduce contention in the PRACH channel") diff --git a/srsenb/src/stack/s1ap/s1ap.cc b/srsenb/src/stack/s1ap/s1ap.cc index 822a8a26b..7215f3ec1 100644 --- a/srsenb/src/stack/s1ap/s1ap.cc +++ b/srsenb/src/stack/s1ap/s1ap.cc @@ -339,7 +339,7 @@ int s1ap::init(const s1ap_args_t& args_, rrc_interface_s1ap* rrc_) } s1setup_proc.launch(); }; - mme_connect_timer.set(10000, mme_connect_run); + mme_connect_timer.set(args.s1_connect_timer * 1000, mme_connect_run); // Setup S1Setup timeout s1setup_timeout = task_sched.get_unique_timer(); uint32_t s1setup_timeout_val = 5000;