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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Abort scheduling of pending Pkt Ul Ass if tbf goes into RELEASE step<br><br>Change-Id: I20bab79070274b1d8f6b4e1867b30de61983ab54<br>---<br>M src/tbf_fsm.c<br>M src/tbf_ul_ass_fsm.c<br>M src/tbf_ul_ass_fsm.h<br>3 files changed, 31 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c</span><br><span>index 36981e6..fb947b2 100644</span><br><span>--- a/src/tbf_fsm.c</span><br><span>+++ b/src/tbf_fsm.c</span><br><span>@@ -190,6 +190,8 @@</span><br><span>                tbf_fsm_state_chg(fi, TBF_ST_FLOW);</span><br><span>          break;</span><br><span>       case TBF_EV_MAX_N3105:</span><br><span style="color: hsl(120, 100%, 40%);">+                /* We are going to release, so abort any Pkt Ul Ass pending to be scheduled: */</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_fsm_inst_dispatch(tbf_ul_ass_fi(ctx->tbf), TBF_UL_ASS_EV_ABORT, NULL);</span><br><span>               ctx->T_release = 3195;</span><br><span>            tbf_fsm_state_chg(fi, TBF_ST_RELEASING);</span><br><span>             break;</span><br><span>diff --git a/src/tbf_ul_ass_fsm.c b/src/tbf_ul_ass_fsm.c</span><br><span>index bf70a14..ab23fbd 100644</span><br><span>--- a/src/tbf_ul_ass_fsm.c</span><br><span>+++ b/src/tbf_ul_ass_fsm.c</span><br><span>@@ -48,6 +48,7 @@</span><br><span>      { TBF_UL_ASS_EV_CREATE_RLCMAC_MSG, "CREATE_RLCMAC_MSG" },</span><br><span>  { TBF_UL_ASS_EV_RX_ASS_CTRL_ACK, "RX_ASS_CTRL_ACK" },</span><br><span>      { TBF_UL_ASS_EV_ASS_POLL_TIMEOUT, "ASS_POLL_TIMEOUT" },</span><br><span style="color: hsl(120, 100%, 40%);">+     { TBF_UL_ASS_EV_ABORT, "ABORT" },</span><br><span>  { 0, NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -169,6 +170,9 @@</span><br><span>  case TBF_UL_ASS_EV_SCHED_ASS_REJ:</span><br><span>            tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_SEND_ASS_REJ);</span><br><span>               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TBF_UL_ASS_EV_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Nothing to do, we are already in proper state */</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>@@ -187,6 +191,10 @@</span><br><span>                     return;</span><br><span>              tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_WAIT_ACK);</span><br><span>           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TBF_UL_ASS_EV_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Cancel pending schedule for Pkt Ul Ass: */</span><br><span style="color: hsl(120, 100%, 40%);">+         tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);</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>@@ -205,6 +213,10 @@</span><br><span>                     return;</span><br><span>              tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);</span><br><span>               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TBF_UL_ASS_EV_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Cancel pending schedule for Pkt Ul Ass Rej: */</span><br><span style="color: hsl(120, 100%, 40%);">+             tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);</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>@@ -230,6 +242,12 @@</span><br><span>                     tbf_ul_ass_fsm_state_chg(fi, TBF_UL_ASS_NONE);</span><br><span>               }</span><br><span>            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TBF_UL_ASS_EV_ABORT:</span><br><span style="color: hsl(120, 100%, 40%);">+             /* There's nothing we can do here, we already transmitted and</span><br><span style="color: hsl(120, 100%, 40%);">+              * hence we must keep the POLL since the MS is already expected</span><br><span style="color: hsl(120, 100%, 40%);">+                * to transmit there. Whenever we receive event CTRL_ACK or</span><br><span style="color: hsl(120, 100%, 40%);">+            * TIMEOUT above, it will move back to ST_NONE autoamtically */</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>@@ -252,7 +270,8 @@</span><br><span>      [TBF_UL_ASS_NONE] = {</span><br><span>                .in_event_mask =</span><br><span>                     X(TBF_UL_ASS_EV_SCHED_ASS) |</span><br><span style="color: hsl(0, 100%, 40%);">-                    X(TBF_UL_ASS_EV_SCHED_ASS_REJ),</span><br><span style="color: hsl(120, 100%, 40%);">+                       X(TBF_UL_ASS_EV_SCHED_ASS_REJ) |</span><br><span style="color: hsl(120, 100%, 40%);">+                      X(TBF_UL_ASS_EV_ABORT),</span><br><span>              .out_state_mask =</span><br><span>                    X(TBF_UL_ASS_SEND_ASS) |</span><br><span>                     X(TBF_UL_ASS_SEND_ASS_REJ),</span><br><span>@@ -261,7 +280,9 @@</span><br><span>            .onenter = st_none_on_enter,</span><br><span>         },</span><br><span>   [TBF_UL_ASS_SEND_ASS] = {</span><br><span style="color: hsl(0, 100%, 40%);">-               .in_event_mask = X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG),</span><br><span style="color: hsl(120, 100%, 40%);">+          .in_event_mask =</span><br><span style="color: hsl(120, 100%, 40%);">+                      X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG) |</span><br><span style="color: hsl(120, 100%, 40%);">+                  X(TBF_UL_ASS_EV_ABORT),</span><br><span>              .out_state_mask =</span><br><span>                    X(TBF_UL_ASS_WAIT_ACK) |</span><br><span>                     X(TBF_UL_ASS_NONE),</span><br><span>@@ -269,7 +290,9 @@</span><br><span>            .action = st_send_ass,</span><br><span>       },</span><br><span>   [TBF_UL_ASS_SEND_ASS_REJ] = {</span><br><span style="color: hsl(0, 100%, 40%);">-           .in_event_mask = X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG),</span><br><span style="color: hsl(120, 100%, 40%);">+          .in_event_mask =</span><br><span style="color: hsl(120, 100%, 40%);">+                      X(TBF_UL_ASS_EV_CREATE_RLCMAC_MSG) |</span><br><span style="color: hsl(120, 100%, 40%);">+                  X(TBF_UL_ASS_EV_ABORT),</span><br><span>              .out_state_mask = X(TBF_UL_ASS_NONE),</span><br><span>                .name = "SEND_ASS_REJ",</span><br><span>            .action = st_send_ass_rej,</span><br><span>@@ -277,7 +300,8 @@</span><br><span>     [TBF_UL_ASS_WAIT_ACK] = {</span><br><span>            .in_event_mask =</span><br><span>                     X(TBF_UL_ASS_EV_RX_ASS_CTRL_ACK) |</span><br><span style="color: hsl(0, 100%, 40%);">-                      X(TBF_UL_ASS_EV_ASS_POLL_TIMEOUT),</span><br><span style="color: hsl(120, 100%, 40%);">+                    X(TBF_UL_ASS_EV_ASS_POLL_TIMEOUT) |</span><br><span style="color: hsl(120, 100%, 40%);">+                   X(TBF_UL_ASS_EV_ABORT),</span><br><span>              .out_state_mask =</span><br><span>                    X(TBF_UL_ASS_NONE) |</span><br><span>                         X(TBF_UL_ASS_SEND_ASS),</span><br><span>diff --git a/src/tbf_ul_ass_fsm.h b/src/tbf_ul_ass_fsm.h</span><br><span>index 67bb2f4..34b81a7 100644</span><br><span>--- a/src/tbf_ul_ass_fsm.h</span><br><span>+++ b/src/tbf_ul_ass_fsm.h</span><br><span>@@ -32,6 +32,7 @@</span><br><span>     TBF_UL_ASS_EV_CREATE_RLCMAC_MSG, /* Scheduler wants to gen+Tx the Ass (rej): data=tbf_ul_ass_ev_create_rlcmac_msg_ctx */</span><br><span>     TBF_UL_ASS_EV_RX_ASS_CTRL_ACK, /* Received CTRL ACK answering poll set on Pkt Ul Ass */</span><br><span>      TBF_UL_ASS_EV_ASS_POLL_TIMEOUT, /* Pdch Ul Controller signals timeout for poll set on Pkt Ul Ass */</span><br><span style="color: hsl(120, 100%, 40%);">+   TBF_UL_ASS_EV_ABORT, /* TBF is starting to be RELEASED, drop in progress assignment */</span><br><span> };</span><br><span> </span><br><span> enum tbf_ul_ass_fsm_states {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25799">change 25799</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/+/25799"/><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: I20bab79070274b1d8f6b4e1867b30de61983ab54 </div>
<div style="display:none"> Gerrit-Change-Number: 25799 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </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: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>