From 8013b02685cb5a64e25e21fc9d0d2952cfd67e26 Mon Sep 17 00:00:00 2001 From: Alexander Chemeris Date: Mon, 18 May 2020 00:01:45 +0300 Subject: borken: Recover from more TS borken states. Change-Id: Ic87c325a73690ede1b81b4d33bac65a1a4beea2d --- src/osmo-bsc/timeslot_fsm.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/osmo-bsc/timeslot_fsm.c b/src/osmo-bsc/timeslot_fsm.c index f8adfb6c7..84ffb7f54 100644 --- a/src/osmo-bsc/timeslot_fsm.c +++ b/src/osmo-bsc/timeslot_fsm.c @@ -669,9 +669,17 @@ static void ts_fsm_borken(struct osmo_fsm_inst *fi, uint32_t event, void *data) } case TS_EV_PDCH_ACT_ACK: - /* Late PDCH activation ACK is not a crime. - * Just go into the PDCH mode as normal. */ - osmo_fsm_inst_state_chg(fi, TS_ST_PDCH, 0, 0); + case TS_EV_PDCH_ACT_NACK: + /* Late PDCH activation ACK/NACK is not a crime. + * Just process them as normal. */ + ts_fsm_wait_pdch_act(fi, event, data); + return; + + case TS_EV_PDCH_DEACT_ACK: + case TS_EV_PDCH_DEACT_NACK: + /* Late PDCH deactivation ACK/NACK is also not a crime. + * Just process them as normal. */ + ts_fsm_wait_pdch_deact(fi, event, data); return; default: @@ -827,8 +835,13 @@ static const struct osmo_fsm_state ts_fsm_states[] = { | S(TS_EV_LCHAN_REQUESTED) | S(TS_EV_LCHAN_UNUSED) | S(TS_EV_PDCH_ACT_ACK) + | S(TS_EV_PDCH_ACT_NACK) + | S(TS_EV_PDCH_DEACT_ACK) + | S(TS_EV_PDCH_DEACT_NACK) , .out_state_mask = 0 + | S(TS_ST_IN_USE) + | S(TS_ST_UNUSED) | S(TS_ST_NOT_INITIALIZED) | S(TS_ST_PDCH) , -- cgit v1.2.3