fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email )
Change subject: bts: f_verify_ramp_up(): fix RxLev / dBm mixup
......................................................................
bts: f_verify_ramp_up(): fix RxLev / dBm mixup
Comparing RxLev and dBm values is comparing apples to oranges. It's
just a lucky coincidence that fake_trx is using RF path loss value of
110 dB, which is also the offset between RxLev and dBm.
* Add `mp_rf_path_loss` matching the default value (110 dB) in fake_trx.
* Add `f_bts_max_rx_level_dbm()` calculating the expected Rx power level.
* Apply `rxlev2dbm()` on `l1_dl.dl_info.rx_level` whenever needed.
* Clarify the units in verdict / logging messages.
Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Related: OS#6939
---
M bts/BTS_Tests.ttcn
1 file changed, 52 insertions(+), 44 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/22/42022/1
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 0fd2cff..3942ad1 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -115,6 +115,7 @@
integer mp_ms_power_level_exp := 7;
integer mp_bts_tx_nom_pwr_exp := 50; /* Expected Tx Nominal Output Power of the BTS, in dBm */
integer mp_bts_tx_pwr_att_exp := 20; /* Expected Tx Power attenuation wrt to Tx Nominal Output Power, in dB */
+ integer mp_rf_path_loss := 110; /* RF path loss, in dB */
integer mp_ms_actual_ta_exp := 0;
integer mp_timing_offset_256syms_exp := 512;
integer mp_uplink_power_target := -75;
@@ -2751,16 +2752,21 @@
f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
}
+/* calculate max. Rx power level (in dBm) expected on the Um interface */
+private function f_bts_max_rx_level_dbm() return integer {
+ return mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp - mp_rf_path_loss;
+}
+
/* Wait until the BTS has reached full tx power (nominal tx power minus configured attenuation) */
-private function f_wait_ramp_up() runs on ConnHdlr return integer {
+private function f_wait_ramp_up() runs on ConnHdlr {
var L1ctlMessage l1_dl;
- var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
timer Tup := 10.0;
Tup.start;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
if (rx_lvl != max_rx_lvl) {
repeat;
@@ -2769,11 +2775,10 @@
}
[] L1CTL.receive { repeat; }
[] Tup.timeout {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Didn't reach full power ", max_rx_lvl));
+ setverdict(fail, "Didn't reach full power ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
- return max_rx_lvl;
}
/* verify BTS ramps power up to full tx power (nominal tx power minus configured attenuation) */
@@ -2781,37 +2786,37 @@
var L1ctlMessage l1_dl;
var integer initial_rx_lvl := -1;
var integer last_rx_lvl := -1;
- var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
timer T := 2.0;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
if (initial_rx_lvl == -1) {
initial_rx_lvl := rx_lvl;
last_rx_lvl := rx_lvl;
/* Expect a somehow low value during first received messages */
if (initial_rx_lvl >= max_rx_lvl / 2) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected high initial tx power during ramp up: ",
- initial_rx_lvl , ", full power is ", max_rx_lvl));
+ setverdict(fail, "Detected high initial Tx power during ramp up: ",
+ initial_rx_lvl , " dBm (full power is ", max_rx_lvl, " dBm)");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
/* received Rx level bigger than maximum allowed power by CN */
if (rx_lvl > max_rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power higher than full power: ",
- rx_lvl , " > ", max_rx_lvl));
+ setverdict(fail, "Detected Tx power higher than full power: ",
+ rx_lvl , " > ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/* Make sure it never decreases, since we are rumping up */
if (last_rx_lvl > rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power decrease during ramp up: ",
- last_rx_lvl , " -> ", rx_lvl));
+ setverdict(fail, "Detected Tx power decrease during ramp up: ",
+ last_rx_lvl , " -> ", rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
if (rx_lvl == max_rx_lvl and not T.running) {
@@ -2830,11 +2835,11 @@
/* We didn't increase tx power during ramp up */
if (initial_rx_lvl < last_rx_lvl) {
- log("Tx power increased during ramp up: ", initial_rx_lvl , " -> ", last_rx_lvl);
+ log("Tx power increased during ramp up: ", initial_rx_lvl , " -> ", last_rx_lvl, " dBm");
} else {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("No Tx power increase during whole ramp up: ",
- initial_rx_lvl , " -> ", last_rx_lvl));
+ setverdict(fail, "No Tx power increase during whole ramp up: ",
+ initial_rx_lvl , " -> ", last_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
@@ -2847,21 +2852,21 @@
Tdown.start;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
/* received Rx level bigger than maximum allowed power by CN */
if (rx_lvl > max_rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power higher than full power: ",
- rx_lvl , " > ", max_rx_lvl));
+ setverdict(fail, "Detected Tx power higher than full power: ",
+ rx_lvl , " > ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/* Make sure it never increases, since we are rumping down */
if (last_rx_lvl < rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power increase during ramp up: ",
- last_rx_lvl , " -> ", rx_lvl));
+ setverdict(fail, "Detected Tx power increase during ramp down: ",
+ last_rx_lvl , " -> ", rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
last_rx_lvl := rx_lvl;
@@ -2877,16 +2882,16 @@
/* We didn't increase tx power during ramp down */
if (max_rx_lvl > last_rx_lvl) {
- log("Tx power decreased during ramp down: ", max_rx_lvl , " -> ", last_rx_lvl);
+ log("Tx power decreased during ramp down: ", max_rx_lvl , " -> ", last_rx_lvl, " dBm");
} else {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("No Tx power decrease during whole ramp down: ",
- max_rx_lvl , " -> ", last_rx_lvl));
+ setverdict(fail, "No Tx power decrease during whole ramp down: ",
+ max_rx_lvl , " -> ", last_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
/* verify BTS power down to rx_level 0 without ramping */
-private function f_verify_power_down(integer max_rx_lvl) runs on ConnHdlr {
+private function f_verify_power_down(GsmRxLev max_rx_lvl) runs on ConnHdlr {
var L1ctlMessage l1_dl;
var boolean first_data_ind := true;
@@ -2896,7 +2901,7 @@
[first_data_ind == true] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
first_data_ind := false;
var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ log("BCCH RxLev ", rx_lvl);
/* The first data indication could still have the original power level */
if (rx_lvl != 0 and rx_lvl != max_rx_lvl) {
@@ -2908,7 +2913,7 @@
}
[first_data_ind == false] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ log("BCCH RxLev ", rx_lvl);
/* Expect immediate power off so either rx_level == 0 or no report at all
because TRX was shut down already */
@@ -2953,11 +2958,13 @@
RSL.clear;
/* Wait until BTS is started and at full power */
- var integer max_rx_lvl := f_wait_ramp_up();
- log("Reached nominal level ", max_rx_lvl, ", shutting down OML link");
+ f_wait_ramp_up();
+
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+ log("Reached nominal level ", max_rx_lvl, " dBm, shutting down OML link");
f_vty_transceive(BSCVTY, "drop bts connection 0 oml");
- f_verify_power_down(max_rx_lvl);
+ f_verify_power_down(dbm2rxlev(max_rx_lvl));
setverdict(pass);
}
@@ -2985,13 +2992,14 @@
RSL.clear;
/* Wait until BTS is started and at full power */
- var integer max_rx_lvl := f_wait_ramp_up();
- log("Reached nominal level ", max_rx_lvl, ", changing ADM state to LOCKED");
+ f_wait_ramp_up();
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+ log("Reached nominal level ", max_rx_lvl, " dBm, changing ADM state to LOCKED");
log("ADM STATE UNLOCKED->LOCKED");
f_vty_enter_cfg_trx(BSCVTY);
f_vty_transceive(BSCVTY, "rf_locked 1");
- f_verify_ramp_down(max_rx_lvl);
+ f_verify_ramp_down(dbm2rxlev(max_rx_lvl));
/* Let some time after we received 0dBm, then check we don't receive BCCH
* anymore because scheduler has stopped after ramping down */
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Gerrit-Change-Number: 42022
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/42017?usp=email )
Change subject: tests/db_upgrade: Use log stderr blocking-io
......................................................................
tests/db_upgrade: Use log stderr blocking-io
When --db-check is used, osmo-hlr actually becomes a synchronous
non-interactive program instead of a daemon.
In that case, we want to use blocking-io since it doesn't use the event
loop, so we want to flush all logging synchrnously before exiting.
Change-Id: Ic81eacbcc0432b81debc52c49fddc668c7a062b3
---
M tests/db_upgrade/osmo-hlr.cfg
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/17/42017/1
diff --git a/tests/db_upgrade/osmo-hlr.cfg b/tests/db_upgrade/osmo-hlr.cfg
index 7fb12c1..9f5ce42 100644
--- a/tests/db_upgrade/osmo-hlr.cfg
+++ b/tests/db_upgrade/osmo-hlr.cfg
@@ -1,4 +1,4 @@
-log stderr
+log stderr blocking-io
logging level db notice
logging print category-hex 0
logging print file 0
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/42017?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: Ic81eacbcc0432b81debc52c49fddc668c7a062b3
Gerrit-Change-Number: 42017
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/42018?usp=email )
Change subject: osmo-hlr: Force log stderr blocking-io in --db-check mode
......................................................................
osmo-hlr: Force log stderr blocking-io in --db-check mode
When --db-check is used, osmo-hlr actually becomes a synchronous
non-interactive program instead of a daemon.
In that case, we want to use blocking-io since it doesn't use the event
loop, so we want to flush all logging synchronously before exiting.
Usually the user will pass the same osmo-hlr.cfg when running with
--db-check, which means most probably won't be using blocking-io (as
expected when osmo-hlr runs in daemon mode).
Since --db-check converts osmo-hlr to a cmdline which exits after checks
are done, we actually want to force blocking-io in that case, so that
all content is written to stderr before finishing the process.
Change-Id: If5e505383086cc55d724c0d6891756c8d94fa267
---
M src/hlr.c
1 file changed, 5 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/18/42018/1
diff --git a/src/hlr.c b/src/hlr.c
index 0cfa09a..038a0a4 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -809,6 +809,11 @@
return rc;
}
+ if (cmdline_opts.db_check) {
+ /* Make sure to use synchronous logging to stderr in --db-check (non-interactive mode): */
+ log_target_file_switch_to_stream(osmo_stderr_target);
+ }
+
LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n");
rc = rand_init();
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/42018?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: If5e505383086cc55d724c0d6891756c8d94fa267
Gerrit-Change-Number: 42018
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcap/+/42015?usp=email )
Change subject: server: wr_file: Request up to 8 iofd write buffers if available
......................................................................
server: wr_file: Request up to 8 iofd write buffers if available
Writing to disk is usually slower than handling network traffic, so it's
a desirable to increase write buffers to try to submit our write queue
to the kernel/VFS as fast as possible, to avoid it growing too much.
This should also improve CPU use at the expense of some dozen KBs of
extra use, which in the server should be plenty available.
Depends: libosmocore.git 378cf564c8859311415aa70adeb220cedbe56eb3
Change-Id: I167e5f9b7f9d5693b3df05f713288c741031c532
---
M TODO-RELEASE
M src/osmo_pcap_wr_file.c
2 files changed, 8 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcap refs/changes/15/42015/1
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 0ed7189..b52b9a8 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -7,3 +7,4 @@
# If any interfaces have been added since the last public release: c:r:a + 1.
# If any interfaces have been removed or changed since the last public release: c:r:0.
#library what description / commit summary line
+libosmocore >1.12.1 osmo_iofd_set_io_buffers(..., 0) returning maximum available write buffer value.
diff --git a/src/osmo_pcap_wr_file.c b/src/osmo_pcap_wr_file.c
index d60c5a7..3510c59 100644
--- a/src/osmo_pcap_wr_file.c
+++ b/src/osmo_pcap_wr_file.c
@@ -125,7 +125,14 @@
&ioops, wrf);
if (!wrf->local_iofd)
return -EBADFD;
+
osmo_iofd_set_txqueue_max_length(wrf->local_iofd, wrf->wr_queue_max_length);
+
+ /* Request to use 8 write buffers, or less if not as many are available: */
+ rc = osmo_iofd_set_io_buffers(wrf->local_iofd, OSMO_IO_OP_WRITE, 0);
+ if (rc > 0)
+ osmo_iofd_set_io_buffers(wrf->local_iofd, OSMO_IO_OP_WRITE, OSMO_MIN(rc, 8));
+
if (osmo_iofd_register(wrf->local_iofd, -1) < 0) {
osmo_iofd_free(wrf->local_iofd);
wrf->local_iofd = NULL;
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcap/+/42015?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-pcap
Gerrit-Branch: master
Gerrit-Change-Id: I167e5f9b7f9d5693b3df05f713288c741031c532
Gerrit-Change-Number: 42015
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>