<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/19826">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc_subscr_conn_fsm: use proper cause values in SAPI N REJECT<br><br>As 3GPP TS 48.058 clearly states, an RLL RELease INDication is only<br>sent if the datalink is released by the MS.  Thre's no cause value<br>giving further diagnostics, but if the MS releases the link, it is<br>clearly not the BSS's fault, and hence "BSS not equipped" is wrong.<br><br>Change-Id: I38222e60071841abcd06046a472ddb35907164a4<br>Related: OS#4728<br>---<br>M include/osmocom/bsc/gsm_08_08.h<br>M src/osmo-bsc/bsc_subscr_conn_fsm.c<br>M src/osmo-bsc/gsm_08_08.c<br>M tests/bsc/bsc_test.c<br>M tests/handover/handover_test.c<br>5 files changed, 15 insertions(+), 8 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/26/19826/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/gsm_08_08.h b/include/osmocom/bsc/gsm_08_08.h</span><br><span>index e55bf2c..80da297 100644</span><br><span>--- a/include/osmocom/bsc/gsm_08_08.h</span><br><span>+++ b/include/osmocom/bsc/gsm_08_08.h</span><br><span>@@ -6,7 +6,7 @@</span><br><span> </span><br><span> struct gsm_subscriber_connection;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci);</span><br><span style="color: hsl(120, 100%, 40%);">+void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause);</span><br><span> void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_encr);</span><br><span> int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg, uint16_t chosen_channel);</span><br><span> void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg);</span><br><span>diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c</span><br><span>index 4f559fe..6871c4c 100644</span><br><span>--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c</span><br><span>+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c</span><br><span>@@ -1036,9 +1036,14 @@</span><br><span>               rsl_data_request(msg, OBSC_LINKID_CB(msg));</span><br><span>          break;</span><br><span>       case BSC_RLLR_IND_REL_IND:</span><br><span style="color: hsl(120, 100%, 40%);">+            bsc_sapi_n_reject(lchan->conn, OBSC_LINKID_CB(msg),</span><br><span style="color: hsl(120, 100%, 40%);">+                                  GSM0808_CAUSE_MS_NOT_EQUIPPED);</span><br><span style="color: hsl(120, 100%, 40%);">+             msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span>       case BSC_RLLR_IND_ERR_IND:</span><br><span>   case BSC_RLLR_IND_TIMEOUT:</span><br><span style="color: hsl(0, 100%, 40%);">-              bsc_sapi_n_reject(lchan->conn, OBSC_LINKID_CB(msg));</span><br><span style="color: hsl(120, 100%, 40%);">+               bsc_sapi_n_reject(lchan->conn, OBSC_LINKID_CB(msg),</span><br><span style="color: hsl(120, 100%, 40%);">+                                  GSM0808_CAUSE_BSS_NOT_EQUIPPED);</span><br><span>           msgb_free(msg);</span><br><span>              break;</span><br><span>       }</span><br><span>@@ -1078,7 +1083,7 @@</span><br><span>            rc = rll_establish(msg->lchan, sapi, rll_ind_cb, msg);</span><br><span>            if (rc) {</span><br><span>                    msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-                 bsc_sapi_n_reject(conn, link_id);</span><br><span style="color: hsl(120, 100%, 40%);">+                     bsc_sapi_n_reject(conn, link_id, GSM0808_CAUSE_BSS_NOT_EQUIPPED);</span><br><span>                    goto failed_to_send;</span><br><span>                 }</span><br><span>            return;</span><br><span>diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c</span><br><span>index e5457c4..59032d6 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>@@ -60,7 +60,8 @@</span><br><span> }</span><br><span> </span><br><span> /*! BTS->MSC: tell MSC a SAPI was not established. */</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci)</span><br><span style="color: hsl(120, 100%, 40%);">+void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(120, 100%, 40%);">+                    uint8_t dlci, enum gsm0808_cause cause)</span><br><span> {</span><br><span>  int rc;</span><br><span>      struct msgb *resp;</span><br><span>@@ -68,8 +69,9 @@</span><br><span>       if (!msc_connected(conn))</span><br><span>            return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     LOGP(DMSC, LOGL_NOTICE, "Tx MSC SAPI N REJECT DLCI=0x%02x\n", dlci);</span><br><span style="color: hsl(0, 100%, 40%);">-  resp = gsm0808_create_sapi_reject(dlci);</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGP(DMSC, LOGL_NOTICE, "Tx MSC SAPI N REJECT (dlci=0x%02x, cause='%s')\n",</span><br><span style="color: hsl(120, 100%, 40%);">+      dlci, gsm0808_cause_name(cause));</span><br><span style="color: hsl(120, 100%, 40%);">+        resp = gsm0808_create_sapi_reject_cause(dlci, cause);</span><br><span>        rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_SAPI_N_REJECT]);</span><br><span>      rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);</span><br><span>    if (rc != 0)</span><br><span>diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c</span><br><span>index 86d8972..d999608 100644</span><br><span>--- a/tests/bsc/bsc_test.c</span><br><span>+++ b/tests/bsc/bsc_test.c</span><br><span>@@ -223,7 +223,7 @@</span><br><span>      OSMO_ASSERT(0);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci) {}</span><br><span style="color: hsl(120, 100%, 40%);">+void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {}</span><br><span> void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_encr) {}</span><br><span> int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg, uint16_t chosen_channel)</span><br><span> { return 0; }</span><br><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index 31d4b6f..78e8daf 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -1794,7 +1794,7 @@</span><br><span> void trau_send_frame() {}</span><br><span> int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg) { return 0; }</span><br><span> int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci) {}</span><br><span style="color: hsl(120, 100%, 40%);">+void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {}</span><br><span> void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_encr) {}</span><br><span> int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg, uint16_t chosen_channel)</span><br><span> { return 0; }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/19826">change 19826</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/+/19826"/><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: I38222e60071841abcd06046a472ddb35907164a4 </div>
<div style="display:none"> Gerrit-Change-Number: 19826 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>