<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25283">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bty_vty: add VTY settungs for temporary overpower<br><br>To configure temporary overpower, new VTY commands are added. This patch<br>also addes the logic needed to attach the temporary overpower IE to the<br>RSL CHANNEL ACTIVATE message.<br><br>Change-Id: I488a91bb4ed86f630db56564a0cd293f39f0f690<br>Related: SYS#5319<br>---<br>M include/osmocom/bsc/bts.h<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/bts_vty.c<br>3 files changed, 75 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/83/25283/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h</span><br><span>index 291ec10..70e706e 100644</span><br><span>--- a/include/osmocom/bsc/bts.h</span><br><span>+++ b/include/osmocom/bsc/bts.h</span><br><span>@@ -549,6 +549,11 @@</span><br><span>          * enable/disable certain ACCH repeation features individually */</span><br><span>    struct abis_rsl_osmo_rep_acch_cap repeated_acch_policy;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* osmocom specific FACCH/SACCH temporary overpower value. This value</span><br><span style="color: hsl(120, 100%, 40%);">+  * is set to a constant value by the VTY. Temporary overpower is only</span><br><span style="color: hsl(120, 100%, 40%);">+  * applied when FACCH/SACCH repetition is not applicable or disabled */</span><br><span style="color: hsl(120, 100%, 40%);">+       struct abis_rsl_osmo_top_acch_cap temporary_overpower;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     /* MS/BS Power Control parameters */</span><br><span>         struct gsm_power_ctrl_params ms_power_ctrl;</span><br><span>  struct gsm_power_ctrl_params bs_power_ctrl;</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index 26231ac..6d730d9 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -548,6 +548,34 @@</span><br><span>  }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* indicate Temporary overpower of SACCH and FACCH channels */</span><br><span style="color: hsl(120, 100%, 40%);">+static void top_acch_cap_for_bts(struct gsm_lchan *lchan, struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct abis_rsl_osmo_top_acch_cap *cap;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm_bts *bts = lchan->ts->trx->bts;</span><br><span style="color: hsl(120, 100%, 40%);">+   bool acch_rep_enabled;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool acch_rep_supp_by_ms;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* The RSL_IE_OSMO_TOP_ACCH_CAP IE is a proprietary IE, that can only be used with osmo-bts type BTSs */</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!(bts->model->type == GSM_BTS_TYPE_OSMOBTS && osmo_bts_has_feature(&bts->features, BTS_FEAT_ACCH_TOP)))</span><br><span style="color: hsl(120, 100%, 40%);">+              return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     cap = (struct abis_rsl_osmo_top_acch_cap *)msg->tail;</span><br><span style="color: hsl(120, 100%, 40%);">+      msgb_tlv_put(msg, RSL_IE_OSMO_TOP_ACCH_CAP, sizeof(*cap), (uint8_t *) & bts->temporary_overpower);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* The user has enabled one of the two downlink related ACCH repetition features. */</span><br><span style="color: hsl(120, 100%, 40%);">+  acch_rep_enabled = bts->repeated_acch_policy.dl_sacch || bts->repeated_acch_policy.dl_facch_all</span><br><span style="color: hsl(120, 100%, 40%);">+     || bts->repeated_acch_policy.dl_facch_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* The MS indicates support for ACCH repetition */</span><br><span style="color: hsl(120, 100%, 40%);">+    acch_rep_supp_by_ms = lchan->conn && lchan->conn->cm3_valid && lchan->conn->cm3.repeated_acch_capability;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* If the MS fully supports repeated ACCH capabilites as specified in 3GPP TS 44.006, section 10 and 11. and if</span><br><span style="color: hsl(120, 100%, 40%);">+        * ACCH repetition is enabled for this BTS, then we will not apply temporary overpower. */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (acch_rep_enabled && acch_rep_supp_by_ms)</span><br><span style="color: hsl(120, 100%, 40%);">+          cap->top = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Write RSL_IE_OSMO_TRAINING_SEQUENCE to msgb. The tsc_set argument's range is 1-4, tsc argument range is 0-7. */</span><br><span> static void put_osmo_training_sequence_ie(struct msgb *msg, uint8_t tsc_set, uint8_t tsc)</span><br><span> {</span><br><span>@@ -675,6 +703,7 @@</span><br><span>      }</span><br><span> </span><br><span>        rep_acch_cap_for_bts(lchan, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+     top_acch_cap_for_bts(lchan, msg);</span><br><span> </span><br><span>        /* Selecting a specific TSC Set is only applicable to VAMOS mode */</span><br><span>  if (lchan->activate.info.vamos && lchan->activate.tsc_set >= 1)</span><br><span>@@ -746,6 +775,7 @@</span><br><span>       }</span><br><span> </span><br><span>         rep_acch_cap_for_bts(lchan, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+        top_acch_cap_for_bts(lchan, msg);</span><br><span> </span><br><span>    /* Selecting a specific TSC Set is only applicable to VAMOS mode. Send this Osmocom specific IE only to OsmoBTS</span><br><span>       * types. */</span><br><span>diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c</span><br><span>index 577feec..e6fefb5 100644</span><br><span>--- a/src/osmo-bsc/bts_vty.c</span><br><span>+++ b/src/osmo-bsc/bts_vty.c</span><br><span>@@ -746,6 +746,41 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define TOP_ACCH_STR "Temporary ACCH overpower\n"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_bts_top_dl_acch,</span><br><span style="color: hsl(120, 100%, 40%);">+             cfg_bts_top_dl_acch_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+              X(BSC_VTY_ATTR_NEW_LCHAN),</span><br><span style="color: hsl(120, 100%, 40%);">+            "overpower dl-acch <1-4>",</span><br><span style="color: hsl(120, 100%, 40%);">+            TOP_ACCH_STR</span><br><span style="color: hsl(120, 100%, 40%);">+          "Enable ACCH overpower for this BTS\n"</span><br><span style="color: hsl(120, 100%, 40%);">+              "overpower value in dB\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_bts *bts = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        if (bts->model->type != GSM_BTS_TYPE_OSMOBTS) {</span><br><span style="color: hsl(120, 100%, 40%);">+         vty_out(vty, "%% repeated ACCH not supported by BTS %u%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                  bts->nr, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+             return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        bts->temporary_overpower.top = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+ return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_bts_top_no_dl_acch,</span><br><span style="color: hsl(120, 100%, 40%);">+             cfg_bts_top_no_dl_acch_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           X(BSC_VTY_ATTR_NEW_LCHAN),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no overpower dl-acch",</span><br><span style="color: hsl(120, 100%, 40%);">+             NO_STR TOP_ACCH_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Disable ACCH overpower for this BTS\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct gsm_bts *bts = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        bts->temporary_overpower.top = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> #define CD_STR "Channel Description\n"</span><br><span> </span><br><span>@@ -3966,6 +4001,9 @@</span><br><span> </span><br><span>       ho_vty_write_bts(vty, bts);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       if (bts->temporary_overpower.top > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+           vty_out(vty, "  overpower dl-acch %u%s", bts->temporary_overpower.top, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  if (bts->repeated_acch_policy.dl_facch_all)</span><br><span>               vty_out(vty, "  repeat dl-facch all%s", VTY_NEWLINE);</span><br><span>      else if (bts->repeated_acch_policy.dl_facch_cmd)</span><br><span>@@ -4181,6 +4219,8 @@</span><br><span>  install_element(BTS_NODE, &cfg_bts_rep_ul_dl_sacch_cmd);</span><br><span>         install_element(BTS_NODE, &cfg_bts_rep_no_ul_dl_sacch_cmd);</span><br><span>      install_element(BTS_NODE, &cfg_bts_rep_rxqual_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+       install_element(BTS_NODE, &cfg_bts_top_dl_acch_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+      install_element(BTS_NODE, &cfg_bts_top_no_dl_acch_cmd);</span><br><span>  install_element(BTS_NODE, &cfg_bts_interf_meas_avg_period_cmd);</span><br><span>  install_element(BTS_NODE, &cfg_bts_interf_meas_level_bounds_cmd);</span><br><span>        install_element(BTS_NODE, &cfg_bts_srvcc_fast_return_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25283">change 25283</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/25283"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I488a91bb4ed86f630db56564a0cd293f39f0f690 </div>
<div style="display:none"> Gerrit-Change-Number: 25283 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>