srsENB: Derive inactivity timeout from T310 and T311 and N310.

master
Pedro Alvarez 4 years ago
parent 2cb80f9bf3
commit 8e00febb1d

@ -277,6 +277,7 @@ pusch_max_mcs = 16
# metrics_csv_filename: File path to use for CSV metrics. # metrics_csv_filename: File path to use for CSV metrics.
# pregenerate_signals: Pregenerate uplink signals after attach. Improves CPU performance. # pregenerate_signals: Pregenerate uplink signals after attach. Improves CPU performance.
# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR) # tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR)
# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds). With -1 the timeout is automatically derived.
# max_prach_offset_us: Maximum allowed RACH offset (in us) # max_prach_offset_us: Maximum allowed RACH offset (in us)
# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1). # 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). # eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).
@ -291,7 +292,7 @@ pusch_max_mcs = 16
#metrics_csv_filename = /tmp/enb_metrics.csv #metrics_csv_filename = /tmp/enb_metrics.csv
#pregenerate_signals = false #pregenerate_signals = false
#tx_amplitude = 0.6 #tx_amplitude = 0.6
#rrc_inactivity_timer = 60000 #rrc_inactivity_timer = -1
#max_prach_offset_us = 30 #max_prach_offset_us = 30
#eea_pref_list = EEA0, EEA2, EEA1 #eea_pref_list = EEA0, EEA2, EEA1
#eia_pref_list = EIA2, EIA1, EIA0 #eia_pref_list = EIA2, EIA1, EIA0

@ -88,7 +88,7 @@ struct gui_args_t {
}; };
struct general_args_t { struct general_args_t {
uint32_t rrc_inactivity_timer; int32_t rrc_inactivity_timer;
float metrics_period_secs; float metrics_period_secs;
bool metrics_csv_enable; bool metrics_csv_enable;
std::string metrics_csv_filename; std::string metrics_csv_filename;

@ -954,7 +954,14 @@ int set_derived_args(all_args_t* args_, rrc_cfg_t* rrc_cfg_, phy_cfg_t* phy_cfg_
rrc_cfg_->sibs[1].sib2().rr_cfg_common.pdsch_cfg_common.p_b = 1; rrc_cfg_->sibs[1].sib2().rr_cfg_common.pdsch_cfg_common.p_b = 1;
} }
if (args_->general.rrc_inactivity_timer == -1) {
uint32_t t310 = rrc_cfg_->sibs[1].sib2().ue_timers_and_consts.t310.to_number();
uint32_t t311 = rrc_cfg_->sibs[1].sib2().ue_timers_and_consts.t311.to_number();
uint32_t n310 = rrc_cfg_->sibs[1].sib2().ue_timers_and_consts.n310.to_number();
rrc_cfg_->inactivity_timeout_ms = t310 + t311 + n310 + 50;
} else {
rrc_cfg_->inactivity_timeout_ms = args_->general.rrc_inactivity_timer; rrc_cfg_->inactivity_timeout_ms = args_->general.rrc_inactivity_timer;
}
rrc_cfg_->enable_mbsfn = args_->stack.embms.enable; rrc_cfg_->enable_mbsfn = args_->stack.embms.enable;
rrc_cfg_->mbms_mcs = args_->stack.embms.mcs; rrc_cfg_->mbms_mcs = args_->stack.embms.mcs;

@ -187,7 +187,7 @@ void parse_args(all_args_t* args, int argc, char* argv[])
("expert.max_prach_offset_us", bpo::value<float>(&args->phy.max_prach_offset_us)->default_value(30), "Maximum allowed RACH offset (in us)") ("expert.max_prach_offset_us", bpo::value<float>(&args->phy.max_prach_offset_us)->default_value(30), "Maximum allowed RACH offset (in us)")
("expert.equalizer_mode", bpo::value<string>(&args->phy.equalizer_mode)->default_value("mmse"), "Equalizer mode") ("expert.equalizer_mode", bpo::value<string>(&args->phy.equalizer_mode)->default_value("mmse"), "Equalizer mode")
("expert.estimator_fil_w", bpo::value<float>(&args->phy.estimator_fil_w)->default_value(0.1), "Chooses the coefficients for the 3-tap channel estimator centered filter.") ("expert.estimator_fil_w", bpo::value<float>(&args->phy.estimator_fil_w)->default_value(0.1), "Chooses the coefficients for the 3-tap channel estimator centered filter.")
("expert.rrc_inactivity_timer", bpo::value<uint32_t>(&args->general.rrc_inactivity_timer)->default_value(60000), "Inactivity timer in ms") ("expert.rrc_inactivity_timer", bpo::value<int32_t>(&args->general.rrc_inactivity_timer)->default_value(-1), "Inactivity timer in ms. With -1 the timeout is automatically derived.")
("expert.print_buffer_state", bpo::value<bool>(&args->general.print_buffer_state)->default_value(false), "Prints on the console the buffer state every 10 seconds") ("expert.print_buffer_state", bpo::value<bool>(&args->general.print_buffer_state)->default_value(false), "Prints on the console the buffer state every 10 seconds")
("expert.eea_pref_list", bpo::value<string>(&args->general.eea_pref_list)->default_value("EEA0, EEA2, EEA1"), "Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1).") ("expert.eea_pref_list", bpo::value<string>(&args->general.eea_pref_list)->default_value("EEA0, EEA2, EEA1"), "Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1).")
("expert.eia_pref_list", bpo::value<string>(&args->general.eia_pref_list)->default_value("EIA2, EIA1, EIA0"), "Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).") ("expert.eia_pref_list", bpo::value<string>(&args->general.eia_pref_list)->default_value("EIA2, EIA1, EIA0"), "Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).")

@ -79,6 +79,8 @@ void rrc::init(const rrc_cfg_t& cfg_,
config_mac(); config_mac();
enb_mobility_cfg.reset(new enb_mobility_handler(this)); enb_mobility_cfg.reset(new enb_mobility_handler(this));
rrc_log->info("Inactivity timeout: %d ms\n", cfg.inactivity_timeout_ms);
running = true; running = true;
} }

Loading…
Cancel
Save