s1ap,feature: make the ts1 reloc timers configurable via the enb.conf

master
Francisco Paisana 4 years ago
parent b6a3b8c5b1
commit 4d014e7ceb

@ -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

@ -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;

@ -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

@ -55,9 +55,6 @@ public:
using erab_id_list = srsran::bounded_vector<uint16_t, ASN1_S1AP_MAXNOOF_ERABS>;
using erab_item_list = srsran::bounded_vector<asn1::s1ap::erab_item_s, ASN1_S1AP_MAXNOOF_ERABS>;
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);

@ -234,6 +234,8 @@ void parse_args(all_args_t* args, int argc, char* argv[])
("expert.gtpu_tunnel_timeout", bpo::value<uint32_t>(&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<uint32_t>(&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<bool>(&args->phy.extended_cp)->default_value(false), "Use extended cyclic prefix")
("expert.ts1_reloc_prep_timeout", bpo::value<uint32_t>(&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<uint32_t>(&args->stack.s1ap.ts1_reloc_overall_timeout)->default_value(10000), "S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds")
// eMBMS section

@ -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);

Loading…
Cancel
Save