Change in osmo-bsc[master]: power_control: make P_CON_INTERVAL parameter configurable

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/.

fixeria gerrit-no-reply at lists.osmocom.org
Mon Feb 8 11:00:09 UTC 2021


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

Change subject: power_control: make P_CON_INTERVAL parameter configurable
......................................................................

power_control: make P_CON_INTERVAL parameter configurable

Change-Id: I6e0fae81cc60f708e49d5eb8dfc0bbcad926b18f
Related: SYS#4918
---
M doc/manuals/chapters/power_control.adoc
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/bsc_vty.c
M src/osmo-bsc/bts_ipaccess_nanobts.c
M tests/power_ctrl.vty
5 files changed, 73 insertions(+), 4 deletions(-)

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



diff --git a/doc/manuals/chapters/power_control.adoc b/doc/manuals/chapters/power_control.adoc
index dbe2d13..4c1a275 100644
--- a/doc/manuals/chapters/power_control.adoc
+++ b/doc/manuals/chapters/power_control.adoc
@@ -88,6 +88,7 @@
 ...
   . l.  mode (static|dyn-bts) [reset]
   . l.  bs-power (static|dyn-max) <0-30>
+  . lv  ctrl-interval <0-31>
   . lv  step-size inc <2-6> red <2-4>
   . lv  rxlev-thresh lower <0-63> upper <0-63>
   . lv  rxqual-thresh lower <0-7> upper <0-7>
@@ -135,6 +136,27 @@
 and a fixed power reduction value in `static` mode.  In the later case, no
 attenuation (0 dB) is applied by default (full power).
 
+==== Power control interval
+
+Having requested a transmit power level, the MS/BS power control loop may optionally
+by suspended for a certain number of SACCH multiframes defined by VTY parameter
+`ctrl-interval`.  Given that SACCH is relatively slow and transmission of a data block
+takes 480 ms, suspension allows an observation of the effect of one power control
+decision before initiating the next one.
+
+----
+OsmoBSC(config-bs-power-ctrl)# ctrl-interval ?
+  <0-31>  P_CON_INTERVAL, in units of 2 SACCH periods (0.96 seconds)
+----
+
+By default, the suspension interval is set to 0 for both MS/BS power control loops,
+therefore the power control decision is taken every 480 ms (one SACCH block period).
+Setting `ctrl-interval` to 1 increases the interval to 960 ms, so basically every
+second Uplink SACCH block is skipped;  value 2 corresponds to the interval of
+1920 ms, so 3/4 received SACCH blocks are skipped.
+
+3GPP TS 45.008 briefly mentiones this parameter in table A.1 (P_Con_INTERVAL).
+
 ==== Power change step size
 
 In order to slow down the reactivity of the power control loop and thus make it more
@@ -302,7 +324,6 @@
 <4> Osmocom specific EWMA is applied to RxQual values with smoothing factor = 50% (beta=0.5).
 <5> RxQual: Hreqave and Hreqt values: 2 out of 3 SACCH blocks produce an averaged measurement.
 
-// TODO: Document P_Con_INTERVAL (not implemented yet)
 // TODO: Document other power control parameters:
 //		OsmoBSC(config-net-bts)# ms max power <0-40>
 //		OsmoBSC(config-net-bts-trx)# max_power_red <0-100>
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index edfae26..af1c8e8 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1346,6 +1346,9 @@
 	uint8_t inc_step_size_db; /* increasing direction */
 	uint8_t red_step_size_db; /* reducing direction */
 
+	/* Minimum interval between power level changes */
+	uint8_t ctrl_interval; /* 1 step is 2 SACCH periods */
+
 	/* Measurement averaging parameters for RxLev & RxQual */
 	struct gsm_power_ctrl_meas_params rxqual_meas;
 	struct gsm_power_ctrl_meas_params rxlev_meas;
diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c
index 567b168..26941e2 100644
--- a/src/osmo-bsc/bsc_vty.c
+++ b/src/osmo-bsc/bsc_vty.c
@@ -957,6 +957,8 @@
 		if (cp->dir == GSM_PWR_CTRL_DIR_DL)
 			cfg_out(" bs-power dyn-max %u%s", cp->bs_power_max_db, VTY_NEWLINE);
 
+		if (cp->ctrl_interval > 0)
+			cfg_out(" ctrl-interval %u%s", cp->ctrl_interval, VTY_NEWLINE);
 		cfg_out(" step-size inc %u red %u%s",
 			cp->inc_step_size_db, cp->red_step_size_db,
 			VTY_NEWLINE);
