From 3c32cce0870b883663b7d3e8b0f2c313f736ac84 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 4 Oct 2021 17:25:11 +0200 Subject: 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 --- src/common/rsl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/common/rsl.c') 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 */ -- cgit v1.2.3