<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25061">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: Drop unuseful flag GPRS_RLCMAC_FLAG_TO_DL_ASS<br><br>The flag is only used to print some non interesting stuff, let's drop it<br>in order to simplify code. We can add later whatever we want in the new<br>shiny FSM.<br><br>Change-Id: I13f92f058c219f230d57b3c00b8ae1d187603813<br>---<br>M src/pdch.cpp<br>M src/tbf.cpp<br>M src/tbf.h<br>M src/tbf_dl_ass_fsm.c<br>M tests/tbf/TbfTest.err<br>5 files changed, 14 insertions(+), 18 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 17a2d50..618dbf4 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -371,8 +371,6 @@</span><br><span>            osmo_fsm_inst_dispatch(new_tbf->state_fsm.fi, TBF_EV_ASSIGN_ACK_PACCH, NULL);</span><br><span>             /* stop pending assignment timer */</span><br><span>          new_tbf->t_stop(T0, "control acked (DL-TBF)");</span><br><span style="color: hsl(0, 100%, 40%);">-             if (new_tbf->check_n_clear(GPRS_RLCMAC_FLAG_TO_DL_ASS))</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGPTBF(new_tbf, LOGL_NOTICE, "Recovered downlink assignment\n");</span><br><span> </span><br><span>              tbf_assign_control_ts(new_tbf);</span><br><span>              return;</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index 3c0c530..0154bab 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -630,12 +630,6 @@</span><br><span>              /* Signal timeout to FSM to reschedule UL assignment */</span><br><span>              osmo_fsm_inst_dispatch(this->ul_ass_fsm.fi, TBF_UL_ASS_EV_ASS_POLL_TIMEOUT, NULL);</span><br><span>        } else if (dl_ass_state_is(TBF_DL_ASS_WAIT_ACK)) {</span><br><span style="color: hsl(0, 100%, 40%);">-              if (!(state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGPTBF(this, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                              "Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                tbf_rlcmac_diag(this));</span><br><span style="color: hsl(0, 100%, 40%);">-                 state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span>            bts_do_rate_ctr_inc(bts, CTR_RLC_ASS_TIMEDOUT);</span><br><span>              bts_do_rate_ctr_inc(bts, CTR_PDA_POLL_TIMEDOUT);</span><br><span>             if (n_inc(N3105)) {</span><br><span>diff --git a/src/tbf.h b/src/tbf.h</span><br><span>index 15b7de3..b8f1e18 100644</span><br><span>--- a/src/tbf.h</span><br><span>+++ b/src/tbf.h</span><br><span>@@ -131,7 +131,6 @@</span><br><span> #define GPRS_RLCMAC_FLAG_DL_ACK           3 /* downlink acknowledge received  */</span><br><span> #define GPRS_RLCMAC_FLAG_TO_UL_ACK    4</span><br><span> #define GPRS_RLCMAC_FLAG_TO_DL_ACK 5</span><br><span style="color: hsl(0, 100%, 40%);">-#define GPRS_RLCMAC_FLAG_TO_DL_ASS     6</span><br><span> #define GPRS_RLCMAC_FLAG_TO_MASK   0xf0 /* timeout bits */</span><br><span> </span><br><span> #define T_START(tbf, t, T, r, f) tbf->t_start(t, T, r, f, __FILE__, __LINE__)</span><br><span>diff --git a/src/tbf_dl_ass_fsm.c b/src/tbf_dl_ass_fsm.c</span><br><span>index 8085fbd..cf09588 100644</span><br><span>--- a/src/tbf_dl_ass_fsm.c</span><br><span>+++ b/src/tbf_dl_ass_fsm.c</span><br><span>@@ -182,11 +182,16 @@</span><br><span> </span><br><span> static void st_wait_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+        struct tbf_dl_ass_fsm_ctx *ctx = (struct tbf_dl_ass_fsm_ctx *)fi->priv;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         switch (event) {</span><br><span>     case TBF_DL_ASS_EV_RX_ASS_CTRL_ACK:</span><br><span>          tbf_dl_ass_fsm_state_chg(fi, TBF_DL_ASS_NONE);</span><br><span>               break;</span><br><span>       case TBF_DL_ASS_EV_ASS_POLL_TIMEOUT:</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPTBF(ctx->tbf, LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+                     "Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                      tbf_rlcmac_diag(ctx->tbf));</span><br><span>               /* Reschedule Pkt Dl Ass */</span><br><span>          tbf_dl_ass_fsm_state_chg(fi, TBF_DL_ASS_SEND_ASS);</span><br><span>           break;</span><br><span>diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err</span><br><span>index b6727f4..aed1bfd 100644</span><br><span>--- a/tests/tbf/TbfTest.err</span><br><span>+++ b/tests/tbf/TbfTest.err</span><br><span>@@ -4261,9 +4261,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=112 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 112)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=112 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -4521,9 +4521,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=91 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 91)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=91 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -4737,9 +4737,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=69 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 69)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=69 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -4937,9 +4937,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=60 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 60)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=60 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -5121,9 +5121,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=52 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 52)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=52 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -5281,9 +5281,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=39 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 39)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=39 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -5450,9 +5450,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=34 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 34)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=34 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -5610,9 +5610,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=30 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 30)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=30 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span>@@ -5759,9 +5759,9 @@</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=26 but previous FN=13 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, TS=4 (curr FN 26)</span><br><span style="color: hsl(0, 100%, 40%);">-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: Received Event ASS_POLL_TIMEOUT</span><br><span style="color: hsl(120, 100%, 40%);">+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |Assignment was on PACCH|No downlink ACK received yet|</span><br><span> DL_ASS_TBF(DL-TFI_0){WAIT_ACK}: state_chg to SEND_ASS</span><br><span> PDCH(bts=0,trx=0,ts=4) Expiring FN=26 but previous FN=17 is still reserved!</span><br><span> PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25061">change 25061</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/+/25061"/><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: I13f92f058c219f230d57b3c00b8ae1d187603813 </div>
<div style="display:none"> Gerrit-Change-Number: 25061 </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>