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