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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">rsl: Assign recv pwr to lchan's max ms power<br><br>Otherwise older ms_power value will be kept and used as a maximum.<br><br>From TS 08.58 sec 4.8 "MS power control":<br>"""<br>If power control is supported by BTS and it is to be used,<br>this is indicated by optional parameters in the MS POWER CONTROL<br>message (or the CHANNEL ACTIVATION message). Based on the<br>measurements performed on the uplink, TRX then attempts to keep<br>the power control parameters within the limits set by the<br>MS POWER CONTROL message (or by the CHANNEL ACTIVATION message).<br>"""<br><br>Change-Id: I0583eef477c33279ee5bfcda80141f365413a276<br>---<br>M src/common/rsl.c<br>1 file changed, 22 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/common/rsl.c b/src/common/rsl.c</span><br><span>index de51e6f..e460693 100644</span><br><span>--- a/src/common/rsl.c</span><br><span>+++ b/src/common/rsl.c</span><br><span>@@ -26,6 +26,7 @@</span><br><span> #include <errno.h></span><br><span> #include <netdb.h></span><br><span> #include <stdbool.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <inttypes.h></span><br><span> #include <sys/types.h></span><br><span> #include <arpa/inet.h></span><br><span> </span><br><span>@@ -1623,8 +1624,10 @@</span><br><span> {</span><br><span>       struct abis_rsl_dchan_hdr *dch = msgb_l2(msg);</span><br><span>       struct gsm_lchan *lchan = msg->lchan;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_bts *bts = lchan->ts->trx->bts;</span><br><span>  struct tlv_parsed tp;</span><br><span>        uint8_t pwr;</span><br><span style="color: hsl(120, 100%, 40%);">+  int max_pwr, curr_pwr;</span><br><span> </span><br><span>   rsl_tlv_parse(&tp, msgb_l3(msg), msgb_l3len(msg));</span><br><span> </span><br><span>@@ -1633,9 +1636,9 @@</span><br><span>           return rsl_tx_error_report(msg->trx, RSL_ERR_MAND_IE_ERROR, &dch->chan_nr, NULL, msg);</span><br><span> </span><br><span>         pwr = *TLVP_VAL(&tp, RSL_IE_MS_POWER) & 0x1F;</span><br><span style="color: hsl(0, 100%, 40%);">-   lchan->ms_power_ctrl.current = pwr;</span><br><span style="color: hsl(120, 100%, 40%);">+        lchan->ms_power = pwr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGPLCHAN(lchan, DRSL, LOGL_NOTICE, "Rx MS POWER CONTROL %d\n", lchan->ms_power_ctrl.current);</span><br><span style="color: hsl(120, 100%, 40%);">+   LOGPLCHAN(lchan, DRSL, LOGL_INFO, "Rx MS POWER CONTROL %d\n", lchan->ms_power_ctrl.current);</span><br><span> </span><br><span>        /* 9.3.31 MS Power Parameters (O) */</span><br><span>         if (TLVP_PRESENT(&tp, RSL_IE_MS_POWER_PARAM))</span><br><span>@@ -1647,6 +1650,23 @@</span><br><span>           lchan->ms_power_ctrl.fixed = 1;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Only set current to lchan->ms_power if actual value of current</span><br><span style="color: hsl(120, 100%, 40%);">+     in dBm > value in dBm from lchan->ms_power, or if fixed=1. */</span><br><span style="color: hsl(120, 100%, 40%);">+        if (lchan->ms_power_ctrl.fixed) {</span><br><span style="color: hsl(120, 100%, 40%);">+          lchan->ms_power_ctrl.current = lchan->ms_power;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              max_pwr = ms_pwr_dbm(bts->band, lchan->ms_power);</span><br><span style="color: hsl(120, 100%, 40%);">+               curr_pwr = ms_pwr_dbm(bts->band, lchan->ms_power_ctrl.current);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (max_pwr < 0 || curr_pwr < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGPLCHAN(lchan, DRSL, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                              "Unable to calculate power levels to dBm: %" PRIu8 " -> %d, %" PRIu8 " -> %d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                  lchan->ms_power, max_pwr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  lchan->ms_power_ctrl.current, curr_pwr);</span><br><span style="color: hsl(120, 100%, 40%);">+         } else if (curr_pwr > max_pwr) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   lchan->ms_power_ctrl.current = lchan->ms_power;</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%);">+</span><br><span>  bts_model_adjst_ms_pwr(lchan);</span><br><span> </span><br><span>   return 0;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/15970">change 15970</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-bts/+/15970"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0583eef477c33279ee5bfcda80141f365413a276 </div>
<div style="display:none"> Gerrit-Change-Number: 15970 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>