From c241afa87c2fa8713a1fae89e6b599e011d45c28 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Thu, 29 Aug 2013 16:00:31 +0200 Subject: TRX: Add VTY option to allow setting RTS advance in frames RTS (ready-to-send) must be issued in advance, so BTS core and especially osmo-pcu can provide downlink data frames early enough. In some cases PCU might provide frames too late, so they must be dropped. If PCU provides frames too late, due to high system load, this "RTS advance" setting must be increased. --- src/osmo-bts-trx/scheduler.c | 7 ++++--- src/osmo-bts-trx/scheduler.h | 1 + src/osmo-bts-trx/trx_vty.c | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/osmo-bts-trx/scheduler.c b/src/osmo-bts-trx/scheduler.c index a02a2de1..4cf6a683 100644 --- a/src/osmo-bts-trx/scheduler.c +++ b/src/osmo-bts-trx/scheduler.c @@ -527,11 +527,12 @@ free_msg: default: goto wrong_type; } - if (prim_fn > 20) { + if (prim_fn > 100) { LOGP(DL1C, LOGL_NOTICE, "Prim for trx=%u ts=%u at fn=%u " "is out of range, or channel already disabled. " - "(current fn=%u)\n", l1h->trx->nr, tn, prim_fn, - fn); + "If this happens in conjunction with PCU, " + "increase 'rts-advance' by 5. (current fn=%u)\n", + l1h->trx->nr, tn, l1sap->u.data.fn, fn); /* unlink and free message */ llist_del(&msg->list); msgb_free(msg); diff --git a/src/osmo-bts-trx/scheduler.h b/src/osmo-bts-trx/scheduler.h index acc2cebe..ce7ddad8 100644 --- a/src/osmo-bts-trx/scheduler.h +++ b/src/osmo-bts-trx/scheduler.h @@ -2,6 +2,7 @@ #define TRX_SCHEDULER_H extern uint32_t trx_clock_advance; +extern uint32_t trx_rts_advance; extern uint32_t transceiver_last_fn; diff --git a/src/osmo-bts-trx/trx_vty.c b/src/osmo-bts-trx/trx_vty.c index ebc7cfdb..e3e9c364 100644 --- a/src/osmo-bts-trx/trx_vty.c +++ b/src/osmo-bts-trx/trx_vty.c @@ -119,7 +119,8 @@ DEFUN(show_transceiver, show_transceiver_cmd, "show transceiver", DEFUN(cfg_bts_fn_advance, cfg_bts_fn_advance_cmd, "fn-advance <0-30>", - "Set the number of frames to be transmitted in advance of current FN\n" + "Set the number of frames to be transmitted to transceiver in advance " + "of current FN\n" "Advance in frames\n") { trx_clock_advance = atoi(argv[0]); @@ -127,6 +128,17 @@ DEFUN(cfg_bts_fn_advance, cfg_bts_fn_advance_cmd, return CMD_SUCCESS; } +DEFUN(cfg_bts_rts_advance, cfg_bts_rts_advance_cmd, + "rts-advance <0-30>", + "Set the number of frames to be requested (PCU) in advance of current " + "FN. Do not change this, unless you have a good reason!\n" + "Advance in frames\n") +{ + trx_rts_advance = atoi(argv[0]); + + return CMD_SUCCESS; +} + DEFUN(cfg_bts_ms_power_loop, cfg_bts_ms_power_loop_cmd, "ms-power-loop <-127-127>", "Enable MS power control loop\nTarget RSSI value (transceiver specific, " @@ -336,6 +348,7 @@ DEFUN(cfg_trx_no_maxdly, cfg_trx_no_maxdly_cmd, void bts_model_config_write_bts(struct vty *vty, struct gsm_bts *bts) { vty_out(vty, " fn-advance %d%s", trx_clock_advance, VTY_NEWLINE); + vty_out(vty, " rts-advance %d%s", trx_rts_advance, VTY_NEWLINE); if (trx_ms_power_loop) vty_out(vty, " ms-power-loop %d%s", trx_target_rssi, @@ -385,6 +398,7 @@ int bts_model_vty_init(struct gsm_bts *bts) install_element_ve(&show_transceiver_cmd); install_element(BTS_NODE, &cfg_bts_fn_advance_cmd); + install_element(BTS_NODE, &cfg_bts_rts_advance_cmd); install_element(BTS_NODE, &cfg_bts_ms_power_loop_cmd); install_element(BTS_NODE, &cfg_bts_no_ms_power_loop_cmd); install_element(BTS_NODE, &cfg_bts_timing_advance_loop_cmd); -- cgit v1.2.3