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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Avoid early TBF release due to N3101 in TC_multiplex_dl_gprs_egprs<br><br>Also change a bit expectations, since it can actually happen that DL<br>blocks for GPRS-only MS never signal USF for itself, which is<br>still fine.<br><br>Change-Id: Iedff87cedf55ab18b32bd0f159d1145901878203<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 35 insertions(+), 8 deletions(-)<br><br></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 bea9ddd..5f60cef 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -3717,7 +3717,7 @@</span><br><span>       var octetstring data := f_rnd_octstring(10);</span><br><span>         var RlcmacDlBlock dl_block;</span><br><span>  var integer tx_data_remain := 5;</span><br><span style="color: hsl(0, 100%, 40%);">-        var integer tgt_ms;</span><br><span style="color: hsl(120, 100%, 40%);">+   var integer tgt_ms, usf_ms;</span><br><span>  var integer ms_gprs_usf_count[num_ms] := { 0, 0 };</span><br><span>   var integer ms_egprs_usf_count[num_ms] := { 0, 0 };</span><br><span> </span><br><span>@@ -3799,6 +3799,8 @@</span><br><span>                      break;</span><br><span>               }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+         usf_ms := -1;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>              if (ischosen(dl_block.ctrl)) {</span><br><span>                       setverdict(fail, "Unexpected DL CTRL block ", dl_block);</span><br><span>                   f_shutdown(__BFILE__, __LINE__);</span><br><span>@@ -3813,14 +3815,16 @@</span><br><span>                                   setverdict(fail, "Signalling USF ", dl_block.data_egprs.mac_hdr.usf, " for GPRS-only MS using MCS > 4: ", dl_block);</span><br><span>                                  f_shutdown(__BFILE__, __LINE__);</span><br><span>                             }</span><br><span style="color: hsl(0, 100%, 40%);">-                               ms_egprs_usf_count[0] := ms_egprs_usf_count[0] + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                           usf_ms := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                          ms_egprs_usf_count[usf_ms] := ms_egprs_usf_count[usf_ms] + 1;</span><br><span>                        } else {</span><br><span>                             if (dl_block.data_egprs.mcs <= MCS_4) {</span><br><span>                                   setverdict(fail, "Using too-low MCS for EGPRS MS: ", dl_block.data_egprs.mcs);</span><br><span>                                     f_shutdown(__BFILE__, __LINE__);</span><br><span>                             }</span><br><span>                            if (match(dl_block.data_egprs.mac_hdr.usf, g_ms[1].ul_tbf.usf[7])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                    ms_egprs_usf_count[1] := ms_egprs_usf_count[1] + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                                   usf_ms := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                                  ms_egprs_usf_count[usf_ms] := ms_egprs_usf_count[usf_ms] + 1;</span><br><span>                                }</span><br><span>                    }</span><br><span>            } else {</span><br><span>@@ -3830,9 +3834,11 @@</span><br><span>                    }</span><br><span>                    tgt_ms := 0;</span><br><span>                         if (match(dl_block.data.mac_hdr.mac_hdr.usf, g_ms[0].ul_tbf.usf[7])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          ms_gprs_usf_count[0] := ms_gprs_usf_count[0] + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                             usf_ms := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                          ms_gprs_usf_count[usf_ms] := ms_gprs_usf_count[usf_ms] + 1;</span><br><span>                  } else if (match(dl_block.data.mac_hdr.mac_hdr.usf, g_ms[1].ul_tbf.usf[7])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                           ms_gprs_usf_count[1] := ms_gprs_usf_count[1] + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                             usf_ms := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                          ms_gprs_usf_count[usf_ms] := ms_gprs_usf_count[usf_ms] + 1;</span><br><span>                  }</span><br><span>            }</span><br><span> </span><br><span>@@ -3849,15 +3855,36 @@</span><br><span>                              BSSGP[0].send(ts_BSSGP_DL_UD(g_ms[1].tlli, data));</span><br><span>                           tx_data_remain := tx_data_remain - 1;</span><br><span>                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             } else if (tx_data_remain != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* keep sending UL blocks when requested by USF to avoid</span><br><span style="color: hsl(120, 100%, 40%);">+                       * UL TBF timeout and hence stop receival of USFs */</span><br><span style="color: hsl(120, 100%, 40%);">+                  if (usf_ms != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                           f_ms_tx_ul_data_block(g_ms[usf_ms], f_rnd_octstring(10), cv := 15);</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>        log("results: ms_gprs_usf_count=", ms_gprs_usf_count, " / ms_egprs_usf_count=", ms_egprs_usf_count);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (ms_gprs_usf_count[0] == 0 or ms_gprs_usf_count[1] == 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-       ms_egprs_usf_count[0] == 0 or ms_egprs_usf_count[1] == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-             setverdict(fail, "USF thresholds not met!");</span><br><span style="color: hsl(120, 100%, 40%);">+    /* He we check that DL blocks scheduled at GPRS can still request UL</span><br><span style="color: hsl(120, 100%, 40%);">+   * blocks for EGPRS MS, and the other way around. Furthermore, the 2nd</span><br><span style="color: hsl(120, 100%, 40%);">+         * condition also ensures the downgrade to <=MCS4 condition is tested</span><br><span style="color: hsl(120, 100%, 40%);">+       * above */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (ms_gprs_usf_count[1] == 0 or ms_egprs_usf_count[0] == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    setverdict(fail, "USF exchange thresholds not met!");</span><br><span>              f_shutdown(__BFILE__, __LINE__);</span><br><span>         }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Here check for some level of fairness between them (at least ~40%): */</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer gprs_usf_cnt := ms_gprs_usf_count[0] + ms_egprs_usf_count[0];</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer egprs_usf_cnt := ms_gprs_usf_count[1] + ms_egprs_usf_count[1];</span><br><span style="color: hsl(120, 100%, 40%);">+    var integer total_usf_cnt := gprs_usf_cnt + egprs_usf_cnt;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (gprs_usf_cnt < total_usf_cnt * 4 / 10) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "USF GPRS-only MS ", gprs_usf_cnt, " < ", total_usf_cnt * 4 / 10);</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%);">+     if (egprs_usf_cnt < total_usf_cnt * 4 / 10) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "USF EGPRS MS ", egprs_usf_cnt, " < ", total_usf_cnt * 4 / 10);</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> </span><br><span>        f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/23485">change 23485</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/+/23485"/><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: Iedff87cedf55ab18b32bd0f159d1145901878203 </div>
<div style="display:none"> Gerrit-Change-Number: 23485 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </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 <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>