<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/22359">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: add test for inc / red step size limitations<br><br>Change-Id: Ic2d4e144b0319d86daa9fbe38727b892081f0c37<br>Related: SYS#4918<br>---<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>3 files changed, 189 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/power/bs_power_loop_test.c b/tests/power/bs_power_loop_test.c</span><br><span>index 7301b7f..5271324 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>@@ -56,6 +56,7 @@</span><br><span>     PWR_TEST_ST_IND_MEAS = 0,</span><br><span>    PWR_TEST_ST_IND_DUMMY,</span><br><span>       PWR_TEST_ST_SET_STATE,</span><br><span style="color: hsl(120, 100%, 40%);">+        PWR_TEST_ST_SET_STEP_SIZE,</span><br><span>   PWR_TEST_ST_SET_RXLEV_PARAMS,</span><br><span>        PWR_TEST_ST_ENABLE_DTXD,</span><br><span>     PWR_TEST_ST_DISABLE_DPC,</span><br><span>@@ -78,6 +79,11 @@</span><br><span>                        uint8_t rxlev_sub;</span><br><span>                   bool invalid;</span><br><span>                } meas;</span><br><span style="color: hsl(120, 100%, 40%);">+               /* Increase / reduce step size */</span><br><span style="color: hsl(120, 100%, 40%);">+             struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      uint8_t inc;</span><br><span style="color: hsl(120, 100%, 40%);">+                  uint8_t red;</span><br><span style="color: hsl(120, 100%, 40%);">+          } step_size;</span><br><span>         };</span><br><span>   /* Expected Tx power reduction */</span><br><span>    uint8_t exp_txred;</span><br><span>@@ -153,6 +159,12 @@</span><br><span>            printf("#%02u %s() <- Dynamic power control is disabled\n", n, __func__);</span><br><span>               lchan->bs_power_ctrl.dpc_params = NULL;</span><br><span>           return 0; /* we're done */</span><br><span style="color: hsl(120, 100%, 40%);">+        case PWR_TEST_ST_SET_STEP_SIZE:</span><br><span style="color: hsl(120, 100%, 40%);">+               printf("#%02u %s() <- Set step size: inc %u dB, red %u dB\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                   n, __func__, step->step_size.inc, step->step_size.red);</span><br><span style="color: hsl(120, 100%, 40%);">+          lchan->bs_dpc_params.inc_step_size_db = step->step_size.inc;</span><br><span style="color: hsl(120, 100%, 40%);">+            lchan->bs_dpc_params.red_step_size_db = step->step_size.red;</span><br><span style="color: hsl(120, 100%, 40%);">+            return 0; /* we're done */</span><br><span>       case PWR_TEST_ST_SET_RXLEV_PARAMS:</span><br><span>           printf("#%02u %s() <- (Re)set RxLev params (thresh %u .. %u, "</span><br><span>                                                     "averaging is %sabled)\n",</span><br><span>@@ -274,6 +286,60 @@</span><br><span>       { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred =  0 }, /* min */</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify that delta values never exceed the corresponding step size,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but still can be smaller than the step size if the target is close. */</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct power_test_step TC_inc_red_step_size[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Initial state: 0 dB, up to 20 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+        { .type = PWR_TEST_ST_SET_STATE,</span><br><span style="color: hsl(120, 100%, 40%);">+        .state = { .current = 0, .max = 2 * 10 } },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       { .type = PWR_TEST_ST_SET_STEP_SIZE,</span><br><span style="color: hsl(120, 100%, 40%);">+    .step_size = { .inc = 6, .red = 4 } },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* MS indicates high RxLev values (-50 dBm), red step is 4 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+      { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred =  4 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred =  8 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred = 12 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred = 16 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred = 20 }, /* max */</span><br><span style="color: hsl(120, 100%, 40%);">+  { .meas = DL_MEAS_FULL_SUB(0, 60),      .exp_txred = 20 }, /* max */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* MS indicates low RxLev values (-100 dBm), inc step is 6 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+      { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred = 14 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred =  8 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred =  2 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred =  0 }, /* min */</span><br><span style="color: hsl(120, 100%, 40%);">+  { .meas = DL_MEAS_FULL_SUB(0, 10),      .exp_txred =  0 }, /* min */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Reset state: current 10 dB, up to 20 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .type = PWR_TEST_ST_SET_STATE,</span><br><span style="color: hsl(120, 100%, 40%);">+        .state = { .current = 10, .max = 2 * 10 } },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Let's say the current value is now 1 dB greater than the target (current red 10 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 1),       .exp_txred = 10 + 1 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 0),       .exp_txred = 10 + 1 },</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Let's say the current value is now 2 dB greater than the target (current red 11 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 2),       .exp_txred = 11 + 2 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 0),       .exp_txred = 11 + 2 },</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Let's say the current value is now 3 dB greater than the target (current red 13 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 3),       .exp_txred = 13 + 3 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET + 0),       .exp_txred = 13 + 3 },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Reset state: current 10 dB, up to 20 dB */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .type = PWR_TEST_ST_SET_STATE,</span><br><span style="color: hsl(120, 100%, 40%);">+        .state = { .current = 10, .max = 2 * 10 } },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Let's say the current value is now 1 dB lower than the target (current red 10 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+   { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 1),       .exp_txred = 10 - 1 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 0),       .exp_txred = 10 - 1 },</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Let's say the current value is now 3 dB lower than the target (current red 9 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 3),       .exp_txred = 9 - 3 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 0),       .exp_txred = 9 - 3 },</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Let's say the current value is now 5 dB lower than the target (current red 6 dB) */</span><br><span style="color: hsl(120, 100%, 40%);">+    { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 5),       .exp_txred = 6 - 5 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { .meas = DL_MEAS_FULL_SUB(0, PWR_TEST_RXLEV_TARGET - 0),       .exp_txred = 6 - 5 },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Verify that the logic picks the 'SUB' values in DTXd mode. */</span><br><span> static const struct power_test_step TC_dtxd_mode[] = {</span><br><span>    /* Initial state: 0 dB, up to 20 dB */</span><br><span>@@ -417,6 +483,7 @@</span><br><span>         exec_test(TC_fixed_mode);</span><br><span>    exec_test(TC_rxlev_target);</span><br><span>  exec_test(TC_rxlev_max_min); /* FIXME */</span><br><span style="color: hsl(120, 100%, 40%);">+      exec_test(TC_inc_red_step_size);</span><br><span> </span><br><span>         exec_test(TC_dtxd_mode);</span><br><span>     exec_test(TC_rxqual_ber);</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 2b1e0a9..c3fb816 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>@@ -44,6 +44,52 @@</span><br><span> (bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 0 dB (maximum 20 dB, delta -4 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span> (bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0), DTx is disabled => using FULL</span><br><span> (bts=0,trx=0,ts=0,ss=0) Keeping Downlink attenuation at 0 dB (maximum 20 dB, delta -4 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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 -> 4 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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 -> 8 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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: 8 -> 12 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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: 12 -> 16 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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: 16 -> 20 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), 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) Keeping Downlink attenuation at 20 dB (maximum 20 dB, delta 4 dB, RxLev current 60 (-50 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), 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: 20 -> 14 dB (maximum 20 dB, delta -6 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), 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: 14 -> 8 dB (maximum 20 dB, delta -6 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), 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: 8 -> 2 dB (maximum 20 dB, delta -6 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), 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 -> 0 dB (maximum 20 dB, delta -6 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), 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) Keeping Downlink attenuation at 0 dB (maximum 20 dB, delta -6 dB, RxLev current 10 (-100 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(31), RXQUAL-FULL(0), RXLEV-SUB(31), 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: 10 -> 11 dB (maximum 20 dB, delta 1 dB, RxLev current 31 (-79 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 11 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(32), RXQUAL-FULL(0), RXLEV-SUB(32), 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: 11 -> 13 dB (maximum 20 dB, delta 2 dB, RxLev current 32 (-78 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 13 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(33), RXQUAL-FULL(0), RXLEV-SUB(33), 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: 13 -> 16 dB (maximum 20 dB, delta 3 dB, RxLev current 33 (-77 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 16 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(29), RXQUAL-FULL(0), RXLEV-SUB(29), 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: 10 -> 9 dB (maximum 20 dB, delta -1 dB, RxLev current 29 (-81 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 9 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(27), RXQUAL-FULL(0), RXLEV-SUB(27), 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: 9 -> 6 dB (maximum 20 dB, delta -3 dB, RxLev current 27 (-83 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 6 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</span><br><span style="color: hsl(120, 100%, 40%);">+(bts=0,trx=0,ts=0,ss=0) Rx DL Measurement Report: RXLEV-FULL(25), RXQUAL-FULL(0), RXLEV-SUB(25), 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: 6 -> 1 dB (maximum 20 dB, delta -5 dB, RxLev current 25 (-85 dBm), thresholds 30 .. 30)</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(0), RXLEV-SUB(30), 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) Keeping Downlink attenuation at 1 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</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 0 dB (maximum 20 dB, delta 0 dB, RxLev current 30 (-80 dBm), thresholds 30 .. 30)</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 19ec249..4371c9d 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>@@ -97,6 +97,82 @@</span><br><span> #19 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 0 (expected 0)</span><br><span> Test case verdict: SUCCESS</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+Starting test case 'TC_inc_red_step_size'</span><br><span style="color: hsl(120, 100%, 40%);">+#00 exec_power_step() <- State (re)set (current 0 dB, max 20 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+#01 exec_power_step() <- Set step size: inc 6 dB, red 4 dB</span><br><span style="color: hsl(120, 100%, 40%);">+#02 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#02 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#02 lchan_bs_pwr_ctrl() -> BS power reduction: 0 -> 4 (expected 4)</span><br><span style="color: hsl(120, 100%, 40%);">+#03 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#03 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 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: 4 -> 8 (expected 8)</span><br><span style="color: hsl(120, 100%, 40%);">+#04 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#04 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 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: 8 -> 12 (expected 12)</span><br><span style="color: hsl(120, 100%, 40%);">+#05 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#05 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 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: 12 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#06 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#06 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 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 -> 20 (expected 20)</span><br><span style="color: hsl(120, 100%, 40%);">+#07 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(60), RXQUAL-FULL(0), RXLEV-SUB(60), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#07 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 3c 3c 00 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: 20 -> 20 (expected 20)</span><br><span style="color: hsl(120, 100%, 40%);">+#08 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#08 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 0a 0a 00 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: 20 -> 14 (expected 14)</span><br><span style="color: hsl(120, 100%, 40%);">+#09 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#09 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 0a 0a 00 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: 14 -> 8 (expected 8)</span><br><span style="color: hsl(120, 100%, 40%);">+#10 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#10 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 0a 0a 00 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: 8 -> 2 (expected 2)</span><br><span style="color: hsl(120, 100%, 40%);">+#11 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#11 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 0a 0a 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: 2 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#12 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(10), RXQUAL-FULL(0), RXLEV-SUB(10), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#12 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 0a 0a 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: 0 -> 0 (expected 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#13 exec_power_step() <- State (re)set (current 10 dB, max 20 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+#14 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(31), RXQUAL-FULL(0), RXLEV-SUB(31), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#14 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1f 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#14 lchan_bs_pwr_ctrl() -> BS power reduction: 10 -> 11 (expected 11)</span><br><span style="color: hsl(120, 100%, 40%);">+#15 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#15 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(120, 100%, 40%);">+#15 lchan_bs_pwr_ctrl() -> BS power reduction: 11 -> 11 (expected 11)</span><br><span style="color: hsl(120, 100%, 40%);">+#16 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(32), RXQUAL-FULL(0), RXLEV-SUB(32), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#16 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 20 20 00 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: 11 -> 13 (expected 13)</span><br><span style="color: hsl(120, 100%, 40%);">+#17 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#17 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(120, 100%, 40%);">+#17 lchan_bs_pwr_ctrl() -> BS power reduction: 13 -> 13 (expected 13)</span><br><span style="color: hsl(120, 100%, 40%);">+#18 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(33), RXQUAL-FULL(0), RXLEV-SUB(33), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#18 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 21 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#18 lchan_bs_pwr_ctrl() -> BS power reduction: 13 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#19 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#19 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(120, 100%, 40%);">+#19 lchan_bs_pwr_ctrl() -> BS power reduction: 16 -> 16 (expected 16)</span><br><span style="color: hsl(120, 100%, 40%);">+#20 exec_power_step() <- State (re)set (current 10 dB, max 20 dB)</span><br><span style="color: hsl(120, 100%, 40%);">+#21 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(29), RXQUAL-FULL(0), RXLEV-SUB(29), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#21 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1d 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#21 lchan_bs_pwr_ctrl() -> BS power reduction: 10 -> 9 (expected 9)</span><br><span style="color: hsl(120, 100%, 40%);">+#22 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#22 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(120, 100%, 40%);">+#22 lchan_bs_pwr_ctrl() -> BS power reduction: 9 -> 9 (expected 9)</span><br><span style="color: hsl(120, 100%, 40%);">+#23 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(27), RXQUAL-FULL(0), RXLEV-SUB(27), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#23 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 1b 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#23 lchan_bs_pwr_ctrl() -> BS power reduction: 9 -> 6 (expected 6)</span><br><span style="color: hsl(120, 100%, 40%);">+#24 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#24 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(120, 100%, 40%);">+#24 lchan_bs_pwr_ctrl() -> BS power reduction: 6 -> 6 (expected 6)</span><br><span style="color: hsl(120, 100%, 40%);">+#25 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(25), RXQUAL-FULL(0), RXLEV-SUB(25), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#25 lchan_bs_pwr_ctrl() <- UL SACCH: 06 15 19 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+#25 lchan_bs_pwr_ctrl() -> BS power reduction: 6 -> 1 (expected 1)</span><br><span style="color: hsl(120, 100%, 40%);">+#26 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span style="color: hsl(120, 100%, 40%);">+#26 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(120, 100%, 40%);">+#26 lchan_bs_pwr_ctrl() -> BS power reduction: 1 -> 1 (expected 1)</span><br><span style="color: hsl(120, 100%, 40%);">+Test case verdict: SUCCESS</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Starting test case 'TC_dtxd_mode'</span><br><span> #00 exec_power_step() <- State (re)set (current 0 dB, max 20 dB)</span><br><span> #01 enc_meas_rep() -> Measurement Results (valid): RXLEV-FULL(30), RXQUAL-FULL(0), RXLEV-SUB(30), RXQUAL-SUB(0)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/22359">change 22359</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/+/22359"/><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: Ic2d4e144b0319d86daa9fbe38727b892081f0c37 </div>
<div style="display:none"> Gerrit-Change-Number: 22359 </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>