Change in osmo-bsc[master]: MS Power Control Loop: Use P_CON_INTERVAL=2 by default

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Thu Oct 7 10:44:44 UTC 2021


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/25681 )

Change subject: MS Power Control Loop: Use P_CON_INTERVAL=2 by default
......................................................................

MS Power Control Loop: Use P_CON_INTERVAL=2 by default

Increase the reaction time at the expense of more stable loop with less
temporary oscillations.

See updated user manual documentation in this commit for a larger
description.

Related: SYS#5371
Change-Id: I46be244a5e01a74086e3a977ec3ea139742a0074
---
M doc/manuals/chapters/power_control.adoc
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/bts.c
M src/osmo-bsc/bts_vty.c
M src/osmo-bsc/gsm_data.c
M tests/power_ctrl.vty
6 files changed, 69 insertions(+), 33 deletions(-)

Approvals:
  fixeria: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/doc/manuals/chapters/power_control.adoc b/doc/manuals/chapters/power_control.adoc
index 51a38cb..f94dd2e 100644
--- a/doc/manuals/chapters/power_control.adoc
+++ b/doc/manuals/chapters/power_control.adoc
@@ -168,6 +168,23 @@
   <0-31>  P_CON_INTERVAL, in units of 2 SACCH periods (0.96 seconds)
 ----
 
+3GPP TS 45.008 briefly mentions this parameter in table A.1 (`P_Con_INTERVAL`).
+
+A small time graph is depicted below for better understanding of the meaning of
+values for this parameter, since it is not obvious at all.
+
+.Example: Suspension interval accomplished by several values of P_CON_INTERVAL
+----
+|<-->| - one SACCH multi-frame period
+|    |
+|----|----|----|----|----|----|----|----|----> SACCH multi-frames
+a) *    *    *    *    *    *    *    *    *      P_CON_INTERVAL=0 (0.48 s)
+b) *         *         *         *         *      P_CON_INTERVAL=1 (0.96 s)
+c) *                   *                   *      P_CON_INTERVAL=2 (1.92 s, default)
+d) *                             *                P_CON_INTERVAL=3 (2.88 s)
+e) *                                       *      P_CON_INTERVAL=4 (3.84 s)
+----
+
 The value to use for this parameter is closely related to that of VTY option
 `step-size inc <2-6> red <2-4>`, which configures the maximum step (in dB) at
 which the MS Power can be requested to changed when the MS Power Control Loop is
@@ -181,31 +198,42 @@
 By default, increment `step-size` is set to 4 dB and the decrement `step-size`
 is set to 2 dB, hence the MS requiring `4 * 60 = 240` milliseconds. That's less
 than 1 measurement period (480 ms), hence only the first measurement period
-needs to be skipped. Therefore, the suspension interval is set to 1 for both
-MS/BS power control loops, and so the power control decision is taken every 960
-ms (every second SACCH block period).
+needs to be skipped. Therefore, a suspension interval of 1 for both
+MS/BS power control loops can be used, and so the power control decision is
+taken every 960 ms (every second SACCH block period).
+
+However, OsmoBSC currently uses a default value of `ctrl-interval 2`
+(`P_CON_INTERVAL=2`, 1.92s, 3/4 received SACCH blocks are skipped), because
+that's the minimum amount of frames required for one loop step to run
+completely, that is: BTS fetching measurements and transmitting the new MS Power
+Level, then the MS retrieving the MS Power Level, transmitting with that exact
+MS Power level during the entire period and then finally submitting the
+Measurement Result containing that same MS Power Level. Using a value of
+`P_CON_INTERVAL=1` also provides good results, but in that case the loop tends
+to produce more temporary power oscillations due to the loop acting on periods
+where an older (earlier requested) MS Power level is still in use (and
+announced) by the MS.
+
+.Example: Timeline showing propagation of a new MS Power Level (P_CON_INTERVAL=2)
+----
+|<------------->| - one SACCH multi-frame period
+| 1             | 2             | 3             | 4             | ---> SACCH multi-frames
+|SA0|SA1|SA2|SA3|SA0|SA1|SA2|SA3|SA0|SA1|SA2|SA3|SA0|SA1|SA2|SA3| ---> SACCH bursts
+|<1>|...|...|<2>|<3>|...|...|<4>|<5>|...|...|<6>|<7>|...|...|<8>|
+----
+<1> BTS sends new requested MS Power Level in header of SACCH
+<2> MS receives SACCH block (new MS Power Level)
+<3> MS starts ramping towards new MS Power Level (hence potentially variable power used over the period)
+<4> MS should already be in desired MS Power Level (for step increments of less-or-equal than 8 dB)
+<5> MS starts transmitting at desired MS Power level constantly (ramping is over)
+<6> MS builds Measurement Results to be sent on next SACCH period
+<7> MS sends the Measurement Results of the previous multiframe to the BTS
+<8> BTS receives the Measurement Results from MS on SACCH, starts next loop iteration
+
 
 Setting `ctrl-interval` to 0 increases the interval to 480 ms, so basically no
 SACCH block is skipped and MS Power Control loop is triggered upon receival of