@@ -4938,6 +4940,21 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN_USRATTR(cfg_power_ctrl_ctrl_interval,
+	      cfg_power_ctrl_ctrl_interval_cmd,
+	      X(BSC_VTY_ATTR_VENDOR_SPECIFIC) |
+	      X(BSC_VTY_ATTR_NEW_LCHAN),
+	      "ctrl-interval <0-31>",
+	      "Set power control interval (for dynamic mode)\n"
+	      "P_CON_INTERVAL, in units of 2 SACCH periods (0.96 seconds)\n")
+{
+	struct gsm_power_ctrl_params *params = vty->index;
+
+	params->ctrl_interval = atoi(argv[0]);
+
+	return CMD_SUCCESS;
+}
+
 DEFUN_USRATTR(cfg_power_ctrl_step_size,
 	      cfg_power_ctrl_step_size_cmd,
 	      X(BSC_VTY_ATTR_VENDOR_SPECIFIC) |
@@ -7742,6 +7759,7 @@
 	install_node(&power_ctrl_node, dummy_config_write);
 	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_mode_cmd);
 	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_bs_power_cmd);
+	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_ctrl_interval_cmd);
 	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_step_size_cmd);
 	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_rxlev_thresh_cmd);
 	install_element(POWER_CTRL_NODE, &cfg_power_ctrl_rxqual_thresh_cmd);
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 7076908..16fa201 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -896,8 +896,8 @@
 	thresh_comp->p4 = cp->rxqual_meas.upper_cmp_p & 0x1f;
 	thresh_comp->n4 = cp->rxqual_meas.upper_cmp_n & 0x1f;
 
-	/* FIXME: TIMER_PWR_CON_INTERVAL (P_Con_INTERVAL) */
-	thresh_comp->pc_interval = 0; /* 0 .. 30 seconds */
+	/* Minimum interval between power level changes (P_CON_INTERVAL) */
+	thresh_comp->pc_interval = cp->ctrl_interval;
 
 	/* Change step limitations: POWER_{INC,RED}_STEP_SIZE */
 	thresh_comp->inc_step_size = cp->inc_step_size_db & 0x0f;
diff --git a/tests/power_ctrl.vty b/tests/power_ctrl.vty
index 7e4382a..ff387ce 100644
--- a/tests/power_ctrl.vty
+++ b/tests/power_ctrl.vty
@@ -29,6 +29,7 @@
 ...
   . l.  mode (static|dyn-bts) [reset]
   . l.  bs-power (static|dyn-max) <0-30>
+  . lv  ctrl-interval <0-31>
   . lv  step-size inc <2-6> red <2-4>
   . lv  rxlev-thresh lower <0-63> upper <0-63>
   . lv  rxqual-thresh lower <0-7> upper <0-7>
@@ -83,12 +84,23 @@
    mode dyn-bts
 ... !bs-power
 
+OsmoBSC(config-bs-power-ctrl)# ctrl-interval 31
+OsmoBSC(config-bs-power-ctrl)# show running-config
+...
+  bs-power-control
+...
+   ctrl-interval 31
+... !ctrl-interval
+  ms-power-control
+... !ctrl-interval
+
 OsmoBSC(config-bs-power-ctrl)# exit
 OsmoBSC(config-net-bts)# ms-power-control
 OsmoBSC(config-ms-power-ctrl)# list with-flags
 ...
   . l.  mode (static|dyn-bts) [reset]
   . l.  bs-power (static|dyn-max) <0-30>
+  . lv  ctrl-interval <0-31>
   . lv  step-size inc <2-6> red <2-4>
   . lv  rxlev-thresh lower <0-63> upper <0-63>
   . lv  rxqual-thresh lower <0-7> upper <0-7>
@@ -119,6 +131,20 @@
 OsmoBSC(config-ms-power-ctrl)# bs-power dyn-max 30
 % This command is only valid for 'bs-power-control' node
 
+OsmoBSC(config-ms-power-ctrl)# ctrl-interval 2
+OsmoBSC(config-ms-power-ctrl)# show running-config
+...
+  bs-power-control
+   mode dyn-bts
+...
+   ctrl-interval 31
+... !ctrl-interval
+  ms-power-control
+   mode dyn-bts
+...
+   ctrl-interval 2
+... !ctrl-interval
+
 OsmoBSC(config-ms-power-ctrl)# step-size inc 5 red 4
 % Power change step size must be an even number
 OsmoBSC(config-ms-power-ctrl)# step-size inc 2 red 3
@@ -131,11 +157,12 @@
 ...
   bs-power-control
    mode dyn-bts
-   bs-power dyn-max 30
+...
    step-size inc 4 red 2
 ...
   ms-power-control
    mode dyn-bts
+...
    step-size inc 6 red 4
 ...
 

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

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I6e0fae81cc60f708e49d5eb8dfc0bbcad926b18f
Gerrit-Change-Number: 22779
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
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/20210208/c5fd5682/attachment.htm>


More information about the gerrit-log mailing list