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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add SDU length for an NSE (== BSSGP PDU size)<br><br>Prepare tracking the SDU from NS. Initialize with a conservative default.<br>The value is not yet updated, that will happen in a later patch.<br><br>Related: OS#4889<br>Depends: I5016b295db6185ec131d83089cf6c806e34ef1b6 (libosmocore.git)<br>Depends: I9bb82ead27366b7370c9ff968e03ca2113ec11f0 (libosmocore.git)<br>Change-Id: Ic1080abde942ec5a2ae7cdee0ffe716a2fbddb1e<br>---<br>M include/osmocom/sgsn/gb_proxy.h<br>M src/gb_proxy.c<br>M src/gb_proxy_peer.c<br>M src/gb_proxy_vty.c<br>4 files changed, 13 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/sgsn/gb_proxy.h b/include/osmocom/sgsn/gb_proxy.h</span><br><span>index a36f305..c9d2fca 100644</span><br><span>--- a/include/osmocom/sgsn/gb_proxy.h</span><br><span>+++ b/include/osmocom/sgsn/gb_proxy.h</span><br><span>@@ -11,6 +11,7 @@</span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span> #include <osmocom/gsm/protocol/gsm_23_003.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/gprs/frame_relay.h></span><br><span> #include <osmocom/gprs/gprs_ns2.h></span><br><span> #include <osmocom/vty/command.h></span><br><span> </span><br><span>@@ -21,6 +22,9 @@</span><br><span> #define GBPROXY_INIT_VU_GEN_TX 256</span><br><span> #define GBPROXY_MAX_NR_SGSN    16</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Set conservative default BSSGP SDU (FR SDU - size of NS UNITDATA IEs) */</span><br><span style="color: hsl(120, 100%, 40%);">+#define DEFAULT_NSE_SDU (FRAME_RELAY_SDU - 4)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* BVCI uses 16 bits */</span><br><span> #define BVC_LOG_CTX_FLAG (1<<17)</span><br><span> </span><br><span>@@ -161,6 +165,9 @@</span><br><span>  /* NSEI of the NSE */</span><br><span>        uint16_t nsei;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    /* Maximum side of the NS-UNITDATA NS SDU that can be transported by the NSE */</span><br><span style="color: hsl(120, 100%, 40%);">+       uint16_t max_sdu_len;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      /* Are we facing towards a SGSN (true) or BSS (false) */</span><br><span>     bool sgsn_facing;</span><br><span> </span><br><span>diff --git a/src/gb_proxy.c b/src/gb_proxy.c</span><br><span>index 8b57315..7f4af5b 100644</span><br><span>--- a/src/gb_proxy.c</span><br><span>+++ b/src/gb_proxy.c</span><br><span>@@ -684,6 +684,7 @@</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 style="color: hsl(120, 100%, 40%);">+                 bssgp_bvc_fsm_set_max_pdu_len(sgsn_bvc->fi, sgsn_nse->max_sdu_len);</span><br><span>                    bssgp_bvc_fsm_set_ops(sgsn_bvc->fi, &sgsn_ptp_bvc_fsm_ops, sgsn_bvc);</span><br><span> </span><br><span>                     gbproxy_cell_add_sgsn_bvc(bvc->cell, sgsn_bvc);</span><br><span>@@ -828,6 +829,7 @@</span><br><span>                             gbproxy_bvc_free(from_bvc);</span><br><span>                          return -ENOMEM;</span><br><span>                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                     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_sig_bvc_fsm_ops, from_bvc);</span><br><span>          }</span><br><span>    } else {</span><br><span>@@ -844,6 +846,7 @@</span><br><span>                               gbproxy_bvc_free(from_bvc);</span><br><span>                          return -ENOMEM;</span><br><span>                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                     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> #if 0</span><br><span>@@ -1500,6 +1503,7 @@</span><br><span> {</span><br><span>      /* TODO: bss nsei available/unavailable  bssgp_tx_simple_bvci(BSSGP_PDUT_BVC_BLOCK, nsvc->nsei, bvc->bvci, 0);</span><br><span>          * TODO: sgsn nsei available/unavailable</span><br><span style="color: hsl(120, 100%, 40%);">+       * TODO: Update MTU</span><br><span>   */</span><br><span> </span><br><span>      struct gbproxy_bvc *bvc;</span><br><span>diff --git a/src/gb_proxy_peer.c b/src/gb_proxy_peer.c</span><br><span>index 27d73b8..a9471f0 100644</span><br><span>--- a/src/gb_proxy_peer.c</span><br><span>+++ b/src/gb_proxy_peer.c</span><br><span>@@ -447,6 +447,7 @@</span><br><span>              return NULL;</span><br><span> </span><br><span>     nse->nsei = nsei;</span><br><span style="color: hsl(120, 100%, 40%);">+  nse->max_sdu_len = DEFAULT_NSE_SDU;</span><br><span>       nse->cfg = cfg;</span><br><span>   nse->sgsn_facing = sgsn_facing;</span><br><span> </span><br><span>diff --git a/src/gb_proxy_vty.c b/src/gb_proxy_vty.c</span><br><span>index 04c7173..3a52e32 100644</span><br><span>--- a/src/gb_proxy_vty.c</span><br><span>+++ b/src/gb_proxy_vty.c</span><br><span>@@ -241,6 +241,7 @@</span><br><span>            bvc->fi = bssgp_bvc_fsm_alloc_sig_bss(bvc, nse->cfg->nsi, nsei, features);</span><br><span>          if (!bvc->fi)</span><br><span>                     goto free_bvc;</span><br><span style="color: hsl(120, 100%, 40%);">+                bssgp_bvc_fsm_set_max_pdu_len(bvc->fi, nse->max_sdu_len);</span><br><span>              bssgp_bvc_fsm_set_ops(bvc->fi, &sgsn_sig_bvc_fsm_ops, bvc);</span><br><span>           osmo_fsm_inst_dispatch(bvc->fi, BSSGP_BVCFSM_E_REQ_RESET, &cause);</span><br><span>    }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gbproxy/+/22877">change 22877</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/+/22877"/><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: Ic1080abde942ec5a2ae7cdee0ffe716a2fbddb1e </div>
<div style="display:none"> Gerrit-Change-Number: 22877 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@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: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>