From 67e5a72a51db4b46d925709e1ec9f0c0bf882ebe Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 18 Aug 2020 16:26:50 +0200 Subject: [PATCH] common: tx_power: Fix bug in power ramp up below max-initial value See previous commit adding the unit test about the error description and expected behavior. The wrong behavior appeared due to step_size_mdB being unsigned and the whole addition at the left side of the comparison being turned too as unsigned, hence a small negative value turning into a big positive value, and tpp->p_total_cur_mdBm not being updated to speed up the power ramping. Change-Id: I36a34362ebc90226fd8e1e190f898c3718fd923a --- src/common/tx_power.c | 2 +- tests/tx_power/tx_power_test.err | 8 -------- tests/tx_power/tx_power_test.ok | 4 ---- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/common/tx_power.c b/src/common/tx_power.c index c5ea7ed68..08c4236df 100644 --- a/src/common/tx_power.c +++ b/src/common/tx_power.c @@ -278,7 +278,7 @@ int power_ramp_start(struct gsm_bts_trx *trx, int p_total_tgt_mdBm, int bypass, } else { /* We need to step it up. Start from the current value, shortcutting to max-initial. */ /* Set attenuation to cause no power change right now */ - if (tpp->p_total_cur_mdBm + tpp->ramp.step_size_mdB < tpp->ramp.max_initial_pout_mdBm) + if (tpp->p_total_cur_mdBm + (int)tpp->ramp.step_size_mdB < tpp->ramp.max_initial_pout_mdBm) tpp->p_total_cur_mdBm = tpp->ramp.max_initial_pout_mdBm - tpp->ramp.step_size_mdB; tpp->ramp.attenuation_mdB = tpp->p_total_tgt_mdBm - tpp->p_total_cur_mdBm; diff --git a/tests/tx_power/tx_power_test.err b/tests/tx_power/tx_power_test.err index 3ef12c961..72a3d853c 100644 --- a/tests/tx_power/tx_power_test.err +++ b/tests/tx_power/tx_power_test.err @@ -36,14 +36,6 @@ (bts=0,trx=1) ramp_timer_cb(cur_pout=33000, tgt_pout=33000, ramp_att=0, therm_att=0, user_gain=0) (bts=0,trx=1) ramping TRX board output power to 23000 mdBm. (bts=0,trx=1) power_ramp_start(cur=-10000, tgt=10000) -(bts=0,trx=1) ramp_timer_cb(cur_pout=-8000, tgt_pout=10000, ramp_att=18000, therm_att=0, user_gain=0) -(bts=0,trx=1) ramping TRX board output power to -8000 mdBm. -(bts=0,trx=1) ramp_timer_cb(cur_pout=-6000, tgt_pout=10000, ramp_att=16000, therm_att=0, user_gain=0) -(bts=0,trx=1) ramping TRX board output power to -6000 mdBm. -(bts=0,trx=1) ramp_timer_cb(cur_pout=-4000, tgt_pout=10000, ramp_att=14000, therm_att=0, user_gain=0) -(bts=0,trx=1) ramping TRX board output power to -4000 mdBm. -(bts=0,trx=1) ramp_timer_cb(cur_pout=-2000, tgt_pout=10000, ramp_att=12000, therm_att=0, user_gain=0) -(bts=0,trx=1) ramping TRX board output power to -2000 mdBm. (bts=0,trx=1) ramp_timer_cb(cur_pout=0, tgt_pout=10000, ramp_att=10000, therm_att=0, user_gain=0) (bts=0,trx=1) ramping TRX board output power to 0 mdBm. (bts=0,trx=1) ramp_timer_cb(cur_pout=2000, tgt_pout=10000, ramp_att=8000, therm_att=0, user_gain=0) diff --git a/tests/tx_power/tx_power_test.ok b/tests/tx_power/tx_power_test.ok index ec3ea6139..c8f04417a 100644 --- a/tests/tx_power/tx_power_test.ok +++ b/tests/tx_power/tx_power_test.ok @@ -23,10 +23,6 @@ CHANGE_POWER(22000) CHANGE_POWER(23000) power_ramp finished Testing tx_power ramping for osmo-bts-trx after lock -CHANGE_POWER(-8000) -CHANGE_POWER(-6000) -CHANGE_POWER(-4000) -CHANGE_POWER(-2000) CHANGE_POWER(0) CHANGE_POWER(2000) CHANGE_POWER(4000)