diff options
author | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-05-18 00:01:45 +0300 |
---|---|---|
committer | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-05-18 00:01:45 +0300 |
commit | 2c2bdb0d7313967c34526bbb0f109b648885e9b6 (patch) | |
tree | 8efdf90b192f0af0dfcbdf261c281645256c2a15 | |
parent | 7738b07f8ce4c53a504ba785d20e0d7738d9909e (diff) |
borken: Recover from more TS borken states.
Change-Id: Ic87c325a73690ede1b81b4d33bac65a1a4beea2d
-rw-r--r-- | src/osmo-bsc/timeslot_fsm.c | 19 |
1 files changed, 16 insertions, 3 deletions
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) , |