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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Verify CodingScheme of received data blocks<br><br>Change-Id: I0a5247650548f8a03f7b025aae65652fb424c156<br>---<br>M library/RLCMAC_Types.ttcn<br>M pcu/PCU_Tests_RAW.ttcn<br>2 files changed, 76 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn</span><br><span>index 8f9f2a5..dbcf4ae 100644</span><br><span>--- a/library/RLCMAC_Types.ttcn</span><br><span>+++ b/library/RLCMAC_Types.ttcn</span><br><span>@@ -41,6 +41,67 @@</span><br><span>               return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ type enumerated CodingScheme {</span><br><span style="color: hsl(120, 100%, 40%);">+                CS_1,</span><br><span style="color: hsl(120, 100%, 40%);">+         CS_2,</span><br><span style="color: hsl(120, 100%, 40%);">+         CS_3,</span><br><span style="color: hsl(120, 100%, 40%);">+         CS_4,</span><br><span style="color: hsl(120, 100%, 40%);">+         MCS_1,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_2,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_3,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_4,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_5,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_6,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_7,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_8,</span><br><span style="color: hsl(120, 100%, 40%);">+                MCS_9</span><br><span style="color: hsl(120, 100%, 40%);">+         //MCS5_7, ?</span><br><span style="color: hsl(120, 100%, 40%);">+           // MCS6_9 ?</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%);">+  function f_rlcmac_cs_mcs2block_len(CodingScheme cs_mcs) return uint32_t {</span><br><span style="color: hsl(120, 100%, 40%);">+             select (cs_mcs) {</span><br><span style="color: hsl(120, 100%, 40%);">+             case (CS_1) { return 23; }</span><br><span style="color: hsl(120, 100%, 40%);">+            case (CS_2) { return 34; }</span><br><span style="color: hsl(120, 100%, 40%);">+            case (CS_3) { return 40; }</span><br><span style="color: hsl(120, 100%, 40%);">+            case (CS_4) { return 54; }</span><br><span style="color: hsl(120, 100%, 40%);">+            case (MCS_1) { return 27; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_2) { return 33; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_3) { return 42; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_4) { return 49; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_5) { return 61; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_6) { return 79; }</span><br><span style="color: hsl(120, 100%, 40%);">+           case (MCS_7) { return 119; }</span><br><span style="color: hsl(120, 100%, 40%);">+          case (MCS_8) { return 143; }</span><br><span style="color: hsl(120, 100%, 40%);">+          case (MCS_9) { return 155; }</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             return 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%);">+   function f_rlcmac_block_len2cs_mcs(uint32_t len) return CodingScheme {</span><br><span style="color: hsl(120, 100%, 40%);">+                select (len) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        case (23) { return CS_1; }</span><br><span style="color: hsl(120, 100%, 40%);">+                    case (34) { return CS_2; }</span><br><span style="color: hsl(120, 100%, 40%);">+                    case (40) { return CS_3; }</span><br><span style="color: hsl(120, 100%, 40%);">+                    case (54) { return CS_4; }</span><br><span style="color: hsl(120, 100%, 40%);">+                    case (27) { return MCS_1; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (33) { return MCS_2; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (42) { return MCS_3; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (49) { return MCS_4; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (60) { return MCS_5; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (61) { return MCS_5; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (78) { return MCS_6; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (79) { return MCS_6; }</span><br><span style="color: hsl(120, 100%, 40%);">+                   case (118) { return MCS_7; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  case (119) { return MCS_7; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  case (142) { return MCS_8; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  case (143) { return MCS_8; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  case (154) { return MCS_9; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  case (155) { return MCS_9; }</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             return CS_1;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Partof DL RLC data block and DL RLC/MAC ctrl block */</span><br><span>     type record DlMacHeader {</span><br><span>            MacPayloadType  payload_type,</span><br><span>diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn</span><br><span>index ad89c69..2564617 100644</span><br><span>--- a/pcu/PCU_Tests_RAW.ttcn</span><br><span>+++ b/pcu/PCU_Tests_RAW.ttcn</span><br><span>@@ -419,12 +419,19 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_rx_rlcmac_dl_block(out RlcmacDlBlock dl_block, out uint32_t dl_fn)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rx_rlcmac_dl_block(out RlcmacDlBlock dl_block, out uint32_t dl_fn, template (present) CodingScheme exp_cs_mcs := ?)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>         var PCUIF_Message pcu_msg;</span><br><span>   f_pcuif_rx_data_req(pcu_msg);</span><br><span>        dl_block := dec_RlcmacDlBlock(pcu_msg.u.data_req.data);</span><br><span>      dl_fn := pcu_msg.u.data_req.fn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer len := lengthof(pcu_msg.u.data_req.data);</span><br><span style="color: hsl(120, 100%, 40%);">+ var CodingScheme cs_mcs := f_rlcmac_block_len2cs_mcs(len)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not match(f_rlcmac_block_len2cs_mcs(len), exp_cs_mcs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(fail, "Failed to match Coding Scheme exp ", exp_cs_mcs, " vs ", cs_mcs, " (", len, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+           mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> private function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block, out uint32_t poll_fn)</span><br><span>@@ -475,7 +482,7 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_rx_rlcmac_dl_block_exp_data(out RlcmacDlBlock dl_block, out uint32_t ack_fn, octetstring data, template (present) uint7_t exp_bsn := ?)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rx_rlcmac_dl_block_exp_data(out RlcmacDlBlock dl_block, out uint32_t ack_fn, octetstring data, template (present) uint7_t exp_bsn := ?, template (present) CodingScheme exp_cs := ?)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>   var PCUIF_Message pcu_msg;</span><br><span>   var uint32_t dl_fn;</span><br><span>@@ -1202,7 +1209,7 @@</span><br><span> /* Test scenario where SGSN wants to send some data against MS and it is</span><br><span>  * answered by the MS on PDCH, so TBFs for downlink and later for uplink are created.</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSGP ms_racap := omit, 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>@@ -1236,7 +1243,7 @@</span><br><span> </span><br><span>   /* Wait timer X2002 and DL block is available after CCCH IMM ASS: */</span><br><span>         f_sleep(X2002);</span><br><span style="color: hsl(0, 100%, 40%);">- f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0, exp_cs_mcs);</span><br><span> </span><br><span>  /* ACK the DL block */</span><br><span>       f_acknackdesc_ack_block(ack_nack_desc, dl_block.data.mac_hdr.hdr_ext.bsn, '1'B);</span><br><span>@@ -1265,7 +1272,8 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_mt_ping_pong() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       f_TC_mt_ping_pong(omit);</span><br><span style="color: hsl(120, 100%, 40%);">+      var CodingScheme exp_cs_mcs := CS_1;</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_mt_ping_pong(omit, exp_cs_mcs);</span><br><span> }</span><br><span> </span><br><span> /* TC_mt_ping_pong, but DL-UNITDATA contains RA Access capability with (M)CS</span><br><span>@@ -1276,7 +1284,8 @@</span><br><span>                gprsextendeddynalloccap := '0'B</span><br><span>      } ;</span><br><span>  var MSRadioAccessCapabilityV_BSSGP ms_racap := { valueof(ts_RaCapRec_BSSGP('0001'B /* E-GSM */, mscap_gprs, omit)) };</span><br><span style="color: hsl(0, 100%, 40%);">-   f_TC_mt_ping_pong(ms_racap);</span><br><span style="color: hsl(120, 100%, 40%);">+  var CodingScheme exp_cs_mcs := CS_2;</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_mt_ping_pong(ms_racap, exp_cs_mcs);</span><br><span> }</span><br><span> </span><br><span> /* Verify that if PCU doesn't get an ACK for first DL block after IMM ASS, it</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17527">change 17527</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/+/17527"/><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: I0a5247650548f8a03f7b025aae65652fb424c156 </div>
<div style="display:none"> Gerrit-Change-Number: 17527 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>