aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-09-07 16:19:36 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2018-09-10 00:51:35 +0000
commitc21681d87091af40649daba5e31e8ec1e54b54d8 (patch)
treea549ebffc51fdc426d2ee8b5b19f6c5984609e43 /src/osmo-bsc
parent981f8b934771460354163dd148a5ecab46dd4476 (diff)
ho fsm: handle RR HO Failure for inter-BSC outgoing
Before, this would ignore the failure and hit a timeout instead. Rather handle the event directly. Change-Id: I21c43d2907d0413ef18ec43cf27f680ebecf9e82
Diffstat (limited to 'src/osmo-bsc')
-rw-r--r--src/osmo-bsc/handover_fsm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c
index a42f10ccc..9d558bcb5 100644
--- a/src/osmo-bsc/handover_fsm.c
+++ b/src/osmo-bsc/handover_fsm.c
@@ -1025,6 +1025,18 @@ static void ho_out_fsm_wait_ho_command(struct osmo_fsm_inst *fi, uint32_t event,
}
}
+static void ho_out_fsm_wait_clear(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct gsm_subscriber_connection *conn = ho_fi_conn(fi);
+ switch (event) {
+ case HO_EV_RR_HO_FAIL:
+ ho_fail(HO_RESULT_FAIL_RR_HO_FAIL, "Received RR Handover Failure message");
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
#define S(x) (1 << (x))
@@ -1108,6 +1120,10 @@ static const struct osmo_fsm_state ho_fsm_states[] = {
},
[HO_OUT_ST_WAIT_CLEAR] = {
.name = "inter-BSC-OUT:WAIT_CLEAR",
+ .in_event_mask = 0
+ | S(HO_EV_RR_HO_FAIL)
+ ,
+ .action = ho_out_fsm_wait_clear,
},
};