<p>daniel has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gbproxy/+/26219">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Remove duplicate struct gprs_ra_id handling<br><br>The ra_id as well as the cell_id are already present in struct<br>gbproxy_cell which is reachable from bvc->cell. Remove the ra_id in<br>struct gbproxy_bvc and also remove some unused/unneeded code. The FSM<br>reset_notif callback already takes care of updating the cell.<br><br>Related: OS#4894<br>Change-Id: Ibc9f42a60706612c17e5f8f0468c7faced5ae4c8<br>---<br>M include/osmocom/gbproxy/gb_proxy.h<br>M src/gb_proxy.c<br>2 files changed, 11 insertions(+), 35 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gbproxy refs/changes/19/26219/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gbproxy/gb_proxy.h b/include/osmocom/gbproxy/gb_proxy.h</span><br><span>index 07373ad..0657df7 100644</span><br><span>--- a/include/osmocom/gbproxy/gb_proxy.h</span><br><span>+++ b/include/osmocom/gbproxy/gb_proxy.h</span><br><span>@@ -142,9 +142,6 @@</span><br><span>         /* Whether this BVC is inactive (removed from BSS-side) */</span><br><span>   bool inactive;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      /* Routing Area that this BVC is part of */</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_ra_id raid;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      /* Counter */</span><br><span>        struct rate_ctr_group *ctrg;</span><br><span> </span><br><span>diff --git a/src/gb_proxy.c b/src/gb_proxy.c</span><br><span>index 9845a09..3d76a33 100644</span><br><span>--- a/src/gb_proxy.c</span><br><span>+++ b/src/gb_proxy.c</span><br><span>@@ -710,7 +710,7 @@</span><br><span>  }</span><br><span> </span><br><span>        /* Reallocate SGSN-side BVCs of the cell, and reset them</span><br><span style="color: hsl(0, 100%, 40%);">-         * Removing and reallocating is needed becaus the ra_id/cell_id might have changed */</span><br><span style="color: hsl(120, 100%, 40%);">+  * Removing and reallocating is needed because the ra_id/cell_id might have changed */</span><br><span>       hash_for_each(cfg->sgsn_nses, i, sgsn_nse, list) {</span><br><span>                struct gbproxy_bvc *sgsn_bvc = gbproxy_bvc_by_bvci(sgsn_nse, bvci);</span><br><span>          if (!sgsn_bvc)</span><br><span>@@ -721,7 +721,6 @@</span><br><span>                 sgsn_bvc = gbproxy_bvc_alloc(sgsn_nse, bvci);</span><br><span>                OSMO_ASSERT(sgsn_bvc);</span><br><span>               sgsn_bvc->cell = bvc->cell;</span><br><span style="color: hsl(0, 100%, 40%);">-               memcpy(&sgsn_bvc->raid, &bvc->cell->id.raid, sizeof(sgsn_bvc->raid));</span><br><span>            sgsn_bvc->fi = bssgp_bvc_fsm_alloc_ptp_bss(sgsn_bvc, cfg->nsi, sgsn_nse->nsei,</span><br><span>                                                         bvci, ra_id, cell_id);</span><br><span>            OSMO_ASSERT(sgsn_bvc->fi);</span><br><span>@@ -888,34 +887,6 @@</span><br><span>                         bssgp_bvc_fsm_set_max_pdu_len(from_bvc->fi, nse->max_sdu_len);</span><br><span>                         bssgp_bvc_fsm_set_ops(from_bvc->fi, &bss_ptp_bvc_fsm_ops, from_bvc);</span><br><span>          }</span><br><span style="color: hsl(0, 100%, 40%);">-#if 0</span><br><span style="color: hsl(0, 100%, 40%);">-          /* Could have moved to a different NSE */</span><br><span style="color: hsl(0, 100%, 40%);">-               if (!check_bvc_nsei(from_bvc, nsei)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  LOGPBVC(from_bvc, LOGL_NOTICE, "moving bvc to NSE(%05u)\n", nsei);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                    struct gbproxy_nse *nse_new = gbproxy_nse_by_nsei(cfg, nsei, false);</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (!nse_new) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         LOGP(DGPRS, LOGL_NOTICE, "NSE(%05u) Got PtP BVC reset before signalling reset for "</span><br><span style="color: hsl(0, 100%, 40%);">-                                   "BVCI=%05u\n", bvci, nsei);</span><br><span style="color: hsl(0, 100%, 40%);">-                           tx_status(nse, ns_bvci, BSSGP_CAUSE_PDU_INCOMP_STATE, NULL, msg);</span><br><span style="color: hsl(0, 100%, 40%);">-                               return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                       /* Move bvc to different NSE */</span><br><span style="color: hsl(0, 100%, 40%);">-                 gbproxy_bvc_move(from_bvc, nse_new);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-         /* FIXME: do we need this, if it happens within FSM? */</span><br><span style="color: hsl(0, 100%, 40%);">-         if (TLVP_PRES_LEN(tp, BSSGP_IE_CELL_ID, 8)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   struct gprs_ra_id raid;</span><br><span style="color: hsl(0, 100%, 40%);">-                 /* We have a Cell Identifier present in this</span><br><span style="color: hsl(0, 100%, 40%);">-                     * PDU, this means we can extend our local</span><br><span style="color: hsl(0, 100%, 40%);">-                       * state information about this particular cell</span><br><span style="color: hsl(0, 100%, 40%);">-                  * */</span><br><span style="color: hsl(0, 100%, 40%);">-                   gsm48_parse_ra(&raid, TLVP_VAL(tp, BSSGP_IE_CELL_ID));</span><br><span style="color: hsl(0, 100%, 40%);">-                      memcpy(&from_bvc->raid, &raid, sizeof(from_bvc->raid));</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGPBVC(from_bvc, LOGL_INFO, "Cell ID %s\n", osmo_rai_name(&raid));</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span>    }</span><br><span>    /* hand into FSM for further processing */</span><br><span>   osmo_fsm_inst_dispatch(from_bvc->fi, BSSGP_BVCFSM_E_RX_RESET, msg);</span><br><span>@@ -1267,7 +1238,11 @@</span><br><span>              /* iterate over all bvcs and dispatch the paging to each matching one */</span><br><span>             hash_for_each(cfg->bss_nses, i, nse, list) {</span><br><span>                      hash_for_each(nse->bvcs, j, bss_bvc, list) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         if (gsm48_ra_equal(&bss_bvc->raid, &raid)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                               /* Skip BVCs without a cell (e.g. signalling) */</span><br><span style="color: hsl(120, 100%, 40%);">+                              if (!bss_bvc->cell)</span><br><span style="color: hsl(120, 100%, 40%);">+                                        continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                           if (gsm48_ra_equal(&bss_bvc->cell->id.raid, &raid)) {</span><br><span>                                  LOGPNSE(nse, LOGL_INFO, "Rx %s: routing to NSE (RAI match)\n",</span><br><span>                                             pdut_name);</span><br><span>                                  gbprox_relay2peer(msg, bss_bvc, ns_bvci);</span><br><span>@@ -1283,7 +1258,11 @@</span><br><span>           /* iterate over all bvcs and dispatch the paging to each matching one */</span><br><span>             hash_for_each(cfg->bss_nses, i, nse, list) {</span><br><span>                      hash_for_each(nse->bvcs, j, bss_bvc, list) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         gsm48_encode_ra(&lac, &bss_bvc->raid);</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Skip BVCs without a cell (e.g. signalling) */</span><br><span style="color: hsl(120, 100%, 40%);">+                              if (!bss_bvc->cell)</span><br><span style="color: hsl(120, 100%, 40%);">+                                        continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                           gsm48_encode_ra(&lac, &bss_bvc->cell->id.raid);</span><br><span>                                if (!memcmp(&lac, TLVP_VAL(tp, BSSGP_IE_LOCATION_AREA), 5)) {</span><br><span>                                    LOGPNSE(nse, LOGL_INFO, "Rx %s: routing to NSE (LAI match)\n",</span><br><span>                                             pdut_name);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gbproxy/+/26219">change 26219</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-gbproxy/+/26219"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gbproxy </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibc9f42a60706612c17e5f8f0468c7faced5ae4c8 </div>
<div style="display:none"> Gerrit-Change-Number: 26219 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>