<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/21078">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;">part 1 of: fix SAPIs for handover to match 48.058 4.1.{3,4}<br><br>This part adds the common lchan flags to indicate whether DL SACCH<br>should be activated.<br><br>Note that currently, osmo-bsc *always* sends the MS Power IE as well as<br>the TA IE, also for inter-cell HO, so in the osmoverse, nothing will<br>change until we also adjust osmo-bsc. See OS#4858.<br><br>Change-Id: Ibea973ccadf5d424213f141f97a61395856b76de<br>---<br>M include/osmo-bts/gsm_data.h<br>M src/common/handover.c<br>M src/common/rsl.c<br>3 files changed, 31 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h</span><br><span>index 1c1c5d4..7670508 100644</span><br><span>--- a/include/osmo-bts/gsm_data.h</span><br><span>+++ b/include/osmo-bts/gsm_data.h</span><br><span>@@ -194,6 +194,22 @@</span><br><span> </span><br><span>        char *name;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       /* For handover, activation is described in 3GPP TS 48.058 4.1.3 and 4.1.4:</span><br><span style="color: hsl(120, 100%, 40%);">+    *</span><br><span style="color: hsl(120, 100%, 40%);">+     *          |          | Access ||  transmit         |  activate</span><br><span style="color: hsl(120, 100%, 40%);">+       *          | MS Power | Delay  ||  on main channel  |  dl SACCH</span><br><span style="color: hsl(120, 100%, 40%);">+       * ----------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+      * async ho   no         *     -->  yes                 no</span><br><span style="color: hsl(120, 100%, 40%);">+  * async ho   yes        *     -->  yes                 may be started</span><br><span style="color: hsl(120, 100%, 40%);">+      * sync ho    no         no    -->  yes                 no</span><br><span style="color: hsl(120, 100%, 40%);">+  * sync ho    yes        no    -->  yes                 may be started</span><br><span style="color: hsl(120, 100%, 40%);">+      * sync ho    yes        yes   -->  yes                 shall be started</span><br><span style="color: hsl(120, 100%, 40%);">+    *</span><br><span style="color: hsl(120, 100%, 40%);">+     * Always start the main channel immediately.</span><br><span style="color: hsl(120, 100%, 40%);">+  * want_dl_sacch_active indicates whether dl SACCH should be activated on CHAN ACT.</span><br><span style="color: hsl(120, 100%, 40%);">+    */</span><br><span style="color: hsl(120, 100%, 40%);">+   bool want_dl_sacch_active;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         /* Number of different GsmL1_Sapi_t used in osmo_bts_sysmo is 23.</span><br><span>     * Currently we don't share these headers so this is a magic number. */</span><br><span>  struct llist_head sapi_cmds;</span><br><span>diff --git a/src/common/handover.c b/src/common/handover.c</span><br><span>index b615932..888649d 100644</span><br><span>--- a/src/common/handover.c</span><br><span>+++ b/src/common/handover.c</span><br><span>@@ -112,6 +112,7 @@</span><br><span> </span><br><span>      /* Set timing advance */</span><br><span>     lchan->rqd_ta = acc_delay;</span><br><span style="color: hsl(120, 100%, 40%);">+ lchan->want_dl_sacch_active = true;</span><br><span> </span><br><span>   /* Stop handover detection, wait for valid frame */</span><br><span>  lchan->ho.active = HANDOVER_WAIT_FRAME;</span><br><span>diff --git a/src/common/rsl.c b/src/common/rsl.c</span><br><span>index cb9c19b..a0c1fb2 100644</span><br><span>--- a/src/common/rsl.c</span><br><span>+++ b/src/common/rsl.c</span><br><span>@@ -1095,6 +1095,7 @@</span><br><span>      struct tlv_parsed tp;</span><br><span>        uint8_t type;</span><br><span>        int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       bool ms_power_present = false;</span><br><span> </span><br><span>   if (lchan->state != LCHAN_S_NONE) {</span><br><span>               LOGPLCHAN(lchan, DRSL, LOGL_ERROR, "error: lchan is not available, but in state: %s.\n",</span><br><span>@@ -1188,6 +1189,7 @@</span><br><span>   if (TLVP_PRES_LEN(&tp, RSL_IE_MS_POWER, 1)) {</span><br><span>            lchan->ms_power_ctrl.max = *TLVP_VAL(&tp, RSL_IE_MS_POWER) & 0x1F;</span><br><span>                lchan->ms_power_ctrl.current = lchan->ms_power_ctrl.max;</span><br><span style="color: hsl(120, 100%, 40%);">+                ms_power_present = true;</span><br><span>     }</span><br><span>    /* 9.3.24 Timing Advance */</span><br><span>  if (TLVP_PRES_LEN(&tp, RSL_IE_TIMING_ADVANCE, 1))</span><br><span>@@ -1310,6 +1312,18 @@</span><br><span>               return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Indicate which SAPIs should be enabled before the first RACH is received, for handover. See 3GPP TS 48.058</span><br><span style="color: hsl(120, 100%, 40%);">+  * 4.1.3 and 4.1.4. */</span><br><span style="color: hsl(120, 100%, 40%);">+        switch (type) {</span><br><span style="color: hsl(120, 100%, 40%);">+       case RSL_ACT_INTER_ASYNC:</span><br><span style="color: hsl(120, 100%, 40%);">+     case RSL_ACT_INTER_SYNC:</span><br><span style="color: hsl(120, 100%, 40%);">+              lchan->want_dl_sacch_active = ms_power_present;</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              lchan->want_dl_sacch_active = true;</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Remember to send an RSL ACK once the lchan is active */</span><br><span>   lchan->rel_act_kind = LCHAN_REL_ACT_RSL;</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/21078">change 21078</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/+/21078"/><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: Ibea973ccadf5d424213f141f97a61395856b76de </div>
<div style="display:none"> Gerrit-Change-Number: 21078 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </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>