diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-26 20:47:13 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-27 03:28:14 +0200 |
commit | 844dae033b096963ca9f6ac0be0ccf85290574bc (patch) | |
tree | f3f85b7dd9eabf5a80798ef63f59d0a33fd35960 /tests | |
parent | d514f639fc52000c8587b51af2020a3c2794f3c5 (diff) |
handover_test: add bspower to meas-rep cmd
Subsequent patch will add a test that uses this to show a handover
oscillation problem in the presence of nonzero BS Power.
Related: SYS#5339
Change-Id: I158d4b27370ab19318f83018803853f423c89b79
Diffstat (limited to 'tests')
-rw-r--r-- | tests/handover/handover_test.c | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 8e23a4f2f..2b8e8775b 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -82,7 +82,7 @@ void __wrap_osmo_mgcpc_ep_ci_request(struct osmo_mgcpc_ep_ci *ci, uint8_t meas_rep_ba = 0, meas_rep_valid = 1, meas_valid = 1, meas_multi_rep = 0; uint8_t meas_ul_rxlev = 0, meas_ul_rxqual = 0; -uint8_t meas_tx_power_ms = 0, meas_tx_power_bs = 0; +uint8_t meas_tx_power_ms = 0; uint8_t meas_dtx_ms = 0, meas_dtx_bs = 0, meas_nr = 0; char *codec_tch_f = NULL; char *codec_tch_h = NULL; @@ -94,7 +94,7 @@ struct neighbor_meas { }; static void gen_meas_rep(struct gsm_lchan *lchan, - uint8_t rxlev, uint8_t rxqual, uint8_t ta, + uint8_t bs_power_db, uint8_t rxlev, uint8_t rxqual, uint8_t ta, int neighbors_count, struct neighbor_meas *neighbors) { struct msgb *msg = msgb_alloc_headroom(256, 64, "RSL"); @@ -117,7 +117,7 @@ static void gen_meas_rep(struct gsm_lchan *lchan, ulm[2] = (meas_ul_rxqual << 3) | meas_ul_rxqual; msgb_tlv_put(msg, RSL_IE_UPLINK_MEAS, sizeof(ulm), ulm); - msgb_tv_put(msg, RSL_IE_BS_POWER, meas_tx_power_bs); + msgb_tv_put(msg, RSL_IE_BS_POWER, (bs_power_db / 2) & 0xf); l1i[0] = 0; l1i[1] = ta; @@ -865,6 +865,7 @@ DEFUN(create_ms, create_ms_cmd, struct meas_rep_data { int argc; const char **argv; + uint8_t bs_power_db; }; static void _meas_rep_cb(struct gsm_lchan *lc, void *data) @@ -916,14 +917,15 @@ static void _meas_rep_cb(struct gsm_lchan *lc, void *data) fprintf(stderr, " * Neighbor cell #%d, actual BTS %d: rxlev=%d\n", i, neighbor_bts_nr, nm[i].rxlev); } - gen_meas_rep(lc, rxlev, rxqual, ta, argc, nm); + gen_meas_rep(lc, d->bs_power_db, rxlev, rxqual, ta, argc, nm); } -static int _meas_rep(struct vty *vty, int argc, const char **argv) +static int _meas_rep(struct vty *vty, uint8_t bs_power_db, int argc, const char **argv) { struct meas_rep_data d = { .argc = argc - 4, .argv = argv + 4, + .bs_power_db = bs_power_db, }; parse_lchan_wildcard_args(argv, _meas_rep_cb, &d); return CMD_SUCCESS; @@ -951,7 +953,7 @@ DEFUN(meas_rep, meas_rep_cmd, MEAS_REP_DOC MEAS_REP_ARGS_DOC) { VTY_ECHO(); - return _meas_rep(vty, argc, argv); + return _meas_rep(vty, 0, argc, argv); } DEFUN(meas_rep_repeat, meas_rep_repeat_cmd, @@ -966,7 +968,25 @@ DEFUN(meas_rep_repeat, meas_rep_repeat_cmd, argc -= 1; while (count--) - _meas_rep(vty, argc, argv); + _meas_rep(vty, 0, argc, argv); + return CMD_SUCCESS; +} + +DEFUN(meas_rep_repeat_bspower, meas_rep_repeat_bspower_cmd, + "meas-rep repeat <0-999> bspower <0-31> " MEAS_REP_ARGS, + MEAS_REP_DOC + "Resend the same measurement report N times\nN\n" + "Send a nonzero BS Power value in the measurement report (downlink power reduction)\nBS Power reduction in dB\n" + MEAS_REP_ARGS_DOC) +{ + int count = atoi(argv[0]); + uint8_t bs_power_db = atoi(argv[1]); + VTY_ECHO(); + argv += 2; + argc -= 2; + + while (count--) + _meas_rep(vty, bs_power_db, argc, argv); return CMD_SUCCESS; } @@ -1184,6 +1204,7 @@ static void ho_test_vty_init() install_element(CONFIG_NODE, &create_ms_cmd); install_element(CONFIG_NODE, &meas_rep_cmd); install_element(CONFIG_NODE, &meas_rep_repeat_cmd); + install_element(CONFIG_NODE, &meas_rep_repeat_bspower_cmd); install_element(CONFIG_NODE, &congestion_check_cmd); install_element(CONFIG_NODE, &expect_no_chan_cmd); install_element(CONFIG_NODE, &expect_chan_cmd); |