<p>Neels Hofmeyr <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11667">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lchan release: always Deact SACCH<br><br>If an lchan is being released and had a SACCH active, there is no reason to<br>omit the Deact SACCH message ever. All of the callers that passed<br>do_deact_sacch = false did so for no good reason.<br><br>Drop the do_deact_sacch flag everywhere and, when the lchan type matches and<br>SAPI[0] is still active, simply always send a Deact SACCH message.<br><br>The do_deact_sacch flag was carried over from legacy code, by me, mainly<br>because I never really understood why it was there. I do hope I'm correct now,<br>asserting that having this flag makes no sense.<br><br>Change-Id: Id3301df059582da2377ef82feae554e94fa42035<br>---<br>M include/osmocom/bsc/bsc_subscr_conn_fsm.h<br>M include/osmocom/bsc/gsm_data.h<br>M include/osmocom/bsc/lchan_fsm.h<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/assignment_fsm.c<br>M src/osmo-bsc/bsc_subscr_conn_fsm.c<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/gsm_04_08_rr.c<br>M src/osmo-bsc/gsm_08_08.c<br>M src/osmo-bsc/handover_fsm.c<br>M src/osmo-bsc/lchan_fsm.c<br>M tests/gsm0408/gsm0408_test.c<br>M tests/handover/handover_test.c<br>13 files changed, 32 insertions(+), 32 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bsc_subscr_conn_fsm.h b/include/osmocom/bsc/bsc_subscr_conn_fsm.h</span><br><span>index fcdba50..f5ed7bd 100644</span><br><span>--- a/include/osmocom/bsc/bsc_subscr_conn_fsm.h</span><br><span>+++ b/include/osmocom/bsc/bsc_subscr_conn_fsm.h</span><br><span>@@ -71,7 +71,7 @@</span><br><span>                        struct assignment_request *req);</span><br><span> </span><br><span> void gscon_change_primary_lchan(struct gsm_subscriber_connection *conn, struct gsm_lchan *new_lchan);</span><br><span style="color: hsl(0, 100%, 40%);">-void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_sacch_deact, bool do_rr_release);</span><br><span style="color: hsl(120, 100%, 40%);">+void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_rr_release);</span><br><span> </span><br><span> void gscon_lchan_releasing(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan);</span><br><span> void gscon_forget_lchan(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan);</span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index 5805a5f..3712b97 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -513,7 +513,6 @@</span><br><span>     /* If an event to release the lchan comes in while still waiting for responses, just mark this</span><br><span>        * flag, so that the lchan will gracefully release at the next sensible junction. */</span><br><span>         bool release_requested;</span><br><span style="color: hsl(0, 100%, 40%);">- bool deact_sacch;</span><br><span>    bool do_rr_release;</span><br><span> </span><br><span>      char *last_error;</span><br><span>diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h</span><br><span>index d3315a6..48cd383 100644</span><br><span>--- a/include/osmocom/bsc/lchan_fsm.h</span><br><span>+++ b/include/osmocom/bsc/lchan_fsm.h</span><br><span>@@ -49,7 +49,7 @@</span><br><span> void lchan_fsm_init();</span><br><span> </span><br><span> void lchan_fsm_alloc(struct gsm_lchan *lchan);</span><br><span style="color: hsl(0, 100%, 40%);">-void lchan_release(struct gsm_lchan *lchan, bool do_deact_sacch, bool do_rr_release,</span><br><span style="color: hsl(120, 100%, 40%);">+void lchan_release(struct gsm_lchan *lchan, bool do_rr_release,</span><br><span>             bool err, enum gsm48_rr_cause cause_rr);</span><br><span> </span><br><span> struct lchan_activate_info {</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index 0ec8fbc..c16f044 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -896,7 +896,7 @@</span><br><span>        * the connection will presumably be torn down and lead to an lchan release. During initial</span><br><span>   * Channel Request from the MS, an lchan has no conn yet, so in that case release now. */</span><br><span>    if (!lchan->conn) {</span><br><span style="color: hsl(0, 100%, 40%);">-          lchan_release(lchan, false, false, true, *cause_p);</span><br><span style="color: hsl(120, 100%, 40%);">+           lchan_release(lchan, false, true, *cause_p);</span><br><span>         } else</span><br><span>               osmo_fsm_inst_dispatch(lchan->conn->fi, GSCON_EV_RSL_CONN_FAIL, (void*)cause_p);</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c</span><br><span>index 653681e..93362f8 100644</span><br><span>--- a/src/osmo-bsc/assignment_fsm.c</span><br><span>+++ b/src/osmo-bsc/assignment_fsm.c</span><br><span>@@ -98,7 +98,7 @@</span><br><span>      if (conn->assignment.new_lchan) {</span><br><span>                 struct gsm_lchan *lchan = conn->assignment.new_lchan;</span><br><span>             conn->assignment.new_lchan = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+             lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>   }</span><br><span> </span><br><span>        if (conn->assignment.created_ci_for_msc) {</span><br><span>@@ -213,7 +213,7 @@</span><br><span>  if (!conn->assignment.fi) {</span><br><span>               /* The lchan was ready, and we failed to tell the MSC about it. By releasing this lchan,</span><br><span>              * the conn will notice that its primary lchan is gone and should clean itself up. */</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan_release(conn->lchan, false, true, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+             lchan_release(conn->lchan, true, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>           return;</span><br><span>      }</span><br><span> </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 5856d7a..ec06e9b 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>@@ -152,7 +152,7 @@</span><br><span> </span><br><span> /* Release an lchan in such a way that it doesn't fire events back to the conn. */</span><br><span> static void gscon_release_lchan(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan,</span><br><span style="color: hsl(0, 100%, 40%);">-                              bool do_sacch_deact, bool do_rr_release, bool err, enum gsm48_rr_cause cause_rr)</span><br><span style="color: hsl(120, 100%, 40%);">+                              bool do_rr_release, bool err, enum gsm48_rr_cause cause_rr)</span><br><span> {</span><br><span>     if (!lchan || !conn)</span><br><span>                 return;</span><br><span>@@ -164,17 +164,17 @@</span><br><span>              conn->ho.new_lchan = NULL;</span><br><span>        if (conn->assignment.new_lchan == lchan)</span><br><span>          conn->assignment.new_lchan = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-   lchan_release(lchan, do_sacch_deact, do_rr_release, err, cause_rr);</span><br><span style="color: hsl(120, 100%, 40%);">+   lchan_release(lchan, do_rr_release, err, cause_rr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_sacch_deact, bool do_rr_release)</span><br><span style="color: hsl(120, 100%, 40%);">+void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_rr_release)</span><br><span> {</span><br><span>   if (conn->ho.fi)</span><br><span>          handover_end(conn, HO_RESULT_CONN_RELEASE);</span><br><span> </span><br><span>      assignment_reset(conn);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     gscon_release_lchan(conn, conn->lchan, do_sacch_deact, do_rr_release, false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+   gscon_release_lchan(conn, conn->lchan, do_rr_release, false, 0);</span><br><span> }</span><br><span> </span><br><span> static void handle_bssap_n_connect(struct osmo_fsm_inst *fi, struct osmo_scu_prim *scu_prim)</span><br><span>@@ -620,7 +620,7 @@</span><br><span>           osmo_fsm_inst_dispatch(conn->lchan->fi_rtp, LCHAN_RTP_EV_ESTABLISHED, 0);</span><br><span> </span><br><span>  if (old_lchan && (old_lchan != new_lchan))</span><br><span style="color: hsl(0, 100%, 40%);">-              gscon_release_lchan(conn, old_lchan, false, false, false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+         gscon_release_lchan(conn, old_lchan, false, false, 0);</span><br><span> }</span><br><span> </span><br><span> void gscon_lchan_releasing(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan)</span><br><span>@@ -716,7 +716,7 @@</span><br><span>                 if (conn->fi->state != ST_CLEARING)</span><br><span>                    osmo_fsm_inst_state_chg(fi, ST_CLEARING, 60, 999);</span><br><span>           LOGPFSML(fi, LOGL_DEBUG, "Releasing all lchans (if any) after BSSMAP Clear Command\n");</span><br><span style="color: hsl(0, 100%, 40%);">-               gscon_release_lchans(conn, true, true);</span><br><span style="color: hsl(120, 100%, 40%);">+               gscon_release_lchans(conn, true);</span><br><span>            /* FIXME: Release all terestrial resources in ST_CLEARING */</span><br><span>                 /* According to 3GPP 48.008 3.1.9.1. "The BSS need not wait for the radio channel</span><br><span>                * release to be completed or for the guard timer to expire before returning the</span><br><span>@@ -792,7 +792,7 @@</span><br><span>       }</span><br><span> </span><br><span>        LOGPFSML(fi, LOGL_DEBUG, "Releasing all lchans (if any) because this conn is terminating\n");</span><br><span style="color: hsl(0, 100%, 40%);">- gscon_release_lchans(conn, false, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      gscon_release_lchans(conn, true);</span><br><span> </span><br><span>        /* drop pending messages */</span><br><span>  gscon_dtap_queue_flush(conn, 0);</span><br><span>@@ -806,7 +806,7 @@</span><br><span> </span><br><span>   switch (fi->T) {</span><br><span>  case 993210:</span><br><span style="color: hsl(0, 100%, 40%);">-            gscon_release_lchan(conn, conn->lchan, false, true, true, RSL_ERR_INTERWORKING);</span><br><span style="color: hsl(120, 100%, 40%);">+           gscon_release_lchan(conn, conn->lchan, true, true, RSL_ERR_INTERWORKING);</span><br><span> </span><br><span>             /* MSC has not responded/confirmed connection with CC, this</span><br><span>           * could indicate a bad SCCP connection. We now inform the the</span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 9f42d8a..8eb0692 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -4588,7 +4588,7 @@</span><br><span>          }</span><br><span>            vty_out(vty, "%% Asking for release of %s in state %s%s", gsm_lchan_name(lchan),</span><br><span>                   osmo_fsm_inst_state_name(lchan->fi), VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan_release(lchan, false, !!(lchan->conn), false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+            lchan_release(lchan, !!(lchan->conn), false, 0);</span><br><span>  }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span>diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>index c3dd307..4659c1a 100644</span><br><span>--- a/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>+++ b/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>@@ -942,7 +942,7 @@</span><br><span>           /* allocate a new connection */</span><br><span>              lchan->conn = bsc_subscr_con_allocate(msg->lchan->ts->trx->bts->network);</span><br><span>          if (!lchan->conn) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   return -1;</span><br><span>           }</span><br><span>            lchan->conn->lchan = lchan;</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 48e87fc..062c878 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>@@ -525,7 +525,7 @@</span><br><span>                 /* FIXME: I have not the slightest idea what move_to_msc() intends to do; during lchan</span><br><span>                * FSM introduction, I changed this and hope it is the appropriate action. I actually</span><br><span>                 * assume this is unused legacy code for osmo-bsc_nat?? */</span><br><span style="color: hsl(0, 100%, 40%);">-              gscon_release_lchans(_conn, false, false);</span><br><span style="color: hsl(120, 100%, 40%);">+            gscon_release_lchans(_conn, false);</span><br><span>          return 1;</span><br><span>    }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c</span><br><span>index 8076eeb..f2836cf 100644</span><br><span>--- a/src/osmo-bsc/handover_fsm.c</span><br><span>+++ b/src/osmo-bsc/handover_fsm.c</span><br><span>@@ -243,7 +243,7 @@</span><br><span>         struct mgwep_ci *ci;</span><br><span>         if (conn->ho.new_lchan)</span><br><span>           /* New lchan was activated but never passed to a conn */</span><br><span style="color: hsl(0, 100%, 40%);">-                lchan_release(conn->ho.new_lchan, true, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+              lchan_release(conn->ho.new_lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span> </span><br><span>       ci = conn->ho.created_ci_for_msc;</span><br><span>         if (ci) {</span><br><span>@@ -725,7 +725,7 @@</span><br><span>                              /* 3GPP TS 48.008 3.1.5.3.3 "Abnormal Conditions": if neither MS reports</span><br><span>                            * HO Failure nor the MSC sends a Clear Command, we should release the</span><br><span>                                * dedicated radio resources and send a Clear Request to the MSC. */</span><br><span style="color: hsl(0, 100%, 40%);">-                            lchan_release(conn->lchan, false, true, true, GSM48_RR_CAUSE_ABNORMAL_TIMER);</span><br><span style="color: hsl(120, 100%, 40%);">+                              lchan_release(conn->lchan, true, true, GSM48_RR_CAUSE_ABNORMAL_TIMER);</span><br><span>                            /* Once the channel release is through, the BSSMAP Clear will follow. */</span><br><span>                             break;</span><br><span>                       }</span><br><span>@@ -756,7 +756,7 @@</span><br><span>      /* Detach the new_lchan last, so we can still see it in above logging */</span><br><span>     if (ho->new_lchan) {</span><br><span>              /* Release new lchan, it didn't work out */</span><br><span style="color: hsl(0, 100%, 40%);">-         lchan_release(ho->new_lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+          lchan_release(ho->new_lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                ho->new_lchan = NULL;</span><br><span>     }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c</span><br><span>index f432644..5428d97 100644</span><br><span>--- a/src/osmo-bsc/lchan_fsm.c</span><br><span>+++ b/src/osmo-bsc/lchan_fsm.c</span><br><span>@@ -156,14 +156,14 @@</span><br><span>                   LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for assignment succeeded, but lchan has no conn:"</span><br><span>                                " cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                 lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            if (!lchan->conn->assignment.fi) {</span><br><span>                     LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for assignment succeeded, but lchan has no"</span><br><span>                              " assignment ongoing: cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                     lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            osmo_fsm_inst_dispatch(lchan->conn->assignment.fi, ASSIGNMENT_EV_LCHAN_ESTABLISHED,</span><br><span>@@ -177,14 +177,14 @@</span><br><span>            if (!lchan->conn) {</span><br><span>                       LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for handover succeeded, but lchan has no conn\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                        lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            if (!lchan->conn->ho.fi) {</span><br><span>                     LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for handover succeeded, but lchan has no"</span><br><span>                                " handover ongoing\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                     lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            osmo_fsm_inst_dispatch(lchan->conn->ho.fi, HO_EV_LCHAN_ESTABLISHED, lchan);</span><br><span>@@ -720,14 +720,14 @@</span><br><span>                    LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for assignment succeeded, but lchan has no conn:"</span><br><span>                                " cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                 lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            if (!lchan->conn->assignment.fi) {</span><br><span>                     LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for assignment succeeded, but lchan has no"</span><br><span>                              " assignment ongoing: cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                     lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            /* After the Chan Activ Ack, the MS expects to receive an RR Assignment Command.</span><br><span>@@ -740,14 +740,14 @@</span><br><span>                     LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for handover succeeded, but lchan has no conn:"</span><br><span>                                  " cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                 lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            if (!lchan->conn->ho.fi) {</span><br><span>                     LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span>                                   "lchan activation for handover succeeded, but lchan has no"</span><br><span>                                " handover ongoing: cannot trigger appropriate actions. Release.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                       lchan_release(lchan, false, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     lchan_release(lchan, false, true, RSL_ERR_EQUIPMENT_FAIL);</span><br><span>                   break;</span><br><span>               }</span><br><span>            /* After the Chan Activ Ack of the new lchan, send the MS an RR Handover Command on the</span><br><span>@@ -935,7 +935,7 @@</span><br><span>        if (lchan->fi_rtp)</span><br><span>                osmo_fsm_inst_dispatch(lchan->fi_rtp, LCHAN_RTP_EV_RELEASE, 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (lchan->deact_sacch && should_sacch_deact(lchan))</span><br><span style="color: hsl(120, 100%, 40%);">+       if (should_sacch_deact(lchan))</span><br><span>               rsl_deact_sacch(lchan);</span><br><span> }</span><br><span> </span><br><span>@@ -1296,7 +1296,7 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void lchan_release(struct gsm_lchan *lchan, bool sacch_deact, bool do_rr_release,</span><br><span style="color: hsl(120, 100%, 40%);">+void lchan_release(struct gsm_lchan *lchan, bool do_rr_release,</span><br><span>                    bool err, enum gsm48_rr_cause cause_rr)</span><br><span> {</span><br><span>      if (!lchan || !lchan->fi)</span><br><span>@@ -1309,7 +1309,6 @@</span><br><span>         struct osmo_fsm_inst *fi = lchan->fi;</span><br><span>     lchan->release_in_error = err;</span><br><span>    lchan->rsl_error_cause = cause_rr;</span><br><span style="color: hsl(0, 100%, 40%);">-   lchan->deact_sacch = sacch_deact;</span><br><span>         lchan->do_rr_release = do_rr_release;</span><br><span> </span><br><span>         /* States waiting for events will notice the desire to release when done waiting, so it is enough</span><br><span>diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c</span><br><span>index 1e6a097..d15e149 100644</span><br><span>--- a/tests/gsm0408/gsm0408_test.c</span><br><span>+++ b/tests/gsm0408/gsm0408_test.c</span><br><span>@@ -986,7 +986,7 @@</span><br><span> </span><br><span> const char *bsc_subscr_name(struct bsc_subscr *bsub) { return NULL; }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void lchan_release(struct gsm_lchan *lchan, bool do_deact_sacch, bool do_rr_release,</span><br><span style="color: hsl(120, 100%, 40%);">+void lchan_release(struct gsm_lchan *lchan, bool do_rr_release,</span><br><span>              bool err, enum gsm48_rr_cause cause_rr) {}</span><br><span> </span><br><span> int rsl_data_request(struct msgb *msg, uint8_t link_id) { return 0; }</span><br><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index 7cb4086..f728c5b 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -462,6 +462,8 @@</span><br><span>                break;</span><br><span>       case RSL_MT_IPAC_CRCX:</span><br><span>               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case RSL_MT_DEACTIVATE_SACCH:</span><br><span style="color: hsl(120, 100%, 40%);">+         break;</span><br><span>       default:</span><br><span>             printf("unknown rsl message=0x%x\n", dh->c.msg_type);</span><br><span>   }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11667">change 11667</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/11667"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Id3301df059582da2377ef82feae554e94fa42035 </div>
<div style="display:none"> Gerrit-Change-Number: 11667 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>