<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12820">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Test CSFB "Fast Return" in new TC_chan_rel_hard_clear_csfb<br><br>When a MSC releases a connection using the BSSMAP CLEAR CMD, it can<br>specify that this call was part of CSFB.<br><br>The BSC is then supposed to add a special IE to the RR RELEASE<br>message which will help the phone to switch back to LTE as soon<br>as possible.<br><br>This commit adds a new test case testing for exactly that behavior.<br><br>The test does *not* verify if the EARFCN information contained is<br>actually correct, only that the IE is present in the RR RELEASE.<br><br>Change-Id: I7501fb25578412c882ff92da5d388f3079bbce7f<br>Requires: osmo-bsc Ibfbb87e2e16b05032ad1cb91c11fad1b2f76d755<br>Related: OS#3777<br>---<br>M bsc/BSC_Tests.ttcn<br>M library/BSSMAP_Templates.ttcn<br>M library/L3_Templates.ttcn<br>3 files changed, 56 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/20/12820/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 0a36d63..6dd1564 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -856,7 +856,8 @@</span><br><span>                     boolean expect_deact_sacch := true,</span><br><span>                          boolean expect_rr_chan_rel := true,</span><br><span>                          boolean expect_rll_rel_req := true,</span><br><span style="color: hsl(0, 100%, 40%);">-                     boolean handle_rll_rel := true</span><br><span style="color: hsl(120, 100%, 40%);">+                        boolean handle_rll_rel := true,</span><br><span style="color: hsl(120, 100%, 40%);">+                       boolean is_csfb := false</span><br><span>                     ) runs on test_CT {</span><br><span> </span><br><span>   var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));</span><br><span>@@ -871,7 +872,11 @@</span><br><span>             got_deact_sacch := true;</span><br><span>             repeat;</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) {</span><br><span style="color: hsl(120, 100%, 40%);">+ [is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE_CSFB))) {</span><br><span style="color: hsl(120, 100%, 40%);">+             got_rr_chan_rel := true;</span><br><span style="color: hsl(120, 100%, 40%);">+              repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     [not is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) {</span><br><span>             got_rr_chan_rel := true;</span><br><span>             repeat;</span><br><span>      }</span><br><span>@@ -932,6 +937,29 @@</span><br><span>     setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Test behavior of channel release after Clear Command with CSFB indicator from MSC */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_chan_rel_hard_clear_csfb() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var BSSAP_N_DATA_ind rx_di;</span><br><span style="color: hsl(120, 100%, 40%);">+   var DchanTuple dt;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init(1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  dt := f_est_dchan('23'O, 23, '00010203040506'O);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Instruct BSC to clear channel */</span><br><span style="color: hsl(120, 100%, 40%);">+   var BssmapCause cause := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+   BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommandCSFB(cause)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* expect Clear Complete from BSC on A */</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          /* release the SCCP connection */</span><br><span style="color: hsl(120, 100%, 40%);">+             BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false, is_csfb := true);</span><br><span style="color: hsl(120, 100%, 40%);">+   setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Test behavior of channel release after hard RLSD from MSC */</span><br><span> testcase TC_chan_rel_hard_rlsd() runs on test_CT {</span><br><span>      var DchanTuple dt;</span><br><span>@@ -3414,6 +3442,7 @@</span><br><span>   execute( TC_chan_rel_rll_rel_ind() );</span><br><span>        execute( TC_chan_rel_conn_fail() );</span><br><span>  execute( TC_chan_rel_hard_clear() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_chan_rel_hard_clear_csfb() );</span><br><span>    execute( TC_chan_rel_hard_rlsd() );</span><br><span>  execute( TC_chan_rel_hard_rlsd_ms_dead() );</span><br><span>  execute( TC_chan_rel_a_reset() );</span><br><span>diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn</span><br><span>index ff151f0..a30b8e7 100644</span><br><span>--- a/library/BSSMAP_Templates.ttcn</span><br><span>+++ b/library/BSSMAP_Templates.ttcn</span><br><span>@@ -612,6 +612,18 @@</span><br><span>            }</span><br><span>    }</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PDU_BSSAP ts_BSSMAP_ClearCommandCSFB(BssmapCause cause)</span><br><span style="color: hsl(120, 100%, 40%);">+modifies ts_BSSMAP_ClearCommand := {</span><br><span style="color: hsl(120, 100%, 40%);">+        pdu := {</span><br><span style="color: hsl(120, 100%, 40%);">+              bssmap := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   clearCommand := {</span><br><span style="color: hsl(120, 100%, 40%);">+                             cSFB_Indication := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  elementIdentifier := '8F'O</span><br><span style="color: hsl(120, 100%, 40%);">+                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> template PDU_BSSAP tr_BSSMAP_ClearCommand modifies tr_BSSAP_BSSMAP := {</span><br><span>  pdu := {</span><br><span>diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn</span><br><span>index 0b714d3..6099303 100644</span><br><span>--- a/library/L3_Templates.ttcn</span><br><span>+++ b/library/L3_Templates.ttcn</span><br><span>@@ -692,6 +692,19 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_ML3_NW_MS tr_RRM_RR_RELEASE_CSFB(template OCT1 cause := ?) modifies tr_RRM_RR_RELEASE := {</span><br><span style="color: hsl(120, 100%, 40%);">+   msgs := {</span><br><span style="color: hsl(120, 100%, 40%);">+             rrm := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      channelRelease := {</span><br><span style="color: hsl(120, 100%, 40%);">+                           cellSelectionIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                   elementIdentifier := '77'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   lengthIndicator := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 cellSelectionIndicatorValue := ?</span><br><span style="color: hsl(120, 100%, 40%);">+                              }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> template PDU_ML3_MS_NW ts_ML3_MO := {</span><br><span>    discriminator := '0000'B,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12820">change 12820</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/12820"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I7501fb25578412c882ff92da5d388f3079bbce7f </div>
<div style="display:none"> Gerrit-Change-Number: 12820 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>