aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-08-29 03:23:31 +0000
committerNeels Hofmeyr <neels@hofmeyr.de>2020-08-31 18:01:17 +0200
commitdbe59f69a4159846731bc2376c333b0059c39ed9 (patch)
treed238bec8489a398360229c89fcb14026e17db08a
parente6142d0e25da8da0f262fc5708bf83992a377ee4 (diff)
add {BTS,BSC}_CTR_INTER_BSC_HO_OUT_FAILED for RR HO Failure
So far, during inter-BSC outgoing handover, when receiving an RR Handover Failure from the MS, it would be counted as 'error'. Instead, add the 'failed' counter like for all other HO types. It may make sense to omit the 'failed' counter for inter-BSC *incoming* handover, because then we won't receive an RR Handover Failure message. I probably got those two mixed up during initial development. Related: OS#4736 Change-Id: I9a61d5cc7273a830ba4e66e43e4aac6cdb707471
-rw-r--r--include/osmocom/bsc/bts.h2
-rw-r--r--include/osmocom/bsc/gsm_data.h2
-rw-r--r--src/osmo-bsc/handover_fsm.c4
3 files changed, 8 insertions, 0 deletions
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index dc51d1720..5506a86eb 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -93,6 +93,7 @@ enum bts_counter_id {
BTS_CTR_INTER_BSC_HO_OUT_COMPLETED,
BTS_CTR_INTER_BSC_HO_OUT_STOPPED,
BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT,
+ BTS_CTR_INTER_BSC_HO_OUT_FAILED,
BTS_CTR_INTER_BSC_HO_OUT_ERROR,
BTS_CTR_INTER_BSC_HO_IN_ATTEMPTED,
BTS_CTR_INTER_BSC_HO_IN_COMPLETED,
@@ -190,6 +191,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = {
"Handover to remote BSS completed"},
[BTS_CTR_INTER_BSC_HO_OUT_STOPPED] = {"interbsc_ho_out:stopped", "Connection ended during HO"},
[BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT] = {"interbsc_ho_out:timeout", "Handover timed out"},
+ [BTS_CTR_INTER_BSC_HO_OUT_FAILED] = {"interbsc_ho_out:failed", "Received Handover Fail message"},
[BTS_CTR_INTER_BSC_HO_OUT_ERROR] = {"interbsc_ho_out:error",
"Handover to remote BSS failed for other reason"},
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 120c4a464..09c02146f 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -987,6 +987,7 @@ enum {
BSC_CTR_INTER_BSC_HO_OUT_COMPLETED,
BSC_CTR_INTER_BSC_HO_OUT_STOPPED,
BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT,
+ BSC_CTR_INTER_BSC_HO_OUT_FAILED,
BSC_CTR_INTER_BSC_HO_OUT_ERROR,
BSC_CTR_INTER_BSC_HO_IN_ATTEMPTED,
BSC_CTR_INTER_BSC_HO_IN_COMPLETED,
@@ -1044,6 +1045,7 @@ static const struct rate_ctr_desc bsc_ctr_description[] = {
"Handover to remote BSS completed"},
[BSC_CTR_INTER_BSC_HO_OUT_STOPPED] = {"interbsc_ho_out:stopped", "Connection ended during HO"},
[BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT] = {"interbsc_ho_out:timeout", "Handover timed out"},
+ [BSC_CTR_INTER_BSC_HO_OUT_FAILED] = {"interbsc_ho_out:failed", "Received Handover Fail message"},
[BSC_CTR_INTER_BSC_HO_OUT_ERROR] = {"interbsc_ho_out:error",
"Handover to remote BSS failed for other reason"},
diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c
index 3975ed303..d93e5bcb8 100644
--- a/src/osmo-bsc/handover_fsm.c
+++ b/src/osmo-bsc/handover_fsm.c
@@ -716,6 +716,8 @@ static int result_counter_BSC_INTER_BSC_HO_OUT(enum handover_result result) {
switch (result) {
case HO_RESULT_OK:
return BSC_CTR_INTER_BSC_HO_OUT_COMPLETED;
+ case HO_RESULT_FAIL_RR_HO_FAIL:
+ return BSC_CTR_INTER_BSC_HO_OUT_FAILED;
case HO_RESULT_FAIL_TIMEOUT:
return BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT;
case HO_RESULT_CONN_RELEASE:
@@ -751,6 +753,8 @@ static int result_counter_BTS_INTER_BSC_HO_OUT(enum handover_result result) {
switch (result) {
case HO_RESULT_OK:
return BTS_CTR_INTER_BSC_HO_OUT_COMPLETED;
+ case HO_RESULT_FAIL_RR_HO_FAIL:
+ return BTS_CTR_INTER_BSC_HO_OUT_FAILED;
case HO_RESULT_FAIL_TIMEOUT:
return BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT;
case HO_RESULT_CONN_RELEASE: