diff options
author | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-05-18 00:01:45 +0300 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2020-05-19 20:00:32 +0000 |
commit | 8013b02685cb5a64e25e21fc9d0d2952cfd67e26 (patch) | |
tree | 6e5f6b53a5bedf8d4b7fe1b0b54c9dc43734005c | |
parent | 8b8ad33fdd9e12516d6f67b00225e668de497b1d (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) , |