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-06 14:48:30 +0200
commitfe25c077e040021a33905ee4dc4edb994b7181ee (patch)
tree3b086effca384d4791086f19e1a9e3f2dc8f64d9
parenta1bf04a765ed34e9a13df94d4b6df4a7ff2c7467 (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 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);