diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-09-28 16:49:33 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-09-28 16:53:00 +0200 |
commit | cee6b122c2da140c05055e7570b61ea33bdfcfe8 (patch) | |
tree | baf6be3c74133bdeab4c4f7c088e32f5bb462e55 | |
parent | e9db5c738721f7aa5d5512e0f77beefad8721986 (diff) |
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
-rw-r--r-- | src/tbf_fsm.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c index be3c3efa..4202a0c4 100644 --- a/src/tbf_fsm.c +++ b/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, }, }; |