diff options
author | Oliver Smith <osmith@sysmocom.de> | 2019-09-05 15:12:20 +0200 |
---|---|---|
committer | osmith <osmith@sysmocom.de> | 2019-09-11 06:16:29 +0000 |
commit | 45fdc44d683365b806b90e694cb7b960dc967b31 (patch) | |
tree | 47c03bfb2f93ffdb6594c24e2e8a523072954256 /src/pcu_vty.c | |
parent | 37ae22ab13d799ad392d6b6b0e5997801589d044 (diff) |
tbf_dl: make preemptive retransmission optional
Since [1], OsmoPCU already starts to retransmit downlink blocks before
the MS has had a chance to receive them and/or send the related
acknowledgement in uplink. Make this optional with the new VTY option
"no dl-tbf-preemptive-retransmission".
[1] e25b5b91f60f20f61096bc6199a05b58ee6c6328 ("tbf: Only create dummy frames if necessary")
Related: OS#2408
Change-Id: Id08aed513d4033aa0d4324c6ce07cbb2852f2f92
Diffstat (limited to 'src/pcu_vty.c')
-rw-r--r-- | src/pcu_vty.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/pcu_vty.c b/src/pcu_vty.c index 1e4f50c2..a566e735 100644 --- a/src/pcu_vty.c +++ b/src/pcu_vty.c @@ -254,6 +254,8 @@ static int config_write_pcu(struct vty *vty) if (bts->dl_tbf_idle_msec) vty_out(vty, " dl-tbf-idle-time %d%s", bts->dl_tbf_idle_msec, VTY_NEWLINE); + if (!bts->dl_tbf_preemptive_retransmission) + vty_out(vty, " no dl-tbf-preemptive-retransmission%s", VTY_NEWLINE); if (strcmp(bts->pcu_sock_path, PCU_SOCK_DEFAULT)) vty_out(vty, " pcu-socket %s%s", bts->pcu_sock_path, VTY_NEWLINE); @@ -870,6 +872,32 @@ DEFUN(cfg_pcu_no_dl_tbf_idle_time, return CMD_SUCCESS; } +#define RETRANSMISSION_STR "retransmit blocks even before the MS had a chance to receive them (better throughput," \ + " less readable traces)" +DEFUN(cfg_pcu_dl_tbf_preemptive_retransmission, + cfg_pcu_dl_tbf_preemptive_retransmission_cmd, + "dl-tbf-preemptive-retransmission", + RETRANSMISSION_STR " (enabled by default)") +{ + struct gprs_rlcmac_bts *bts = bts_main_data(); + + bts->dl_tbf_preemptive_retransmission = true; + + return CMD_SUCCESS; +} + +DEFUN(cfg_pcu_no_dl_tbf_preemptive_retransmission, + cfg_pcu_no_dl_tbf_preemptive_retransmission_cmd, + "no dl-tbf-preemptive-retransmission", + NO_STR RETRANSMISSION_STR) +{ + struct gprs_rlcmac_bts *bts = bts_main_data(); + + bts->dl_tbf_preemptive_retransmission = false; + + return CMD_SUCCESS; +} + #define MS_IDLE_TIME_STR "keep an idle MS object alive for the time given\n" DEFUN(cfg_pcu_ms_idle_time, cfg_pcu_ms_idle_time_cmd, @@ -1215,6 +1243,8 @@ int pcu_vty_init(void) install_element(PCU_NODE, &cfg_pcu_gamma_cmd); install_element(PCU_NODE, &cfg_pcu_dl_tbf_idle_time_cmd); install_element(PCU_NODE, &cfg_pcu_no_dl_tbf_idle_time_cmd); + install_element(PCU_NODE, &cfg_pcu_dl_tbf_preemptive_retransmission_cmd); + install_element(PCU_NODE, &cfg_pcu_no_dl_tbf_preemptive_retransmission_cmd); install_element(PCU_NODE, &cfg_pcu_ms_idle_time_cmd); install_element(PCU_NODE, &cfg_pcu_no_ms_idle_time_cmd); install_element(PCU_NODE, &cfg_pcu_gsmtap_categ_cmd); |