tbf_fsm: Ignore event DL_ACKNACK_MISS in state RELEASING

Fixes following error log line:
"{RELEASING}: Event DL_ACKNACK_MISS not permitted"

Rationale: We may move to RELEASING state at some point, for instance
due to MAX_N3101/MAX_N3105 while still having some active poll
registered in some PDCH ulc. Upon that poll (most probably) timing out,
it will send a DL_ACKNACK_MISS event to us. Since we are already
determined to release the TBF (waiting for T3195 or T3169 to trigger),
simply ignore the event and avoid logging an error.

Fixes: OS#5240
Change-Id: Ibfb49356d2b3b5fccb6d59db8593b2256e5c51fb
changes/32/25632/1
Pau Espin 1 year ago
parent e9db5c7387
commit cee6b122c2
  1. 15
      src/tbf_fsm.c

@ -323,6 +323,18 @@ static void st_releasing_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
osmo_timer_schedule(&fi->timer, val, 0);
}
static void st_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
switch (event) {
case TBF_EV_DL_ACKNACK_MISS:
/* Ignore, we don't care about missed DL ACK/NACK poll timeouts
* anymore, we are already releasing the TBF */
break;
default:
OSMO_ASSERT(0);
}
}
static void handle_timeout_X2002(struct tbf_fsm_ctx *ctx)
{
struct gprs_rlcmac_dl_tbf *dl_tbf = as_dl_tbf(ctx->tbf);
@ -441,10 +453,11 @@ static struct osmo_fsm_state tbf_fsm_states[] = {
},
[TBF_ST_RELEASING] = {
.in_event_mask =
0,
X(TBF_EV_DL_ACKNACK_MISS),
.out_state_mask =
0,
.name = "RELEASING",
.action = st_releasing,
.onenter = st_releasing_on_enter,
},
};

Loading…
Cancel
Save