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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tbf: Merge handle_ack_nack() into rcvd_dl_ack()<br><br>There's no real use in having those 2 methods separately, and only adds<br>complexity. Let's merge it to have 1 TBF code path handling DL ACK/NACK.<br><br>Change-Id: I546d2e46bda96a2f551b28673464e57831c71828<br>---<br>M src/pdch.cpp<br>M src/tbf_dl.cpp<br>M src/tbf_dl.h<br>M tests/tbf/TbfTest.err<br>4 files changed, 9 insertions(+), 24 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index 618dbf4..9477178 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -450,8 +450,6 @@</span><br><span>  /* Reset N3101 counter: */</span><br><span>   tbf->n_reset(N3101);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (tbf->handle_ack_nack())</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGPTBF(tbf, LOGL_NOTICE, "Recovered downlink ack\n");</span><br><span>     pdch_ulc_release_fn(ulc, fn);</span><br><span> </span><br><span>    LOGPTBF(tbf, LOGL_DEBUG, "RX: [PCU <- BTS] Packet Downlink Ack/Nack\n");</span><br><span>@@ -519,9 +517,6 @@</span><br><span> </span><br><span>      /* Reset N3101 counter: */</span><br><span>   tbf->n_reset(N3101);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (tbf->handle_ack_nack())</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGPTBF(tbf, LOGL_NOTICE, "Recovered EGPRS downlink ack\n");</span><br><span>       pdch_ulc_release_fn(ulc, fn);</span><br><span> </span><br><span>    LOGPTBF(tbf, LOGL_DEBUG,</span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 40b52e5..10492d9 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -774,22 +774,6 @@</span><br><span>         return bsn;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-bool gprs_rlcmac_dl_tbf::handle_ack_nack()</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- bool ack_recovered = false;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (check_n_clear(GPRS_RLCMAC_FLAG_TO_DL_ACK)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                ack_recovered = true;</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%);">-       /* reset N3105 */</span><br><span style="color: hsl(0, 100%, 40%);">-       n_reset(N3105);</span><br><span style="color: hsl(0, 100%, 40%);">- t_stop(T3191, "ACK/NACK received");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   return ack_recovered;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block(</span><br><span>                            const uint32_t fn, const uint8_t ts,</span><br><span>                                 int index, int index2)</span><br><span>@@ -1200,6 +1184,13 @@</span><br><span>      int rc;</span><br><span>      LOGPTBFDL(this, LOGL_DEBUG, "downlink acknowledge\n");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+        state_fsm.state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* reset N3105 */</span><br><span style="color: hsl(120, 100%, 40%);">+     n_reset(N3105);</span><br><span style="color: hsl(120, 100%, 40%);">+       t_stop(T3191, "ACK/NACK received");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      rc = update_window(first_bsn, rbb);</span><br><span> </span><br><span>      if (final_ack) {</span><br><span>diff --git a/src/tbf_dl.h b/src/tbf_dl.h</span><br><span>index 67c05ad..9719327 100644</span><br><span>--- a/src/tbf_dl.h</span><br><span>+++ b/src/tbf_dl.h</span><br><span>@@ -52,7 +52,6 @@</span><br><span>    struct msgb *create_dl_acked_block(uint32_t fn, uint8_t ts, enum mcs_kind req_mcs_kind = EGPRS);</span><br><span>     void trigger_ass(struct gprs_rlcmac_tbf *old_tbf);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  bool handle_ack_nack();</span><br><span>      void request_dl_ack();</span><br><span>       bool need_control_ts() const;</span><br><span>        bool have_data() const;</span><br><span>diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err</span><br><span>index 98c9d49..b66707a 100644</span><br><span>--- a/tests/tbf/TbfTest.err</span><br><span>+++ b/tests/tbf/TbfTest.err</span><br><span>@@ -526,6 +526,7 @@</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=216, TS=4</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 style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) stopping timer T3191 [ACK/NACK received]</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) ack:  (BSN=21)"R"(BSN=21)  R=ACK I=NACK</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) DL analysis, range=21:22, lost=0, recv=1, skipped=0, bsn=21, info='R...............................................................'</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) V(B): (V(A)=22)""(V(S)-1=21)  A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid</span><br><span>@@ -535,7 +536,6 @@</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> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) free</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) stopping timer T3191 [freeing TBF]</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE) stopping timer T3193 [freeing TBF]</span><br><span> PDCH(bts=0,trx=0,ts=4) Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE), 0 TBFs, USFs = 00, TFIs = 00000000.</span><br><span> MS(TLLI=0xffeeddcc, IMSI=, TA=0, 45/0,) Detaching TBF: TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT_RELEASE)</span><br><span>@@ -3204,10 +3204,10 @@</span><br><span> Detected FN jump! 2654288 -> 2654379</span><br><span> PDCH(bts=0,trx=0,ts=7) FN=2654379 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++</span><br><span> PDCH(bts=0,trx=0,ts=7) FN=2654379 ------------------------- RX : Uplink Control Block -------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) stopping timer T3191 [ACK/NACK received]</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) RX: [PCU <- BTS] Packet Downlink Ack/Nack</span><br><span> PDCH(bts=0,trx=0,ts=7) Got GPRS DL ACK bitmap: SSN: 0, BSN 0 to 28 - 1 (28 blocks), "RRRRRRRRRRRRRRRRRRRRRRRRRRRR"</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) downlink acknowledge</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) stopping timer T3191 [ACK/NACK received]</span><br><span> TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) ack:  (BSN=0)"RRRRRRRRRRRRRRRRRRRRRRRRRRRR"(BSN=27)  R=ACK I=NACK</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></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25094">change 25094</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/+/25094"/><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: I546d2e46bda96a2f551b28673464e57831c71828 </div>
<div style="display:none"> Gerrit-Change-Number: 25094 </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: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>