aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/rsl.c
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-10-04 17:25:11 +0200
committerpespin <pespin@sysmocom.de>2021-10-07 10:47:00 +0000
commit3c32cce0870b883663b7d3e8b0f2c313f736ac84 (patch)
tree91c2975c2b4d5e56e1ea0baec3fdb4fe726d2acb /src/common/rsl.c
parent77e014f0612960c1b2cf04401a726362cae962c4 (diff)
MS Power Control Loop: Use P_CON_INTERVAL=2 by default
Have a more stable loop with less temporary oscillations at the expense of increased reaction time. 4 SACCH blocks (P_CON_INTERVAL=2) is the minimum interval to get stable measurements for the last requested MS Power level. With P_CON_INTERVAL=1, are also made during a period with stable power being use to transmit, but the MS Power level used (and announced in MR) is not the last one requested by the BTS, but the one requested in the previous loop iteration. This can make the MS and BTS bounce 2 values forth and back, and create some temporary oscillation. See osmo-bsc User manual section "Power Control" for more information. Related: SYS#5371 Change-Id: I91c505447f68714239a4f033d4f06e91893df201
Diffstat (limited to 'src/common/rsl.c')
-rw-r--r--src/common/rsl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/common/rsl.c b/src/common/rsl.c
index c73b093d..89c3b962 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -1111,7 +1111,8 @@ static int rsl_rx_meas_preproc_dft(struct gsm_bts_trx *trx, struct msgb *msg)
/* TLV (O) BS Power Parameters IE */
if ((ie = TLVP_GET(&tp, RSL_IE_BS_POWER_PARAM)) != NULL) {
/* Allocate a new chunk and initialize with default values */
- params = talloc_memdup(trx, &power_ctrl_params_def, sizeof(*params));
+ params = talloc(trx, struct gsm_power_ctrl_params);
+ power_ctrl_params_def_reset(params, true);
if (ie->len && parse_power_ctrl_params(params, ie->val, ie->len) == 0) {
/* Initially it points to the global defaults */
@@ -1128,7 +1129,8 @@ static int rsl_rx_meas_preproc_dft(struct gsm_bts_trx *trx, struct msgb *msg)
/* TLV (O) MS Power Parameters IE */
if ((ie = TLVP_GET(&tp, RSL_IE_MS_POWER_PARAM)) != NULL) {
/* Allocate a new chunk and initialize with default values */
- params = talloc_memdup(trx, &power_ctrl_params_def, sizeof(*params));
+ params = talloc(trx, struct gsm_power_ctrl_params);
+ power_ctrl_params_def_reset(params, false);
if (ie->len && parse_power_ctrl_params(params, ie->val, ie->len) == 0) {
/* Initially it points to the global defaults */