<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/22080">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">power_control: rework handling of DL RxQual measurements<br><br>This change makes BS power control loop:<br><br>  - take the lower RxQual threshold (L_RXQUAL_XX_P) into account, so<br>    the BS power is increased only if RxQual exceeds this threshold;<br><br>  - apply the configured increase step size instead of reducing the<br>    current attenuation by half.<br><br>MS power loop is not affected, it does not even handle RxQual yet.<br><br>Change-Id: Ib3c740b9a0f3ba5dfb027e144dc13f456cb26ae2<br>Related: SYS#4918<br>---<br>M src/common/power_control.c<br>M tests/power/bs_power_loop_test.c<br>M tests/power/bs_power_loop_test.err<br>M tests/power/bs_power_loop_test.ok<br>4 files changed, 98 insertions(+), 70 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/common/power_control.c b/src/common/power_control.c</span><br><span>index 5e2e85e..6620add 100644</span><br><span>--- a/src/common/power_control.c</span><br><span>+++ b/src/common/power_control.c</span><br><span>@@ -274,12 +274,23 @@</span><br><span>             rxlev = rxlev_full;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Bit Error Rate > 0 => reduce by 2 */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (rxqual > 0) { /* FIXME: take RxQual threshold into account */</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "Reducing Downlink attenuation "</span><br><span style="color: hsl(0, 100%, 40%);">-                     "by half: %u -> %u dB due to RXQUAL %u > 0\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                          state->current, state->current / 2, rxqual);</span><br><span style="color: hsl(0, 100%, 40%);">-            state->current /= 2;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* If RxQual > L_RXQUAL_XX_P, try to increase Tx power */</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rxqual > params->rxqual_meas.lower_thresh) {</span><br><span style="color: hsl(120, 100%, 40%);">+                uint8_t old = state->current;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            /* Tx power has reached the maximum, nothing to do */</span><br><span style="color: hsl(120, 100%, 40%);">+         if (state->current == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Increase Tx power by reducing Tx attenuation */</span><br><span style="color: hsl(120, 100%, 40%);">+            if (state->current >= params->inc_step_size_db)</span><br><span style="color: hsl(120, 100%, 40%);">+                      state->current -= params->inc_step_size_db;</span><br><span style="color: hsl(120, 100%, 40%);">+             else</span><br><span style="color: hsl(120, 100%, 40%);">+                  state->current = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "Reducing Downlink attenuation: "</span><br><span style="color: hsl(120, 100%, 40%);">+                          "%u -> %d dB due to RxQual %u worse than L_RXQUAL_XX_P %u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                    old, state->current, rxqual, params->rxqual_meas.lower_thresh);</span><br><span>              return 1;</span><br><span>    }</span><br><span> </span><br><span>diff --git a/tests/power/bs_power_loop_test.c b/tests/power/bs_power_loop_test.c</span><br><span>index 06b53da..7301b7f 100644</span><br><span>--- a/tests/power/bs_power_loop_test.c</span><br><span>+++ b/tests/power/bs_power_loop_test.c</span><br><span>@@ -291,7 +291,7 @@</span><br><span>     { .meas = { DL_MEAS_FULL(0, 63), DL_MEAS_SUB(0, PWR_TEST_RXLEV_TARGET) } },</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify that RxQual > 0 reduces the current attenuation value. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify that high RxQual reduces the current attenuation value. */</span><br><span> static const struct power_test_step TC_rxqual_ber[] = {</span><br><span>         /* Initial state: 16 dB, up to 20 dB */</span><br><span>      { .type = PWR_TEST_ST_SET_STATE,</span><br><span>@@ -301,25 +301,30 @@</span><br><span>     { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 },</span><br><span>   { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 },</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* MS indicates target RxLev, but RxQual values > 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-       { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 2 },</span><br><span style="color: hsl(0, 100%, 40%);">-  { .meas = DL_MEAS_FULL_SUB(4, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 4 },</span><br><span style="color: hsl(0, 100%, 40%);">-  { .meas = DL_MEAS_FULL_SUB(1, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 8 },</span><br><span style="color: hsl(120, 100%, 40%);">+        /* MS indicates target RxLev, but RxQual values better than L_RXQUAL_XX_P=3 */</span><br><span style="color: hsl(120, 100%, 40%);">+        { .meas = DL_MEAS_FULL_SUB(1, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(2, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(3, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 },</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* MS indicates target RxLev, and no bit errors anymore */</span><br><span style="color: hsl(0, 100%, 40%);">-      { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 8 },</span><br><span style="color: hsl(0, 100%, 40%);">-  { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 8 },</span><br><span style="color: hsl(120, 100%, 40%);">+        /* MS indicates target RxLev, but RxQual values worse than L_RXQUAL_XX_P=3 */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(4, PWR_TEST_RXLEV_TARGET +  0),  .exp_txred = 16 -  4 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { .meas = DL_MEAS_FULL_SUB(5, PWR_TEST_RXLEV_TARGET +  4),  .exp_txred = 16 -  8 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { .meas = DL_MEAS_FULL_SUB(6, PWR_TEST_RXLEV_TARGET +  8),  .exp_txred = 16 - 12 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET + 12),  .exp_txred = 16 - 16 }, /* max */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET + 16),  .exp_txred = 16 - 16 }, /* max */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* Reset state: 16 dB, up to 20 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* MS indicates target RxLev, but no bit errors anymore => reducing Tx power */</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 16),  .exp_txred = 2 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 14),  .exp_txred = 4 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 12),  .exp_txred = 6 },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Reset state: 0 dB, up to 20 dB */</span><br><span>         { .type = PWR_TEST_ST_SET_STATE,</span><br><span style="color: hsl(0, 100%, 40%);">-          .state = { .current = 16, .max = 2 * 10 } },</span><br><span style="color: hsl(120, 100%, 40%);">+          .state = { .current = 0, .max = 2 * 10 } },</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* MS indicates target RxLev, but RxQual values > 0 again */</span><br><span style="color: hsl(0, 100%, 40%);">- { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 /  2 },</span><br><span style="color: hsl(0, 100%, 40%);">- { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 /  4 },</span><br><span style="color: hsl(0, 100%, 40%);">- { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 /  8 },</span><br><span style="color: hsl(0, 100%, 40%);">- { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 16 },</span><br><span style="color: hsl(0, 100%, 40%);">- { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET),   .exp_txred = 16 / 32 },</span><br><span style="color: hsl(120, 100%, 40%);">+       /* MS indicates target RxLev, but RxQual values worse than L_RXQUAL_XX_P=3 */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET) }, /* max */</span><br><span style="color: hsl(120, 100%, 40%);">+     { .meas = DL_MEAS_FULL_SUB(7, PWR_TEST_RXLEV_TARGET) }, /* max */</span><br><span> };</span><br><span> </span><br><span> /* Verify that invalid and dummy SACCH blocks are ignored. */</span><br><span>diff --git a/tests/power/bs_power_loop_test.err b/tests/power/bs_power_loop_test.err</span><br><span>index 20d2133..e7ba310 100644</span><br><span>--- a/tests/power/bs_power_loop_test.err</span><br><span>+++ b/tests/power/bs_power_loop_test.err</span><br><span>@@ -58,26 +58,29 @@</span><br><span> (bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 16 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span> (bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 16 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 16 -> 8 dB due to RXQUAL 7 > 0</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(4), RXLEV-SUB(30), RXQUAL-SUB(4), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 8 -> 4 dB due to RXQUAL 4 > 0</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(1), RXLEV-SUB(30), RXQUAL-SUB(1), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 4 -> 2 dB due to RXQUAL 1 > 0</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 2 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 2 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 16 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(2), RXLEV-SUB(30), RXQUAL-SUB(2), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 16 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(3), RXLEV-SUB(30), RXQUAL-SUB(3), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 16 dB (maximum 20 dB, target -80 dBm, delta 0 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(4), RXLEV-SUB(30), RXQUAL-SUB(4), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation: 16 -> 12 dB due to RxQual 4 worse than L_RXQUAL_XX_P 3</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(34), RXQUAL-FULL(5), RXLEV-SUB(34), RXQUAL-SUB(5), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation: 12 -> 8 dB due to RxQual 5 worse than L_RXQUAL_XX_P 3</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(38), RXQUAL-FULL(6), RXLEV-SUB(38), RXQUAL-SUB(6), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation: 8 -> 4 dB due to RxQual 6 worse than L_RXQUAL_XX_P 3</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(42), RXQUAL-FULL(7), RXLEV-SUB(42), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation: 4 -> 0 dB due to RxQual 7 worse than L_RXQUAL_XX_P 3</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(46), RXQUAL-FULL(7), RXLEV-SUB(46), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(46), RXQUAL-FULL(0), RXLEV-SUB(46), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Changing Downlink attenuation: 0 -> 2 dB (maximum 20 dB, target -80 dBm, delta -2 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(44), RXQUAL-FULL(0), RXLEV-SUB(44), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Changing Downlink attenuation: 2 -> 4 dB (maximum 20 dB, target -80 dBm, delta -2 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(42), RXQUAL-FULL(0), RXLEV-SUB(42), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Changing Downlink attenuation: 4 -> 6 dB (maximum 20 dB, target -80 dBm, delta -2 dB)</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 16 -> 8 dB due to RXQUAL 7 > 0</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 8 -> 4 dB due to RXQUAL 7 > 0</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 4 -> 2 dB due to RXQUAL 7 > 0</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 2 -> 1 dB due to RXQUAL 7 > 0</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7), DTx is disabled => using FULL</span><br><span style="color: hsl(0, 100%, 40%);">-(bts=0,trx=0,ts=0,ss=0) Reducing Downlink attenuation by half: 1 -> 0 dB due to RXQUAL 7 > 0</span><br><span> (bts=0,trx=0,ts=0,ss=0) The measurement results are not valid</span><br><span> (bts=0,trx=0,ts=0,ss=0) The measurement results are not valid</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span>diff --git a/tests/power/bs_power_loop_test.ok b/tests/power/bs_power_loop_test.ok</span><br><span>index 804f5c6..19ec249 100644</span><br><span>--- a/tests/power/bs_power_loop_test.ok</span><br><span>+++ b/tests/power/bs_power_loop_test.ok</span><br><span>@@ -125,37 +125,46 @@</span><br><span> #02 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span> #02 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span> #02 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 16 (expected 16)</span><br><span style="color: hsl(0, 100%, 40%);">-#03 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#03 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#03 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 8 (expected 8)</span><br><span style="color: hsl(0, 100%, 40%);">-#04 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(4), RXLEV-SUB(30), RXQUAL-SUB(4)</span><br><span style="color: hsl(0, 100%, 40%);">-#04 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 48 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#04 lchan_bs_pwr_ctrl() -> BS power reduction: 8 -> 4 (expected 4)</span><br><span style="color: hsl(0, 100%, 40%);">-#05 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(1), RXLEV-SUB(30), RXQUAL-SUB(1)</span><br><span style="color: hsl(0, 100%, 40%);">-#05 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 12 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#05 lchan_bs_pwr_ctrl() -> BS power reduction: 4 -> 2 (expected 2)</span><br><span style="color: hsl(0, 100%, 40%);">-#06 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(0, 100%, 40%);">-#06 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#06 lchan_bs_pwr_ctrl() -> BS power reduction: 2 -> 2 (expected 2)</span><br><span style="color: hsl(0, 100%, 40%);">-#07 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(0, 100%, 40%);">-#07 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#07 lchan_bs_pwr_ctrl() -> BS power reduction: 2 -> 2 (expected 2)</span><br><span style="color: hsl(0, 100%, 40%);">-#08 exec_power_step() <- State (re)set (current 16 dB, max 20 dB)</span><br><span style="color: hsl(0, 100%, 40%);">-#09 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#09 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#09 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 8 (expected 8)</span><br><span style="color: hsl(0, 100%, 40%);">-#10 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#10 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#10 lchan_bs_pwr_ctrl() -> BS power reduction: 8 -> 4 (expected 4)</span><br><span style="color: hsl(0, 100%, 40%);">-#11 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#11 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#11 lchan_bs_pwr_ctrl() -> BS power reduction: 4 -> 2 (expected 2)</span><br><span style="color: hsl(0, 100%, 40%);">-#12 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#12 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#12 lchan_bs_pwr_ctrl() -> BS power reduction: 2 -> 1 (expected 1)</span><br><span style="color: hsl(0, 100%, 40%);">-#13 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(0, 100%, 40%);">-#13 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(0, 100%, 40%);">-#13 lchan_bs_pwr_ctrl() -> BS power reduction: 1 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#03 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(1), RXLEV-SUB(30), RXQUAL-SUB(1)</span><br><span style="color: hsl(120, 100%, 40%);">+#03 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 12 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#03 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#04 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(2), RXLEV-SUB(30), RXQUAL-SUB(2)</span><br><span style="color: hsl(120, 100%, 40%);">+#04 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 24 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#04 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#05 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(3), RXLEV-SUB(30), RXQUAL-SUB(3)</span><br><span style="color: hsl(120, 100%, 40%);">+#05 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 36 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#05 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#06 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(4), RXLEV-SUB(30), RXQUAL-SUB(4)</span><br><span style="color: hsl(120, 100%, 40%);">+#06 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 48 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#06 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 12 (expected 12)</span><br><span style="color: hsl(120, 100%, 40%);">+#07 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(34), RXQUAL-FULL(5), RXLEV-SUB(34), RXQUAL-SUB(5)</span><br><span style="color: hsl(120, 100%, 40%);">+#07 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 22 22 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#07 lchan_bs_pwr_ctrl() -> BS power reduction: 12 -> 8 (expected 8)</span><br><span style="color: hsl(120, 100%, 40%);">+#08 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(38), RXQUAL-FULL(6), RXLEV-SUB(38), RXQUAL-SUB(6)</span><br><span style="color: hsl(120, 100%, 40%);">+#08 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 26 26 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#08 lchan_bs_pwr_ctrl() -> BS power reduction: 8 -> 4 (expected 4)</span><br><span style="color: hsl(120, 100%, 40%);">+#09 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(42), RXQUAL-FULL(7), RXLEV-SUB(42), RXQUAL-SUB(7)</span><br><span style="color: hsl(120, 100%, 40%);">+#09 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 2a 2a 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#09 lchan_bs_pwr_ctrl() -> BS power reduction: 4 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#10 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(46), RXQUAL-FULL(7), RXLEV-SUB(46), RXQUAL-SUB(7)</span><br><span style="color: hsl(120, 100%, 40%);">+#10 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 2e 2e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#10 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#11 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(46), RXQUAL-FULL(0), RXLEV-SUB(46), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#11 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 2e 2e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#11 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 2 (expected 2)</span><br><span style="color: hsl(120, 100%, 40%);">+#12 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(44), RXQUAL-FULL(0), RXLEV-SUB(44), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#12 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 2c 2c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#12 lchan_bs_pwr_ctrl() -> BS power reduction: 2 -> 4 (expected 4)</span><br><span style="color: hsl(120, 100%, 40%);">+#13 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(42), RXQUAL-FULL(0), RXLEV-SUB(42), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#13 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 2a 2a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#13 lchan_bs_pwr_ctrl() -> BS power reduction: 4 -> 6 (expected 6)</span><br><span style="color: hsl(120, 100%, 40%);">+#14 exec_power_step() <- State (re)set (current 0 dB, max 20 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+#15 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(120, 100%, 40%);">+#15 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#15 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#16 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(7), RXLEV-SUB(30), RXQUAL-SUB(7)</span><br><span style="color: hsl(120, 100%, 40%);">+#16 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1e 1e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#16 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 0 (expected 0)</span><br><span> Test case verdict: SUCCESS</span><br><span> </span><br><span> Starting test case 'TC_inval_dummy'</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/22080">change 22080</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bts/+/22080"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib3c740b9a0f3ba5dfb027e144dc13f456cb26ae2 </div>
<div style="display:none"> Gerrit-Change-Number: 22080 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>