<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/20342">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;">compl l3: cosmetics around Create Layer 3<br><br>Move getting the CGI closer to where it is used.<br>Use a use_scl pointer to remove a bit of code dup.<br><br>Drop logging for tx Compl L3, there is plenty logging later in<br>osmo_bsc_sigtran_open_conn().<br><br>This cosmetically prepares future changes for LCS handling.<br><br>Change-Id: If7a7d0fe857797d569968e694bf20818d7472bcd<br>---<br>M src/osmo-bsc/gsm_08_08.c<br>1 file changed, 26 insertions(+), 24 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c</span><br><span>index c37b57f..9d22e3f 100644</span><br><span>--- a/src/osmo-bsc/gsm_08_08.c</span><br><span>+++ b/src/osmo-bsc/gsm_08_08.c</span><br><span>@@ -431,8 +431,9 @@</span><br><span> int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg, uint16_t chosen_channel)</span><br><span> {</span><br><span>        struct bsc_msc_data *msc;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct msgb *resp;</span><br><span style="color: hsl(120, 100%, 40%);">+    struct msgb *create_l3;</span><br><span>      struct gsm0808_speech_codec_list scl;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm0808_speech_codec_list *use_scl;</span><br><span>   int rc = -2;</span><br><span>         struct gsm_bts *bts;</span><br><span>         struct osmo_cell_global_id *cgi;</span><br><span>@@ -462,8 +463,6 @@</span><br><span> </span><br><span>   log_set_context(LOG_CTX_BSC_SUBSCR, conn->bsub);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DMSC, LOGL_INFO, "Tx MSC COMPL L3\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        /* find the MSC link we want to use */</span><br><span>       msc = bsc_find_msc(conn, msg, &mi);</span><br><span>      if (!msc) {</span><br><span>@@ -477,11 +476,10 @@</span><br><span>          goto early_fail;</span><br><span> </span><br><span>         bts = conn_get_bts(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-       cgi = cgi_for_msc(conn->sccp.msc, bts);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      if (!bts || !cgi) {</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!bts) {</span><br><span>          /* should never happen */</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DMSC, LOGL_ERROR, "Compl L3 without lchan\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOG_COMPL_L3(pdisc, mtype, LOGL_ERROR, "%s: internal error: Compl L3 without BTS\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                             osmo_mobile_identity_to_str_c(OTC_SELECT, &mi));</span><br><span>            rc = -1;</span><br><span>             goto early_fail;</span><br><span>     }</span><br><span>@@ -490,26 +488,30 @@</span><br><span>    if (pdisc == GSM48_PDISC_RR && mtype == GSM48_MT_RR_PAG_RESP)</span><br><span>                handle_page_resp(conn, msg, &mi);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     /* Send the Create Layer 3. */</span><br><span style="color: hsl(120, 100%, 40%);">+        use_scl = NULL;</span><br><span>      if (gscon_is_aoip(conn)) {</span><br><span style="color: hsl(0, 100%, 40%);">-              gen_bss_supported_codec_list(&scl, msc, bts);</span><br><span style="color: hsl(120, 100%, 40%);">+             gen_bss_supported_codec_list(&scl, conn->sccp.msc, bts);</span><br><span>              if (scl.len > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-                     resp = gsm0808_create_layer3_2(msg, cgi, &scl);</span><br><span style="color: hsl(0, 100%, 40%);">-             else {</span><br><span style="color: hsl(0, 100%, 40%);">-                  /* Note: 3GPP TS 48.008 3.2.1.32, COMPLETE LAYER 3 INFORMATION clearly states that</span><br><span style="color: hsl(0, 100%, 40%);">-                       * Codec List (BSS Supported) shall be included, if the radio access network</span><br><span style="color: hsl(0, 100%, 40%);">-                     * supports an IP based user plane interface. It may be intentional that the</span><br><span style="color: hsl(0, 100%, 40%);">-                     * current configuration does not support any voice codecs, in those cases the</span><br><span style="color: hsl(0, 100%, 40%);">-                   * network does not support an IP based user plane interface, and therefore the</span><br><span style="color: hsl(0, 100%, 40%);">-                  * Codec List (BSS Supported) IE can be left out in those situations. */</span><br><span style="color: hsl(0, 100%, 40%);">-                        resp = gsm0808_create_layer3_2(msg, cgi, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-         }</span><br><span style="color: hsl(0, 100%, 40%);">-       } else</span><br><span style="color: hsl(0, 100%, 40%);">-          resp = gsm0808_create_layer3_2(msg, cgi, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+                       use_scl = &scl;</span><br><span style="color: hsl(120, 100%, 40%);">+           /* For AoIP, we should always pass a Codec List (BSS Supported). But osmo-bsc may be configured to</span><br><span style="color: hsl(120, 100%, 40%);">+             * support no voice codecs -- then omit the Codec List. */</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     cgi = cgi_for_msc(conn->sccp.msc, bts);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!cgi) {</span><br><span style="color: hsl(120, 100%, 40%);">+           /* should never happen */</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_COMPL_L3(pdisc, mtype, LOGL_ERROR, "%s: internal error: BTS without identity\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                             osmo_mobile_identity_to_str_c(OTC_SELECT, &mi));</span><br><span style="color: hsl(120, 100%, 40%);">+             goto early_fail;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     create_l3 = gsm0808_create_layer3_2(msg, cgi, use_scl);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!create_l3) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_COMPL_L3(pdisc, mtype, LOGL_ERROR, "%s: Failed to compose Create Layer 3 message\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                         osmo_mobile_identity_to_str_c(OTC_SELECT, &mi));</span><br><span style="color: hsl(120, 100%, 40%);">+             goto early_fail;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_A_CONN_REQ, create_l3);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (resp)</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_A_CONN_REQ, resp);</span><br><span style="color: hsl(0, 100%, 40%);">-    else</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DMSC, LOGL_DEBUG, "Failed to create layer3 message.\n");</span><br><span> early_fail:</span><br><span>       log_set_context(LOG_CTX_BSC_SUBSCR, NULL);</span><br><span>   return rc;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/20342">change 20342</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/+/20342"/><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: If7a7d0fe857797d569968e694bf20818d7472bcd </div>
<div style="display:none"> Gerrit-Change-Number: 20342 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </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: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>