aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Chemeris <Alexander.Chemeris@gmail.com>2020-05-18 00:01:45 +0300
committerAlexander Chemeris <Alexander.Chemeris@gmail.com>2020-05-18 00:01:45 +0300
commit2c2bdb0d7313967c34526bbb0f109b648885e9b6 (patch)
tree8efdf90b192f0af0dfcbdf261c281645256c2a15
parent7738b07f8ce4c53a504ba785d20e0d7738d9909e (diff)
borken: Recover from more TS borken states.
-rw-r--r--src/osmo-bsc/timeslot_fsm.c19
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)
,