<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25046">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Move WAIT_RELEASE tbf_state transition to tbf_fsm<br><br>Related: OS#2709<br>Change-Id: Iebd650c1036ef2d5132789778be7117ce3391c01<br>---<br>M src/tbf_dl.cpp<br>M src/tbf_dl.h<br>M src/tbf_fsm.c<br>M src/tbf_fsm.h<br>M tests/tbf/TbfTest.err<br>5 files changed, 56 insertions(+), 9 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/46/25046/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index ed5003c..6614366 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -1219,8 +1219,9 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int gprs_rlcmac_dl_tbf::maybe_start_new_window()</span><br><span style="color: hsl(120, 100%, 40%);">+int gprs_rlcmac_dl_tbf::rcvd_dl_final_ack()</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+        osmo_fsm_inst_dispatch(this->state_fsm.fi, TBF_EV_FINAL_ACK_RECVD, NULL);</span><br><span>         release();</span><br><span> </span><br><span>       /* check for LLC PDU in the LLC Queue */</span><br><span>@@ -1241,8 +1242,6 @@</span><br><span>     /* report all outstanding packets as received */</span><br><span>     gprs_rlcmac_received_lost(this, received, 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       TBF_SET_STATE(this, TBF_ST_WAIT_RELEASE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    /* start T3193 */</span><br><span>    T_START(this, T3193, 3193, "release (DL-TBF)", true);</span><br><span> </span><br><span>@@ -1292,7 +1291,7 @@</span><br><span> </span><br><span>      if (final_ack) {</span><br><span>             LOGPTBFDL(this, LOGL_DEBUG, "Final ACK received.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-         rc = maybe_start_new_window();</span><br><span style="color: hsl(120, 100%, 40%);">+                rc = rcvd_dl_final_ack();</span><br><span>    } else if (state_is(TBF_ST_FINISHED) && m_window.window_empty()) {</span><br><span>           LOGPTBFDL(this, LOGL_NOTICE,</span><br><span>                           "Received acknowledge of all blocks, but without final ack indication (don't worry)\n");</span><br><span>@@ -1309,7 +1308,7 @@</span><br><span>             return update_window(ssn, rbb);</span><br><span> </span><br><span>  LOGPTBFDL(this, LOGL_DEBUG, "Final ACK received.\n");</span><br><span style="color: hsl(0, 100%, 40%);">- return maybe_start_new_window();</span><br><span style="color: hsl(120, 100%, 40%);">+      return rcvd_dl_final_ack();</span><br><span> }</span><br><span> </span><br><span> bool gprs_rlcmac_dl_tbf::dl_window_stalled() const</span><br><span>diff --git a/src/tbf_dl.h b/src/tbf_dl.h</span><br><span>index 58d863b..af82a0c 100644</span><br><span>--- a/src/tbf_dl.h</span><br><span>+++ b/src/tbf_dl.h</span><br><span>@@ -110,7 +110,7 @@</span><br><span>                                        int index, int index2 = -1);</span><br><span>         int update_window(const uint8_t ssn, const uint8_t *rbb);</span><br><span>    int update_window(unsigned first_bsn, const struct bitvec *rbb);</span><br><span style="color: hsl(0, 100%, 40%);">-        int maybe_start_new_window();</span><br><span style="color: hsl(120, 100%, 40%);">+ int rcvd_dl_final_ack();</span><br><span>     bool dl_window_stalled() const;</span><br><span>      void reuse_tbf();</span><br><span>    void start_llc_timer();</span><br><span>diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c</span><br><span>index 3322857..52de913 100644</span><br><span>--- a/src/tbf_fsm.c</span><br><span>+++ b/src/tbf_fsm.c</span><br><span>@@ -49,6 +49,7 @@</span><br><span>         { TBF_EV_ASSIGN_READY_CCCH, "ASSIGN_READY_CCCH" },</span><br><span>         { TBF_EV_LAST_DL_DATA_SENT, "LAST_DL_DATA_SENT" },</span><br><span>         { TBF_EV_LAST_UL_DATA_RECVD, "LAST_UL_DATA_RECVD" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { TBF_EV_FINAL_ACK_RECVD, "FINAL_ACK_RECVD" },</span><br><span>     { 0, NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -149,6 +150,27 @@</span><br><span>                 /* All data has been sent or received, change state to FINISHED */</span><br><span>           tbf_fsm_state_chg(fi, TBF_ST_FINISHED);</span><br><span>              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TBF_EV_FINAL_ACK_RECVD:</span><br><span style="color: hsl(120, 100%, 40%);">+          /* We received Final Ack (DL ACK/NACK) from MS. move to</span><br><span style="color: hsl(120, 100%, 40%);">+                  WAIT_RELEASE, we wait there for release or re-use the TBF in</span><br><span style="color: hsl(120, 100%, 40%);">+                  case we receive more DL data to tx */</span><br><span style="color: hsl(120, 100%, 40%);">+              tbf_fsm_state_chg(fi, TBF_ST_WAIT_RELEASE);</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              OSMO_ASSERT(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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void st_finished(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      //struct tbf_fsm_ctx *ctx = (struct tbf_fsm_ctx *)fi->priv;</span><br><span style="color: hsl(120, 100%, 40%);">+        switch (event) {</span><br><span style="color: hsl(120, 100%, 40%);">+      case TBF_EV_FINAL_ACK_RECVD:</span><br><span style="color: hsl(120, 100%, 40%);">+          /* We received Final Ack (DL ACK/NACK) from MS. move to</span><br><span style="color: hsl(120, 100%, 40%);">+                  WAIT_RELEASE, we wait there for release or re-use the TBF in</span><br><span style="color: hsl(120, 100%, 40%);">+                  case we receive more DL data to tx */</span><br><span style="color: hsl(120, 100%, 40%);">+              tbf_fsm_state_chg(fi, TBF_ST_WAIT_RELEASE);</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span>       default:</span><br><span>             OSMO_ASSERT(0);</span><br><span>      }</span><br><span>@@ -199,7 +221,8 @@</span><br><span>      [TBF_ST_FLOW] = {</span><br><span>            .in_event_mask =</span><br><span>                     X(TBF_EV_LAST_DL_DATA_SENT) |</span><br><span style="color: hsl(0, 100%, 40%);">-                   X(TBF_EV_LAST_UL_DATA_RECVD),</span><br><span style="color: hsl(120, 100%, 40%);">+                 X(TBF_EV_LAST_UL_DATA_RECVD) |</span><br><span style="color: hsl(120, 100%, 40%);">+                        X(TBF_EV_FINAL_ACK_RECVD),</span><br><span>           .out_state_mask =</span><br><span>                    X(TBF_ST_FINISHED) |</span><br><span>                         X(TBF_ST_WAIT_RELEASE) |</span><br><span>@@ -210,12 +233,12 @@</span><br><span>     },</span><br><span>   [TBF_ST_FINISHED] = {</span><br><span>                .in_event_mask =</span><br><span style="color: hsl(0, 100%, 40%);">-                        0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    X(TBF_EV_FINAL_ACK_RECVD),</span><br><span>           .out_state_mask =</span><br><span>                    X(TBF_ST_WAIT_RELEASE),</span><br><span>              .name = "FINISHED",</span><br><span>                //.onenter = st_finished_on_enter,</span><br><span style="color: hsl(0, 100%, 40%);">-              //.action = st_finished,</span><br><span style="color: hsl(120, 100%, 40%);">+              .action = st_finished,</span><br><span>       },</span><br><span>   [TBF_ST_WAIT_RELEASE] = {</span><br><span>            .in_event_mask =</span><br><span>diff --git a/src/tbf_fsm.h b/src/tbf_fsm.h</span><br><span>index f4f5ad7..449a04a 100644</span><br><span>--- a/src/tbf_fsm.h</span><br><span>+++ b/src/tbf_fsm.h</span><br><span>@@ -35,6 +35,7 @@</span><br><span>        TBF_EV_ASSIGN_READY_CCCH, /* TBF Start Time timer triggered */</span><br><span>       TBF_EV_LAST_DL_DATA_SENT, /* DL TBF sends RLCMAC block containing last DL avilable data buffered */</span><br><span>  TBF_EV_LAST_UL_DATA_RECVD, /* UL TBF sends RLCMAC block containing last UL data (cv=0) */</span><br><span style="color: hsl(120, 100%, 40%);">+     TBF_EV_FINAL_ACK_RECVD, /* DL ACK/NACK with FINAL_ACK=1 received from MS */</span><br><span> };</span><br><span> </span><br><span> enum tbf_fsm_states {</span><br><span>diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err</span><br><span>index ccfd459..c6cea78 100644</span><br><span>--- a/tests/tbf/TbfTest.err</span><br><span>+++ b/tests/tbf/TbfTest.err</span><br><span>@@ -101,6 +101,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) msg block (BSN 1, CS-1): 07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -206,6 +207,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) msg block (BSN 1, CS-1): 07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -497,6 +499,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) msg block (BSN 21, CS-1): 0f 01 2a 4d 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FINISHED}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FINISHED}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -3026,6 +3029,7 @@</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) DL analysis, range=0:28, lost=0, recv=28, skipped=0, bsn=0, info='RRRRRRRRRRRRRRRRRRRRRRRRRRRR....................................'</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) V(B): (V(A)=28)""(V(S)-1=27)  A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FINISHED}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FINISHED}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT_RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654379</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -4063,6 +4067,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 2 => 3 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=112</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -4312,6 +4317,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=91</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -4521,6 +4527,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=69</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -4714,6 +4721,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=60</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -4891,6 +4899,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=52</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5044,6 +5053,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=39</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5206,6 +5216,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=34</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5359,6 +5370,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=30</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5501,6 +5513,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=26</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5570,6 +5583,7 @@</span><br><span> Detected FN jump! 2654167 -> 58</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=58</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5636,6 +5650,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-1): 07 00 00 98 00 02 04 06 08 0a 0c 0e 10 12 14 16 18 1a 1c 1e 20 22 24 26 28 2a 00 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=58</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5702,6 +5717,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-2): 07 00 00 94 00 02 04 06 08 0a 0c 0e 10 12 14 16 18 1a 1c 1e 20 22 24 26 28 2a 2c 2e 30 32 34 36 00 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=58</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5791,6 +5807,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=63</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5879,6 +5896,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=63</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -5967,6 +5985,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=63</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -6055,6 +6074,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=63</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -6130,6 +6150,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-3): 07 00 00 e6 4a 4c 4e 50 52 54 56 58 5a 5c 5e 60 62 64 66 68 6a 6c 6e 70 72 74 76 78 7a 7c 7e 80 82 84 86 88 8a 8c 8e 90 92 00 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -6203,6 +6224,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-2): 07 00 00 f2 38 3a 3c 3e 40 42 44 46 48 4a 4c 4e 50 52 54 56 58 5a 5c 5e 60 62 64 66 68 6a 6c 6e 00 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -6276,6 +6298,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-1): 07 00 00 f6 2c 2e 30 32 34 36 38 3a 3c 3e 40 42 44 46 48 4a 4c 4e 50 52 54 56 00 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span>@@ -6356,6 +6379,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 0, MCS-6): 07 00 00 10 40 80 c0 00 41 81 c1 01 42 82 c2 02 43 83 c3 03 44 84 c4 04 45 85 c5 05 46 86 c6 06 47 87 c7 07 48 88 c8 08 49 89 c9 09 4a 8a ca 0a 4b 8b cb 0b 4c 8c cc 0c 4d 8d cd 0d 4e 8e ce 0e 4f 8f cf 0f 50 90 d0 10 51 91 d1 11 52 12 </span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(DL-TFI_0){FLOW}: Received Event FINAL_ACK_RECVD</span><br><span> TBF(DL-TFI_0){FLOW}: state_chg to WAIT_RELEASE</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654167</span><br><span> TBF(DL-TFI_0){WAIT_RELEASE}: Received Event ASSIGN_DEL_CCCH</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25046">change 25046</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/+/25046"/><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: Iebd650c1036ef2d5132789778be7117ce3391c01 </div>
<div style="display:none"> Gerrit-Change-Number: 25046 </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>