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.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/25611 )
Change subject: MS Power Control Loop: Allow Turn off/on C/I independent from value setting
......................................................................
MS Power Control Loop: Allow Turn off/on C/I independent from value setting
Improve the current VTY support to allow enabling/disabling C/I logic
independent from value setting. This way C/I support can be quickly
disabled & enabled.
Reminder: changing power parameters still require VTY Command "bts NR
resend-power-control-defaults" to be excuted prior to new parameters
being applied on the BTS.
Related: SYS#4917
Change-Id: Id1224c2d9a52db2ed805c49e048d3086ed0167f5
---
M doc/manuals/chapters/power_control.adoc
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/bts_osmobts.c
M src/osmo-bsc/bts_vty.c
M src/osmo-bsc/gsm_data.c
M tests/power_ctrl.vty
6 files changed, 126 insertions(+), 65 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/11/25611/1
diff --git a/doc/manuals/chapters/power_control.adoc b/doc/manuals/chapters/power_control.adoc
index bc112aa..51a38cb 100644
--- a/doc/manuals/chapters/power_control.adoc
+++ b/doc/manuals/chapters/power_control.adoc
@@ -33,6 +33,7 @@
other hand, OsmoBTS may support some extra parameters coming in Osmocom specific
IEs not supported by nanoBTS, such as those configuring C/I measurement thresholds.
+[[apply_pwr_ctrl]]
==== When the parameters come into effect?
It depends on how the power control parameters are signaled to the BTS. If a given
@@ -337,21 +338,24 @@
bts 0
ms-power-control
mode dyn-bts <1>
- ci-thresh amr-fr lower 7 upper 11 <2>
- ci-thresh-comp amr-fr lower 2 10 <3> upper 3 4 <4>
+ ci-thresh amr-fr enable <2>
+ ci-thresh amr-fr lower 7 upper 11 <3>
+ ci-thresh-comp amr-fr lower 2 10 <4> upper 3 4 <5>
----
<1> MS power control is to be performed by the BTS autonomously.
-<2> L_CI_AMR_FR_XX_P=7, U_CI_AMR_FR_XX_P=11.
-<3> P0=2 out of N1=10 averages < L_CI_AMR_FR_XX_P => increase power.
-<4> P1=3 out of N2=4 averages > U_CI_AMR_FR_XX_P => decrease power.
+<2> MS power control loop should take C/I into account.
+<3> L_CI_AMR_FR_XX_P=7, U_CI_AMR_FR_XX_P=11.
+<4> P0=2 out of N1=10 averages < L_CI_AMR_FR_XX_P => increase power.
+<5> P1=3 out of N2=4 averages > U_CI_AMR_FR_XX_P => decrease power.
NOTE: The BSC can instruct a BTS to disable C/I related logic in its
autonomous MS Power Control Loop for a given channel type (hence not taking C/I
measurements into account) by means of setting both related LOWER_CMP_N and
UPPER_CMP_N parameters to zero (see _ci-thresh-comp_ VTY command). For the sake
of easing configuration, a placeholder VTY command to disable C/I for all
-channel types is available under VTY node _ms-power-control_ as *_ci-thresh-comp
-disable all_*.
+channel types is available under VTY node _ms-power-control_ as *_ci-thresh
+all disable_*. Afterwards, the new configuration must be deployed to the target
+BTS (see <<apply_pwr_ctrl>>).
==== Measurement averaging process
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index b166146..1fd7015 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1289,6 +1289,9 @@
/* MS/BS Power related measurement parameters */
struct gsm_power_ctrl_meas_params {
+ /* Are this measurement paremeters to be taken into account by loop? */
+ bool enabled;
+
/* Thresholds (see 3GPP TS 45.008, section A.3.2.1) */
uint8_t lower_thresh; /* lower (decreasing) direction */
uint8_t upper_thresh; /* upper (increasing) direction */
diff --git a/src/osmo-bsc/bts_osmobts.c b/src/osmo-bsc/bts_osmobts.c
index 5007d2b..5c535be 100644
--- a/src/osmo-bsc/bts_osmobts.c
+++ b/src/osmo-bsc/bts_osmobts.c
@@ -112,8 +112,15 @@
ie_len = msgb_tl_put(msg, RSL_IPAC_EIE_OSMO_MS_PWR_CTL);
osmo_thresh = (struct osmo_preproc_pc_thresh *) msgb_put(msg, sizeof(*osmo_thresh));
#define ENC_THRESH_CI(TYPE) \
- osmo_thresh->l_##TYPE = cp->TYPE##_meas.lower_thresh; \
- osmo_thresh->u_##TYPE = cp->TYPE##_meas.upper_thresh
+ do { \
+ if (cp->TYPE##_meas.enabled) { \
+ osmo_thresh->l_##TYPE = cp->TYPE##_meas.lower_thresh; \
+ osmo_thresh->u_##TYPE = cp->TYPE##_meas.upper_thresh; \
+ } else { \
+ osmo_thresh->l_##TYPE = 0; \
+ osmo_thresh->u_##TYPE = 0; \
+ } \
+ } while (0)
ENC_THRESH_CI(ci_fr);
ENC_THRESH_CI(ci_hr);
ENC_THRESH_CI(ci_amr_fr);
@@ -128,10 +135,19 @@
ie_len = msgb_tl_put(msg, RSL_IPAC_EIE_OSMO_PC_THRESH_COMP);
osmo_thresh_comp = (struct osmo_preproc_pc_comp *) msgb_put(msg, sizeof(*osmo_thresh_comp));
#define ENC_THRESH_CI(TYPE) \
- osmo_thresh_comp->TYPE.lower_p = cp->TYPE##_meas.lower_cmp_p & 0x1f; \
- osmo_thresh_comp->TYPE.lower_n = cp->TYPE##_meas.lower_cmp_n & 0x1f; \
- osmo_thresh_comp->TYPE.upper_p = cp->TYPE##_meas.upper_cmp_p & 0x1f; \
- osmo_thresh_comp->TYPE.upper_n = cp->TYPE##_meas.upper_cmp_n & 0x1f
+ do { \
+ if (cp->TYPE##_meas.enabled) { \
+ osmo_thresh_comp->TYPE.lower_p = cp->TYPE##_meas.lower_cmp_p & 0x1f; \
+ osmo_thresh_comp->TYPE.lower_n = cp->TYPE##_meas.lower_cmp_n & 0x1f; \
+ osmo_thresh_comp->TYPE.upper_p = cp->TYPE##_meas.upper_cmp_p & 0x1f; \
+ osmo_thresh_comp->TYPE.upper_n = cp->TYPE##_meas.upper_cmp_n & 0x1f; \
+ } else { \
+ osmo_thresh_comp->TYPE.lower_p = 0; \
+ osmo_thresh_comp->TYPE.lower_n = 0; \
+ osmo_thresh_comp->TYPE.upper_p = 0; \
+ osmo_thresh_comp->TYPE.upper_n = 0; \
+ } \
+ } while (0)
ENC_THRESH_CI(ci_fr);
ENC_THRESH_CI(ci_hr);
ENC_THRESH_CI(ci_amr_fr);
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index 7a502d7..fb11520 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -3093,6 +3093,7 @@
}
#define VTY_CMD_CI_TYPE "(fr-efr|hr|amr-fr|amr-hr|sdcch|gprs)"
+#define VTY_CMD_CI_OR_ALL_TYPE "(fr-efr|hr|amr-fr|amr-hr|sdcch|gprs|all)"
#define VTY_DESC_CI_TYPE \
"Channel Type FR/EFR\n" \
"Channel Type HR\n" \
@@ -3100,6 +3101,8 @@
"Channel Type AMR HR\n" \
"Channel Type SDCCH\n" \
"Channel Type (E)GPRS\n"
+#define VTY_DESC_CI_OR_ALL_TYPE VTY_DESC_CI_TYPE "All Channel Types\n"
+
static struct gsm_power_ctrl_meas_params *ci_thresh_by_conn_type(struct gsm_power_ctrl_params *params, const char *type)
{
if (!strcmp(type, "fr-efr"))
@@ -3155,6 +3158,35 @@
return CMD_SUCCESS;
}
+DEFUN_USRATTR(cfg_power_ctrl_ci_thresh_disable,
+ cfg_power_ctrl_ci_thresh_disable_cmd,
+ X(BSC_VTY_ATTR_VENDOR_SPECIFIC) |
+ X(BSC_VTY_ATTR_NEW_LCHAN),
+ "ci-thresh " VTY_CMD_CI_OR_ALL_TYPE " (enable|disable)",
+ "Set target C/I thresholds (for dynamic mode), only available in ms-power-control\n"
+ VTY_DESC_CI_OR_ALL_TYPE
+ "Enable C/I comparison in control loop\n"
+ "Disable C/I comparison in control loop\n")
+{
+ struct gsm_power_ctrl_params *params = vty->index;
+
+ bool enable = strcmp(argv[1], "enable") == 0;
+
+ if (strcmp(argv[0], "all") == 0) {
+ params->ci_fr_meas.enabled = enable;
+ params->ci_hr_meas.enabled = enable;
+ params->ci_amr_fr_meas.enabled = enable;
+ params->ci_amr_hr_meas.enabled = enable;
+ params->ci_sdcch_meas.enabled = enable;
+ params->ci_gprs_meas.enabled = enable;
+ } else {
+ struct gsm_power_ctrl_meas_params *meas_params = ci_thresh_by_conn_type(params, argv[0]);
+ meas_params->enabled = enable;
+ }
+
+ return CMD_SUCCESS;
+}
+
#define POWER_CONTROL_MEAS_THRESH_COMP_CMD(meas) \
meas " lower <0-31> <0-31> upper <0-31> <0-31>"
#define POWER_CONTROL_MEAS_THRESH_COMP_DESC(meas, opt_param, lp, ln, up, un) \
@@ -3272,35 +3304,6 @@
return CMD_SUCCESS;
}
-DEFUN_USRATTR(cfg_power_ctrl_ci_thresh_comp_disable,
- cfg_power_ctrl_ci_thresh_comp_disable_cmd,
- X(BSC_VTY_ATTR_VENDOR_SPECIFIC) |
- X(BSC_VTY_ATTR_NEW_LCHAN),
- "ci-thresh-comp disable all",
- "Set Carrier-to_interference (C/I) threshold comparators (for dynamic mode)\n"
- "Disable C/I comparison in control loop (sets LOWER_CMP_N and UPPER_CMP_N to zero)\n"
- "Disable C/I comparison for all channel types\n")
-{
- struct gsm_power_ctrl_params *params = vty->index;
-
-#define DISABLE_MEAS_PC(PARAMS, TYPE) \
- (PARAMS)->TYPE##_meas.lower_cmp_p = 0; \
- (PARAMS)->TYPE##_meas.lower_cmp_n = 0; \
- (PARAMS)->TYPE##_meas.upper_cmp_p = 0; \
- (PARAMS)->TYPE##_meas.upper_cmp_n = 0
-
- DISABLE_MEAS_PC(params, ci_fr);
- DISABLE_MEAS_PC(params, ci_hr);
- DISABLE_MEAS_PC(params, ci_amr_fr);
- DISABLE_MEAS_PC(params, ci_amr_hr);
- DISABLE_MEAS_PC(params, ci_sdcch);
- DISABLE_MEAS_PC(params, ci_gprs);
-
-#undef DISABLE_MEAS_PC
-
- return CMD_SUCCESS;
-}
-
#define POWER_CONTROL_MEAS_AVG_CMD \
"(rxlev-avg|rxqual-avg)"
#define POWER_CONTROL_MEAS_AVG_DESC \
@@ -3898,6 +3901,12 @@
const struct gsm_power_ctrl_meas_params *mp,
const char *param, const char *param2)
{
+ if (strcmp(param, "ci") == 0) {
+ cfg_out("%s-thresh%s %s%s",
+ param, param2, mp->enabled ? "enable" : "disable",
+ VTY_NEWLINE);
+ }
+
cfg_out("%s-thresh%s lower %u upper %u%s",
param, param2, mp->lower_thresh, mp->upper_thresh,
VTY_NEWLINE);
@@ -3932,6 +3941,7 @@
}
static void config_write_power_ctrl(struct vty *vty, unsigned int indent,
+ const struct gsm_bts *bts,
const struct gsm_power_ctrl_params *cp)
{
const char *node_name;
@@ -3965,7 +3975,7 @@
/* Measurement processing / averaging parameters */
config_write_power_ctrl_meas(vty, indent + 1, &cp->rxlev_meas, "rxlev", "");
config_write_power_ctrl_meas(vty, indent + 1, &cp->rxqual_meas, "rxqual", "");
- if (cp->dir == GSM_PWR_CTRL_DIR_UL) {
+ if (cp->dir == GSM_PWR_CTRL_DIR_UL && is_osmobts(bts)) {
config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_fr_meas, "ci", " fr-efr");
config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_hr_meas, "ci", " hr");
config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_amr_fr_meas, "ci", " amr-fr");
@@ -4285,8 +4295,8 @@
}
/* BS/MS Power Control parameters */
- config_write_power_ctrl(vty, 2, &bts->bs_power_ctrl);
- config_write_power_ctrl(vty, 2, &bts->ms_power_ctrl);
+ config_write_power_ctrl(vty, 2, bts, &bts->bs_power_ctrl);
+ config_write_power_ctrl(vty, 2, bts, &bts->ms_power_ctrl);
config_write_bts_model(vty, bts);
}
@@ -4470,11 +4480,11 @@
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);
+ install_element(POWER_CTRL_NODE, &cfg_power_ctrl_ci_thresh_disable_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_ci_thresh_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_rxlev_thresh_comp_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_rxqual_thresh_comp_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_ci_thresh_comp_cmd);
- install_element(POWER_CTRL_NODE, &cfg_power_ctrl_ci_thresh_comp_disable_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_no_avg_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_avg_params_cmd);
install_element(POWER_CTRL_NODE, &cfg_power_ctrl_avg_algo_cmd);
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index a6c54d8..c8108e8 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -1146,6 +1146,7 @@
/* RxLev measurement parameters */
.rxlev_meas = {
+ .enabled = true,
/* Thresholds for RxLev (see 3GPP TS 45.008, A.3.2.1) */
.lower_thresh = 32, /* L_RXLEV_XX_P (-78 dBm) */
.upper_thresh = 38, /* U_RXLEV_XX_P (-72 dBm) */
@@ -1170,6 +1171,7 @@
/* RxQual measurement parameters */
.rxqual_meas = {
+ .enabled = true,
/* Thresholds for RxQual (see 3GPP TS 45.008, A.3.2.1) */
.lower_thresh = 3, /* L_RXQUAL_XX_P (0.8% <= BER < 1.6%) */
.upper_thresh = 0, /* U_RXQUAL_XX_P (BER < 0.2%) */
@@ -1198,6 +1200,7 @@
* above the target.
*/
.ci_fr_meas = { /* FR: Target C/I = 15 dB, Soft blocking threshold = 10 dB */
+ .enabled = true,
.lower_thresh = 13,
.upper_thresh = 17,
@@ -1219,6 +1222,7 @@
.h_reqt = 6, /* TODO: investigate a reasonable default value */
},
.ci_hr_meas = { /* HR: Target C/I = 18 dB, Soft blocking threshold = 13 dB */
+ .enabled = true,
.lower_thresh = 16,
.upper_thresh = 21,
@@ -1240,6 +1244,7 @@
.h_reqt = 6, /* TODO: investigate a reasonable default value */
},
.ci_amr_fr_meas = { /* AMR-FR: Target C/I = 9 dB, Soft blocking threshold = 4 dB */
+ .enabled = true,
.lower_thresh = 7,
.upper_thresh = 11,
@@ -1261,6 +1266,7 @@
.h_reqt = 6, /* TODO: investigate a reasonable default value */
},
.ci_amr_hr_meas = { /* AMR-HR: Target C/I = 15 dB, Soft blocking threshold = 10 dB */
+ .enabled = true,
.lower_thresh = 13,
.upper_thresh = 17,
@@ -1282,6 +1288,7 @@
.h_reqt = 6, /* TODO: investigate a reasonable default value */
},
.ci_sdcch_meas = { /* SDCCH: Target C/I = 14 dB, Soft blocking threshold = 9 dB */
+ .enabled = true,
.lower_thresh = 12,
.upper_thresh = 16,
@@ -1303,6 +1310,7 @@
.h_reqt = 6, /* TODO: investigate a reasonable default value */
},
.ci_gprs_meas = { /* GPRS: Target C/I = 20 dB, Soft blocking threshold = 15 dB */
+ .enabled = true,
.lower_thresh = 18,
.upper_thresh = 24,
diff --git a/tests/power_ctrl.vty b/tests/power_ctrl.vty
index b14a905..491adca 100644
--- a/tests/power_ctrl.vty
+++ b/tests/power_ctrl.vty
@@ -34,11 +34,11 @@
. 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>
+ . lv ci-thresh (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs|all) (enable|disable)
. lv ci-thresh (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs) lower <0-30> upper <0-30>
. lv rxlev-thresh-comp lower <0-31> <0-31> upper <0-31> <0-31>
. lv rxqual-thresh-comp lower <0-31> <0-31> upper <0-31> <0-31>
. lv ci-thresh-comp (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs) lower <0-31> <0-31> upper <0-31> <0-31>
- . lv ci-thresh-comp disable all
. lv no (rxlev-avg|rxqual-avg)
. lv (rxlev-avg|rxqual-avg) params hreqave <1-31> hreqt <1-31>
. lv (rxlev-avg|rxqual-avg) algo (unweighted|weighted|mod-median)
@@ -115,11 +115,11 @@
. 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>
+ . lv ci-thresh (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs|all) (enable|disable)
. lv ci-thresh (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs) lower <0-30> upper <0-30>
. lv rxlev-thresh-comp lower <0-31> <0-31> upper <0-31> <0-31>
. lv rxqual-thresh-comp lower <0-31> <0-31> upper <0-31> <0-31>
. lv ci-thresh-comp (fr-efr|hr|amr-fr|amr-hr|sdcch|gprs) lower <0-31> <0-31> upper <0-31> <0-31>
- . lv ci-thresh-comp disable all
. lv no (rxlev-avg|rxqual-avg)
. lv (rxlev-avg|rxqual-avg) params hreqave <1-31> hreqt <1-31>
. lv (rxlev-avg|rxqual-avg) algo (unweighted|weighted|mod-median)
@@ -143,16 +143,22 @@
rxlev-thresh-comp lower 10 12 upper 19 20
rxqual-thresh lower 3 upper 0
rxqual-thresh-comp lower 5 7 upper 15 18
+ ci-thresh fr-efr enable
ci-thresh fr-efr lower 13 upper 17
ci-thresh-comp fr-efr lower 5 7 upper 15 18
+ ci-thresh hr enable
ci-thresh hr lower 16 upper 21
ci-thresh-comp hr lower 5 7 upper 15 18
+ ci-thresh amr-fr enable
ci-thresh amr-fr lower 7 upper 11
ci-thresh-comp amr-fr lower 5 7 upper 15 18
+ ci-thresh amr-hr enable
ci-thresh amr-hr lower 13 upper 17
ci-thresh-comp amr-hr lower 5 7 upper 15 18
+ ci-thresh sdcch enable
ci-thresh sdcch lower 12 upper 16
ci-thresh-comp sdcch lower 5 7 upper 15 18
+ ci-thresh gprs enable
ci-thresh gprs lower 18 upper 24
ci-thresh-comp gprs lower 5 7 upper 15 18
...
@@ -304,33 +310,47 @@
...
ms-power-control
...
+ ci-thresh fr-efr enable
+ ci-thresh fr-efr lower 13 upper 17
ci-thresh-comp fr-efr lower 5 7 upper 15 18
-...
+ ci-thresh hr enable
+ ci-thresh hr lower 16 upper 21
ci-thresh-comp hr lower 5 7 upper 15 18
-...
+ ci-thresh amr-fr enable
+ ci-thresh amr-fr lower 7 upper 11
ci-thresh-comp amr-fr lower 5 7 upper 15 18
-...
+ ci-thresh amr-hr enable
+ ci-thresh amr-hr lower 13 upper 17
ci-thresh-comp amr-hr lower 5 7 upper 15 18
-...
+ ci-thresh sdcch enable
+ ci-thresh sdcch lower 12 upper 16
ci-thresh-comp sdcch lower 5 7 upper 15 18
-...
+ ci-thresh gprs enable
+ ci-thresh gprs lower 18 upper 24
ci-thresh-comp gprs lower 5 7 upper 15 18
...
-OsmoBSC(config-ms-power-ctrl)# ci-thresh-comp disable all
+OsmoBSC(config-ms-power-ctrl)# ci-thresh all disable
OsmoBSC(config-ms-power-ctrl)# show running-config
...
ms-power-control
...
- ci-thresh-comp fr-efr lower 0 0 upper 0 0
-...
- ci-thresh-comp hr lower 0 0 upper 0 0
-...
- ci-thresh-comp amr-fr lower 0 0 upper 0 0
-...
- ci-thresh-comp amr-hr lower 0 0 upper 0 0
-...
- ci-thresh-comp sdcch lower 0 0 upper 0 0
-...
- ci-thresh-comp gprs lower 0 0 upper 0 0
+ ci-thresh fr-efr disable
+ ci-thresh fr-efr lower 13 upper 17
+ ci-thresh-comp fr-efr lower 5 7 upper 15 18
+ ci-thresh hr disable
+ ci-thresh hr lower 16 upper 21
+ ci-thresh-comp hr lower 5 7 upper 15 18
+ ci-thresh amr-fr disable
+ ci-thresh amr-fr lower 7 upper 11
+ ci-thresh-comp amr-fr lower 5 7 upper 15 18
+ ci-thresh amr-hr disable
+ ci-thresh amr-hr lower 13 upper 17
+ ci-thresh-comp amr-hr lower 5 7 upper 15 18
+ ci-thresh sdcch disable
+ ci-thresh sdcch lower 12 upper 16
+ ci-thresh-comp sdcch lower 5 7 upper 15 18
+ ci-thresh gprs disable
+ ci-thresh gprs lower 18 upper 24
+ ci-thresh-comp gprs lower 5 7 upper 15 18
...
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/25611
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Id1224c2d9a52db2ed805c49e048d3086ed0167f5
Gerrit-Change-Number: 25611
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210927/480e2cac/attachment.htm>