<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23908">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Make WaitIndication T3172 configurable<br><br>Tbftest expectatins need to change because 5000/20 = 250 < 255, hence<br>the message is now sent as units of 20ms instead of seconds.<br><br>Related: OS#3928<br>Change-Id: I48b34b94b1a5dfb046a3a6cf8a0d944a7c9b6754<br>---<br>M src/bts.cpp<br>M src/encoding.cpp<br>M src/encoding.h<br>M src/tbf.cpp<br>M tests/tbf/TbfTest.cpp<br>M tests/tbf/TbfTest.err<br>6 files changed, 18 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/08/23908/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 9065c4e..449e1ac 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -76,8 +76,9 @@</span><br><span> }</span><br><span> </span><br><span> static struct osmo_tdef T_defs_bts[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-   { .T=3142, .default_val=20,  .unit=OSMO_TDEF_S,  .desc="Wait Indication used in Imm Ass Reject during TBF Establishment (s)", .val=0, .min_val = 0, .max_val = 255 }, /* TS 44.018 10.5.2.43 */</span><br><span style="color: hsl(120, 100%, 40%);">+     { .T=3142, .default_val=20,  .unit=OSMO_TDEF_S,  .desc="Wait Indication used in Imm Ass Reject during TBF Establishment (CCCH) (s)", .val=0, .min_val = 0, .max_val = 255 }, /* TS 44.018 10.5.2.43, TS 44.060 7.1.3.2.1 (T3172) */</span><br><span>        { .T=3169, .default_val=5,   .unit=OSMO_TDEF_S,  .desc="Reuse of USF and TFI(s) after the MS uplink TBF assignment is invalid (s)", .val=0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       { .T=3172, .default_val=5000,.unit=OSMO_TDEF_MS, .desc="Wait Indication used in Imm Ass Reject during TBF Establishment (PACCH) (s)", .val=0, .min_val = 0, .max_val = 255000 }, /* TS 44.060 7.1.3.2.1 */</span><br><span>         { .T=3191, .default_val=5,   .unit=OSMO_TDEF_S,  .desc="Reuse of TFI(s) after sending (1) last RLC Data Block on TBF(s), or (2) PACKET TBF RELEASE for an MBMS radio bearer (s)", .val=0 },</span><br><span>        { .T=3193, .default_val=100, .unit=OSMO_TDEF_MS, .desc="Reuse of TFI(s) after reception of final PACKET DOWNLINK ACK/NACK from MS for TBF (ms)", .val=0 },</span><br><span>         { .T=3195, .default_val=5,   .unit=OSMO_TDEF_S,  .desc="Reuse of TFI(s) upon no response from the MS (radio failure or cell change) for TBF/MBMS radio bearer (s)", .val=0 },</span><br><span>diff --git a/src/encoding.cpp b/src/encoding.cpp</span><br><span>index f91c638..2f58759 100644</span><br><span>--- a/src/encoding.cpp</span><br><span>+++ b/src/encoding.cpp</span><br><span>@@ -1711,7 +1711,7 @@</span><br><span>  * 8.1.2.5 Establishment of uplink TBF</span><br><span>  */</span><br><span> void Encoding::write_packet_access_reject(</span><br><span style="color: hsl(0, 100%, 40%);">-     bitvec * dest, uint32_t tlli)</span><br><span style="color: hsl(120, 100%, 40%);">+ bitvec * dest, uint32_t tlli, unsigned long t3172_ms)</span><br><span> {</span><br><span>   unsigned wp = 0;</span><br><span> </span><br><span>@@ -1725,9 +1725,15 @@</span><br><span>        bitvec_write_field(dest, &wp, 0x0, 1);  //  TLLI / G-RNTI : bit (32)</span><br><span>     bitvec_write_field(dest, &wp, tlli, 32); // CONTENTION_RESOLUTION_TLLI</span><br><span>   bitvec_write_field(dest, &wp, 1, 1);  //  WAIT_INDICATION size in seconds</span><br><span style="color: hsl(0, 100%, 40%);">-   /* TODO: make it configurable */</span><br><span style="color: hsl(0, 100%, 40%);">-        bitvec_write_field(dest, &wp, 5, 8);  //  WAIT_INDICATION value</span><br><span style="color: hsl(0, 100%, 40%);">-     bitvec_write_field(dest, &wp, 0, 1);  //  WAIT_INDICATION size in seconds</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* WAIT_INDICATION, WAIT_INDICATION_SIZE */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (t3172_ms / 20 <= 255) { /* In units of 20 milliseconds */</span><br><span style="color: hsl(120, 100%, 40%);">+              bitvec_write_field(dest, &wp, t3172_ms/20, 8);</span><br><span style="color: hsl(120, 100%, 40%);">+            bitvec_write_field(dest, &wp, 1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      } else { /* value too big to fit in ms, do it in seconds */</span><br><span style="color: hsl(120, 100%, 40%);">+           bitvec_write_field(dest, &wp, t3172_ms/1000, 8);</span><br><span style="color: hsl(120, 100%, 40%);">+          bitvec_write_field(dest, &wp, 0, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span> }</span><br><span> </span><br><span> void write_packet_neighbour_cell_data(RlcMacDownlink_t *block,</span><br><span>diff --git a/src/encoding.h b/src/encoding.h</span><br><span>index e7046e2..665bd77 100644</span><br><span>--- a/src/encoding.h</span><br><span>+++ b/src/encoding.h</span><br><span>@@ -78,8 +78,8 @@</span><br><span> </span><br><span>    static void encode_rbb(const char *show_rbb, uint8_t *rbb);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- static void write_packet_access_reject(</span><br><span style="color: hsl(0, 100%, 40%);">-         bitvec * dest, uint32_t tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+        static void write_packet_access_reject(bitvec * dest, uint32_t tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         unsigned long t3172_ms);</span><br><span> </span><br><span>  static void write_packet_uplink_ack(</span><br><span>                         bitvec * dest, struct gprs_rlcmac_ul_tbf *tbf, bool is_final,</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index 69c35f8..b51e7de 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -955,8 +955,8 @@</span><br><span> </span><br><span>     bitvec_unhex(packet_access_rej, DUMMY_VEC);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- Encoding::write_packet_access_reject(</span><br><span style="color: hsl(0, 100%, 40%);">-           packet_access_rej, tlli());</span><br><span style="color: hsl(120, 100%, 40%);">+   Encoding::write_packet_access_reject(packet_access_rej, tlli(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                            osmo_tdef_get(bts->T_defs_bts, 3172, OSMO_TDEF_MS, -1));</span><br><span> </span><br><span>         bts_do_rate_ctr_inc(bts, CTR_PKT_ACCESS_REJ);</span><br><span> </span><br><span>diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp</span><br><span>index cf8e083..e0fd9cc 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -3264,7 +3264,7 @@</span><br><span>   the_pcu = gprs_pcu_alloc(tall_pcu_ctx);</span><br><span>      struct gprs_rlcmac_bts *bts = bts_alloc(the_pcu, 0);</span><br><span>         uint32_t tlli = 0xffeeddcc;</span><br><span style="color: hsl(0, 100%, 40%);">-     static uint8_t exp[] = { 0x40, 0x84, 0x7f, 0xf7, 0x6e, 0xe6, 0x41, 0x4b,</span><br><span style="color: hsl(120, 100%, 40%);">+      static uint8_t exp[] = { 0x40, 0x84, 0x7f, 0xf7, 0x6e, 0xe6, 0x7e, 0xab,</span><br><span>                              0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,</span><br><span>                              0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b</span><br><span>    };</span><br><span>diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err</span><br><span>index e700fe2..be7caf0 100644</span><br><span>--- a/tests/tbf/TbfTest.err</span><br><span>+++ b/tests/tbf/TbfTest.err</span><br><span>@@ -7615,7 +7615,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=NULL EGPRS) changes state from NULL to FLOW</span><br><span> The MS object cannot fully confirm an unexpected TLLI: 0xffeeddcc, partly confirmed</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) appending 100 bytes</span><br><span style="color: hsl(0, 100%, 40%);">-packet reject: 40 84 7f f7 6e e6 41 4b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span style="color: hsl(120, 100%, 40%);">+packet reject: 40 84 7f f7 6e e6 7e ab 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> === end test_packet_access_rej_epdan ===</span><br><span> === start test_packet_access_rej_prr ===</span><br><span> MS requests Uplink resource on CCCH/RACH: ra=0x70 (8 bit) Fn=2654167 qta=31</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23908">change 23908</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-pcu/+/23908"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I48b34b94b1a5dfb046a3a6cf8a0d944a7c9b6754 </div>
<div style="display:none"> Gerrit-Change-Number: 23908 </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>