<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18239">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: use correct RA type to properly test 2phase access<br><br>Old code was not setting Single Block Packet Access type, and 2phase<br>access was not properly triggered.<br><br>Once it's triggered, message flow changes quite a lot from the 1phase<br>access, specially because the 2nd Ul Assignment arrives through PDCH<br>instead of CCCH, which means a different record is received and hence<br>code for 1phase cannot be easily re-used.<br><br>For similar reasons, f_tx_rlcmac_ul_n_blocks() is modified to receive<br>the only required tfi param instead of a full dl_block.<br><br>Some functions are also extended to support SingleBlock Allocation<br>instead of usual DynamicAllocation.<br><br>Change-Id: If636a4898dfa175fdbd6baf04f7f2c955a9c525d<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 117 insertions(+), 31 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/39/18239/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index 5ef53a9..b130321 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -243,12 +243,28 @@</span><br><span>  receive_block_bitmap := '0000000000000000000000000000000000000000000000000000000000000000'B</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_rlcmac_dl_block_get_tfi(RlcmacDlBlock dl_block) return uint5_t {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rlcmac_dl_block_get_tfi(RlcmacDlBlock dl_block)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_PCU_Test_CT return uint5_t {</span><br><span>        if (ischosen(dl_block.data)) {</span><br><span>               return dl_block.data.mac_hdr.hdr_ext.tfi;</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(120, 100%, 40%);">+      } else if (ischosen(dl_block.data_egprs)) {</span><br><span>          return dl_block.data_egprs.mac_hdr.tfi;</span><br><span style="color: hsl(120, 100%, 40%);">+       } else { /* Ctrl block */</span><br><span style="color: hsl(120, 100%, 40%);">+             if (ischosen(dl_block.ctrl.payload.u.ul_assignment)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (ischosen(dl_block.ctrl.payload.u.ul_assignment)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                if (dl_block.ctrl.payload.u.ul_assignment.is_egprs == '0'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                 if (ispresent(dl_block.ctrl.payload.u.ul_assignment.gprs.dyn_block_alloc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                          if (dl_block.ctrl.payload.u.ul_assignment.gprs.dyn_block_alloc.ul_tfi_ass_present == '1'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  return dl_block.ctrl.payload.u.ul_assignment.gprs.dyn_block_alloc.ul_tfi_assignment;</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 style="color: hsl(120, 100%, 40%);">+     setverdict(fail, "DlBlock doesn't contain a TFI:", dl_block);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+      return 0; /* make compiler happy */</span><br><span> }</span><br><span> </span><br><span> /* TS 44.060 sec 12.3 Ack/Nack Description */</span><br><span>@@ -381,11 +397,11 @@</span><br><span>                                  bts_nr := bts_nr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_imm_ass_verify_ul_tbf_ass(in GsmRrMessage rr_imm_ass, out PacketUlAssign ul_tbf_ass)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_imm_ass_verify_ul_tbf_ass(in GsmRrMessage rr_imm_ass, out PacketUlAssign ul_tbf_ass, template PacketUlAssign ul_ass := tr_PacketUlDynAssign)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span> </span><br><span>       /* Make sure we received an UL TBF Assignment */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (match(rr_imm_ass, tr_IMM_TBF_ASS(dl := false, rest := tr_IaRestOctets_ULAss(?)))) {</span><br><span style="color: hsl(120, 100%, 40%);">+       if (match(rr_imm_ass, tr_IMM_TBF_ASS(dl := false, rest := tr_IaRestOctets_ULAss(ul_ass)))) {</span><br><span>                 ul_tbf_ass := rr_imm_ass.payload.imm_ass.rest_octets.hh.pa.uldl.ass.ul;</span><br><span>              log("Rx Uplink TBF assignment: ", ul_tbf_ass);</span><br><span>             setverdict(pass);</span><br><span>@@ -393,12 +409,6 @@</span><br><span>             setverdict(fail, "Failed to match UL TBF Assignment");</span><br><span>             f_shutdown(__BFILE__, __LINE__);</span><br><span>     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* Make sure we have got a TBF with Dynamic Block Allocation */</span><br><span style="color: hsl(0, 100%, 40%);">- if (ul_tbf_ass.dynamic == omit) {</span><br><span style="color: hsl(0, 100%, 40%);">-               setverdict(fail, "Single Block Allocation is not handled by ", testcasename());</span><br><span style="color: hsl(0, 100%, 40%);">-               f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span> }</span><br><span> </span><br><span> private function f_imm_ass_verify_dl_tbf_ass(in GsmRrMessage rr_imm_ass, out PacketDlAssign dl_tbf_ass)</span><br><span>@@ -503,10 +513,10 @@</span><br><span>        f_pcuif_tx_data_ind(data, lqual_cb, fn);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_tx_rlcmac_ul_n_blocks(PacketUlAssign ul_tbf_ass, integer num_blocks := 1, template (omit) GprsTlli tlli := omit)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tx_rlcmac_ul_n_blocks(uint5_t tfi, integer num_blocks := 1, template (omit) GprsTlli tlli := omit)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>     var template (value) RlcmacUlBlock ul_data := t_RLCMAC_UL_DATA(</span><br><span style="color: hsl(0, 100%, 40%);">-         tfi := ul_tbf_ass.dynamic.tfi_assignment,</span><br><span style="color: hsl(120, 100%, 40%);">+             tfi := tfi,</span><br><span>          cv := num_blocks - 1, /* num UL blocks to be sent (to be overridden in loop) */</span><br><span>              bsn := 0, /* TODO: what should be here? */</span><br><span>           blocks := { /* To be generated in loop */ });</span><br><span>@@ -589,6 +599,19 @@</span><br><span>         poll_fn := f_rrbp_ack_fn(dl_fn, dl_block.ctrl.mac_hdr.rrbp);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rx_rlcmac_dl_block_exp_pkt_dl_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint32_t dl_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rx_rlcmac_dl_block(dl_block, dl_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (not match(dl_block, tr_RLCMAC_DL_PACKET_ASS())) {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "Failed to match Packet Uplink Assignment");</span><br><span style="color: hsl(120, 100%, 40%);">+               f_shutdown(__BFILE__, __LINE__);</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%);">+ poll_fn := f_rrbp_ack_fn(dl_fn, dl_block.ctrl.mac_hdr.rrbp);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> private function f_rx_rlcmac_dl_block_exp_pkt_pag_req(out RlcmacDlBlock dl_block)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>@@ -1298,7 +1321,7 @@</span><br><span> </span><br><span>  /* Send one UL block (with TLLI since we are in One-Phase Access</span><br><span>        contention resoultion) and make sure it is ACKED fine */</span><br><span style="color: hsl(0, 100%, 40%);">-     f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1, tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tx_rlcmac_ul_n_blocks(ul_tbf_ass.dynamic.tfi_assignment, 1, tlli);</span><br><span>         f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn);</span><br><span>      /* UL block should be received in SGSN */</span><br><span>    BSSGP[0].receive(tr_BSSGP_UL_UD(tlli, mp_gb_cfg.cell_id));</span><br><span>@@ -1307,7 +1330,7 @@</span><br><span>   f_sleep(int2float(info_ind.t3169) + 1.0);</span><br><span> </span><br><span>        /* Send an UL block once again, the TBF should be gone by now so no ACK */</span><br><span style="color: hsl(0, 100%, 40%);">-      f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_tx_rlcmac_ul_n_blocks(ul_tbf_ass.dynamic.tfi_assignment, 1);</span><br><span>       f_rx_rlcmac_dl_block_exp_dummy(dl_block);</span><br><span> </span><br><span>        f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span>@@ -1374,7 +1397,7 @@</span><br><span> /* Test scenario where MS wants to send some data on PDCH against SGSN and it is</span><br><span>  * answered, so TBFs for uplink and later for downlink are created.</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_TC_mo_ping_pong(template (omit) MSRadioAccessCapabilityV ms_racap := omit, template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_mo_ping_pong_1phase_access(template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT {</span><br><span>       var GsmRrMessage rr_imm_ass;</span><br><span>         var PacketUlAssign ul_tbf_ass;</span><br><span>       var PacketDlAssign dl_tbf_ass;</span><br><span>@@ -1407,21 +1430,9 @@</span><br><span>      /* Make sure we've got an Uplink TBF assignment */</span><br><span>       f_imm_ass_verify_ul_tbf_ass(rr_imm_ass, ul_tbf_ass);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (not istemplatekind(ms_racap, "omit")) {</span><br><span style="color: hsl(0, 100%, 40%);">-           /* Send PACKET RESOURCE REQUEST to upgrade to EGPRS</span><br><span style="color: hsl(0, 100%, 40%);">-              * (see 3GPP TS 04.60 "7.1.3.1 Initiation of the Packet resource request procedure")</span><br><span style="color: hsl(0, 100%, 40%);">-           */</span><br><span style="color: hsl(0, 100%, 40%);">-             f_tx_rlcmac_ul_block(ts_RLC_UL_CTRL_ACK(valueof(ts_RlcMacUlCtrl_PKT_RES_REQ(tlli, ms_racap))), 0);</span><br><span style="color: hsl(0, 100%, 40%);">-              f_rx_rlcmac_dl_block_exp_pkt_ul_ass(dl_block, sched_fn);</span><br><span style="color: hsl(0, 100%, 40%);">-                if (dl_block.ctrl.payload.u.ul_assignment.identity.tlli.tlli != tlli) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 setverdict(fail, "Wrong TLLI ", dl_block.ctrl.payload.u.ul_assignment.identity.tlli, " received vs exp ", tlli);</span><br><span style="color: hsl(0, 100%, 40%);">-                    f_shutdown(__BFILE__, __LINE__);</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%);">-</span><br><span>    /* Send one UL block (with TLLI since we are in One-Phase Access</span><br><span>        contention resoultion) and make sure it is ACKED fine */</span><br><span style="color: hsl(0, 100%, 40%);">-     f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1, tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tx_rlcmac_ul_n_blocks(ul_tbf_ass.dynamic.tfi_assignment, 1, tlli);</span><br><span>         f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);</span><br><span>       /* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span>       f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);</span><br><span>@@ -1453,9 +1464,84 @@</span><br><span>  */</span><br><span> testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT {</span><br><span>         var CodingScheme exp_cs_mcs := CS_1;</span><br><span style="color: hsl(0, 100%, 40%);">-    f_TC_mo_ping_pong(omit, exp_cs_mcs);</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_mo_ping_pong_1phase_access(exp_cs_mcs);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Test scenario where MS wants to send some data on PDCH against SGSN and it is</span><br><span style="color: hsl(120, 100%, 40%);">+ * answered, so TBFs for uplink and later for downlink are created.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_mo_ping_pong_2phase_access(template (value) MSRadioAccessCapabilityV ms_racap, template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    var GsmRrMessage rr_imm_ass;</span><br><span style="color: hsl(120, 100%, 40%);">+  var PacketUlAssign ul_tbf_ass;</span><br><span style="color: hsl(120, 100%, 40%);">+        var PacketDlAssign dl_tbf_ass;</span><br><span style="color: hsl(120, 100%, 40%);">+        var RlcmacDlBlock dl_block;</span><br><span style="color: hsl(120, 100%, 40%);">+   var PCUIF_Message pcu_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring data := f_rnd_octstring(10);</span><br><span style="color: hsl(120, 100%, 40%);">+  var boolean ok;</span><br><span style="color: hsl(120, 100%, 40%);">+       var uint32_t sched_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint32_t dl_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+   var OCT4 tlli := '00000001'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ var AckNackDescription ack_nack_desc := valueof(t_AckNackDescription_init);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* 0111 0xxx: Single block packet access; one block period on a PDCH is needed for two phase packet access or other RR signalling purpose. */</span><br><span style="color: hsl(120, 100%, 40%);">+ var uint16_t ra := oct2int('70'O);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Initialize NS/BSSGP side */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_bssgp();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Initialize the PCU interface abstraction */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_raw(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Establish BSSGP connection to the PCU */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_bssgp_establish();</span><br><span style="color: hsl(120, 100%, 40%);">+  f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Establish an Uplink TBF */</span><br><span style="color: hsl(120, 100%, 40%);">+ ok := f_establish_tbf(rr_imm_ass, ra := ra);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (not ok) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "Failed to establish TBF");</span><br><span style="color: hsl(120, 100%, 40%);">+                f_shutdown(__BFILE__, __LINE__);</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%);">+   /* Make sure we've got an Uplink TBF assignment */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_imm_ass_verify_ul_tbf_ass(rr_imm_ass, ul_tbf_ass, tr_PacketUlSglAssign);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Send PACKET RESOURCE REQUEST to upgrade to EGPRS</span><br><span style="color: hsl(120, 100%, 40%);">+    * (see 3GPP TS 04.60 "7.1.3.1 Initiation of the Packet resource request procedure")</span><br><span style="color: hsl(120, 100%, 40%);">+         */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_tx_rlcmac_ul_block(ts_RLC_UL_CTRL_ACK(valueof(ts_RlcMacUlCtrl_PKT_RES_REQ(tlli, ms_racap))), 0);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rx_rlcmac_dl_block_exp_pkt_ul_ass(dl_block, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (dl_block.ctrl.payload.u.ul_assignment.identity.tlli.tlli != tlli) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Wrong TLLI ", dl_block.ctrl.payload.u.ul_assignment.identity.tlli, " received vs exp ", tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+          f_shutdown(__BFILE__, __LINE__);</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%);">+   /* Send one UL block (without TLLI since we are in Second-Phase Access)</span><br><span style="color: hsl(120, 100%, 40%);">+          and make sure it is ACKED fine */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_tx_rlcmac_ul_n_blocks(f_rlcmac_dl_block_get_tfi(dl_block), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    //f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* UL block should be received in SGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[0].receive(tr_BSSGP_UL_UD(tlli, mp_gb_cfg.cell_id));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Now SGSN sends some DL data, PCU will page on PACCH */</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[0].send(ts_BSSGP_DL_UD(tlli, data));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rx_rlcmac_dl_block_exp_pkt_dl_ass(dl_block, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* DL Ass sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* After acking the dl assignment, dl tbf goes into FLOW state and PCU will provide DL data when BTS asks for it */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_rx_rlcmac_dl_block_exp_data(dl_block, dl_fn, data, 0, exp_cs_mcs);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* ACK the DL block */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_acknackdesc_ack_block(ack_nack_desc, dl_block, '1'B);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_tx_rlcmac_ul_block(ts_RLCMAC_DL_ACK_NACK(f_rlcmac_dl_block_get_tfi(dl_block), ack_nack_desc),</span><br><span style="color: hsl(120, 100%, 40%);">+                            0, f_dl_block_ack_fn(dl_block, dl_fn));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> testcase TC_mo_ping_pong_with_ul_racap() runs on RAW_PCU_Test_CT {</span><br><span>         var MultislotCap_GPRS mscap_gprs := {</span><br><span>@@ -1465,7 +1551,7 @@</span><br><span>        var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, omit)) };</span><br><span>    var CodingScheme exp_cs_mcs := CS_2;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        f_TC_mo_ping_pong(ms_racap, exp_cs_mcs);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_TC_mo_ping_pong_2phase_access(ms_racap, exp_cs_mcs);</span><br><span> }</span><br><span> </span><br><span> /* Test scenario where SGSN wants to send some data against MS and it is</span><br><span>@@ -1522,7 +1608,7 @@</span><br><span> </span><br><span>      /* Send one UL block (with TLLI since we are in One-Phase Access</span><br><span>        contention resoultion) and make sure it is ACKED fine */</span><br><span style="color: hsl(0, 100%, 40%);">-     f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1, tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tx_rlcmac_ul_n_blocks(ul_tbf_ass.dynamic.tfi_assignment, 1, tlli);</span><br><span>         f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);</span><br><span>       /* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span>       f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18239">change 18239</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-ttcn3-hacks/+/18239"/><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-Change-Id: If636a4898dfa175fdbd6baf04f7f2c955a9c525d </div>
<div style="display:none"> Gerrit-Change-Number: 18239 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>