<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25283">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><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, 76 insertions(+), 0 deletions(-)<br><br></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..5ff798b 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_temp_ovp_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..c7399eb 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,35 @@</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_temp_ovp_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 BTS_FEAT_ACCH_TEMP_OVP 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_TEMP_OVP)))</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%);">+     memcpy(&cap, &bts->temporary_overpower, sizeof(cap));</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.overpower_db = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       msgb_tlv_put(msg, RSL_IE_OSMO_TEMP_OVP_ACCH_CAP, sizeof(cap), (uint8_t*) &cap);</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 +704,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 +776,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 445eea4..bd06463 100644</span><br><span>--- a/src/osmo-bsc/bts_vty.c</span><br><span>+++ b/src/osmo-bsc/bts_vty.c</span><br><span>@@ -747,6 +747,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.overpower_db = 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.overpower_db = 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>@@ -3967,6 +4002,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.overpower_db > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+          vty_out(vty, "  overpower dl-acch %u%s", bts->temporary_overpower.overpower_db, 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>@@ -4182,6 +4220,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: 4 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>