aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-08-29 16:00:31 +0200
committerHarald Welte <laforge@gnumonks.org>2015-09-22 16:41:30 +0200
commitc241afa87c2fa8713a1fae89e6b599e011d45c28 (patch)
treea998fdeb35cab564277392e4bcc6a58f81142232
parent178d618d5a7728c876ae66777351aea37f88cc5d (diff)
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.
-rw-r--r--src/osmo-bts-trx/scheduler.c7
-rw-r--r--src/osmo-bts-trx/scheduler.h1
-rw-r--r--src/osmo-bts-trx/trx_vty.c16
3 files changed, 20 insertions, 4 deletions
diff --git a/src/osmo-bts-trx/scheduler.c b/src/osmo-bts-trx/scheduler.c
index a02a2de..4cf6a68 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 acc2ceb..ce7ddad 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 ebc7cfd..e3e9c36 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);