-every UL SACCH block. Value 2 corresponds to the interval of 1920 ms, so 3/4
-received SACCH blocks are skipped.
-
-3GPP TS 45.008 briefly mentions this parameter in table A.1 (`P_Con_INTERVAL`).
-
-A small time graph is depicted below for better understanding of the meaning of
-values for this parameter, since it is not obvious at all.
-
-.Example: Suspension interval accomplished by several values of P_CON_INTERVAL
-----
-|<-->| - one SACCH multi-frame period
-|    |
-|----|----|----|----|----|----|----|----|----> SACCH multi-frames
-a) *    *    *    *    *    *    *    *    *      P_CON_INTERVAL=0 (0.48 s)
-b) *         *         *         *         *      P_CON_INTERVAL=1 (0.96 s, default)
-c) *                   *                   *      P_CON_INTERVAL=2 (1.92 s)
-d) *                             *                P_CON_INTERVAL=3 (2.88 s)
-e) *                                       *      P_CON_INTERVAL=4 (3.84 s)
-----
+every UL SACCH block.
 
 ==== Power change step size
 
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 99d1d18..cb56028 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1395,6 +1395,8 @@
 };
 
 extern const struct gsm_power_ctrl_params power_ctrl_params_def;
+void power_ctrl_params_def_reset(struct gsm_power_ctrl_params *params,
+				 enum gsm_power_ctrl_dir dir);
 
 /* Interference Measurement Parameters */
 struct gsm_interf_meas_params {
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index c0d6634..3f782c1 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -351,12 +351,10 @@
 	bts->repeated_acch_policy.rxqual = 4;
 
 	/* MS Power Control parameters (defaults) */
-	bts->ms_power_ctrl = power_ctrl_params_def;
-	bts->ms_power_ctrl.dir = GSM_PWR_CTRL_DIR_UL;
+	power_ctrl_params_def_reset(&bts->ms_power_ctrl, GSM_PWR_CTRL_DIR_UL);
 
 	/* BS Power Control parameters (defaults) */
-	bts->bs_power_ctrl = power_ctrl_params_def;
-	bts->bs_power_ctrl.dir = GSM_PWR_CTRL_DIR_DL;
+	power_ctrl_params_def_reset(&bts->bs_power_ctrl, GSM_PWR_CTRL_DIR_DL);
 
 	/* Interference Measurement Parameters (defaults) */
 	bts->interf_meas_params_cfg = interf_meas_params_def;
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index 460e14a..a05d965 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -2927,9 +2927,7 @@
 	/* Do we need to reset? */
 	if (argc > 1) {
 		vty_out(vty, "%% Reset to default parameters%s", VTY_NEWLINE);
-		enum gsm_power_ctrl_dir dir = params->dir;
-		*params = power_ctrl_params_def;
-		params->dir = dir;
+		power_ctrl_params_def_reset(params, params->dir);
 	}
 
 	if (strcmp(argv[0], "static") == 0)
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index c8108e8..5d57072 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -1333,6 +1333,16 @@
 	},
 };
 
+void power_ctrl_params_def_reset(struct gsm_power_ctrl_params *params,
+				 enum gsm_power_ctrl_dir dir)
+{
+	*params = power_ctrl_params_def;
+	params->dir = dir;
+	if (dir == GSM_PWR_CTRL_DIR_UL)
+		/* Trigger loop every fourth SACCH block (1.92s). TS 45.008 sec 4.7.1: */
+		params->ctrl_interval = 2;
+}
+
 enum rsl_cmod_spd chan_mode_to_rsl_cmod_spd(enum gsm48_chan_mode chan_mode)
 {
 	switch (gsm48_chan_mode_to_non_vamos(chan_mode)) {
diff --git a/tests/power_ctrl.vty b/tests/power_ctrl.vty
index 9747ec2..374002d 100644
--- a/tests/power_ctrl.vty
+++ b/tests/power_ctrl.vty
@@ -7,7 +7,7 @@
    mode static
   ms-power-control
    mode dyn-bts
-   ctrl-interval 1
+   ctrl-interval 2
    step-size inc 4 red 2
    rxlev-thresh lower 32 upper 38
    rxlev-thresh-comp lower 10 12 upper 19 20
@@ -102,7 +102,7 @@
 ...
   ms-power-control
 ...
-   ctrl-interval 1
+   ctrl-interval 2
 ...
 
 OsmoBSC(config-bs-power-ctrl)# exit
@@ -137,7 +137,7 @@
 ...
   ms-power-control
    mode dyn-bts
-   ctrl-interval 1
+   ctrl-interval 2
    step-size inc 4 red 2
    rxlev-thresh lower 32 upper 38
    rxlev-thresh-comp lower 10 12 upper 19 20
@@ -296,7 +296,7 @@
    mode static
   ms-power-control
    mode dyn-bts
-   ctrl-interval 1
+   ctrl-interval 2
    step-size inc 4 red 2
    rxlev-thresh lower 32 upper 38
    rxlev-thresh-comp lower 10 12 upper 19 20

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/25681
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I46be244a5e01a74086e3a977ec3ea139742a0074
Gerrit-Change-Number: 25681
Gerrit-PatchSet: 5
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211007/f3942d3c/attachment.htm>


More information about the gerrit-log mailing list