aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc/handover_fsm.c
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2020-08-20 15:25:37 +0200
committerlaforge <laforge@osmocom.org>2020-08-24 07:41:43 +0000
commitbf2a4b69d86337ff56ec5cdf02a4fb12d5cd6217 (patch)
tree79c25d8db397bb792fb3b71e1cc0e080846893ce /src/osmo-bsc/handover_fsm.c
parent02f0b30cda861ec31958f539cc18807546bd7bb2 (diff)
Count intra-cell and intra-bsc handover separately
Currently the counters don't distinguish between intra-cell and intra-bsc handover. Add _CTR_INTRA_CELL_HO_ and _CTR_INTRA_BSC_HO_ counters to track intra-cell/bsc handover separately. Change-Id: I3a1195640b99813036c9f1426ee5f07548e26547 Related: SYS#4877
Diffstat (limited to 'src/osmo-bsc/handover_fsm.c')
-rw-r--r--src/osmo-bsc/handover_fsm.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c
index c3cbd612a..e238d837e 100644
--- a/src/osmo-bsc/handover_fsm.c
+++ b/src/osmo-bsc/handover_fsm.c
@@ -369,12 +369,13 @@ static void handover_start_intra_bsc(struct gsm_subscriber_connection *conn)
ho->new_lchan = lchan_select_by_type(ho->new_bts, ho->new_lchan_type);
- if (ho->scope & HO_INTRA_CELL)
+ if (ho->scope & HO_INTRA_CELL) {
+ ho_count(bts, CTR_INTRA_CELL_HO_ATTEMPTED);
ho_fsm_update_id(fi, "intraCell");
- else
+ } else {
+ ho_count(bts, CTR_INTRA_BSC_HO_ATTEMPTED);
ho_fsm_update_id(fi, "intraBSC");
-
- ho_count(bts, CTR_HANDOVER_ATTEMPTED);
+ }
if (!ho->new_lchan) {
ho_fail(HO_RESULT_FAIL_NO_CHANNEL,
@@ -697,8 +698,9 @@ static int result_counter_##obj##_##name(enum handover_result result) \
} \
}
-FUNC_RESULT_COUNTER(BSC, ASSIGNMENT)
FUNC_RESULT_COUNTER(BSC, HANDOVER)
+FUNC_RESULT_COUNTER(BSC, INTRA_CELL_HO)
+FUNC_RESULT_COUNTER(BSC, INTRA_BSC_HO)
FUNC_RESULT_COUNTER(BSC, INTER_BSC_HO_IN)
static int result_counter_BSC_INTER_BSC_HO_OUT(enum handover_result result) {
@@ -718,15 +720,16 @@ static int result_counter_BSC_INTER_BSC_HO_OUT(enum handover_result result) {
static int result_counter_bsc(enum handover_scope scope, enum handover_result result)
{
switch (scope) {
- case HO_INTRA_CELL:
- return result_counter_BSC_ASSIGNMENT(result);
default:
LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n",
handover_scope_name(scope));
- /* use "normal" HO_INTRA_BSC counter... */
+ /* use "normal" HO counter... */
case HO_NO_HANDOVER:
- case HO_INTRA_BSC:
return result_counter_BSC_HANDOVER(result);
+ case HO_INTRA_CELL:
+ return result_counter_BSC_INTRA_CELL_HO(result);
+ case HO_INTRA_BSC:
+ return result_counter_BSC_INTRA_BSC_HO(result);
case HO_INTER_BSC_OUT:
return result_counter_BSC_INTER_BSC_HO_OUT(result);
case HO_INTER_BSC_IN:
@@ -734,8 +737,9 @@ static int result_counter_bsc(enum handover_scope scope, enum handover_result re
}
}
-FUNC_RESULT_COUNTER(BTS, ASSIGNMENT)
FUNC_RESULT_COUNTER(BTS, HANDOVER)
+FUNC_RESULT_COUNTER(BTS, INTRA_CELL_HO)
+FUNC_RESULT_COUNTER(BTS, INTRA_BSC_HO)
FUNC_RESULT_COUNTER(BTS, INTER_BSC_HO_IN)
static int result_counter_BTS_INTER_BSC_HO_OUT(enum handover_result result) {
@@ -755,15 +759,16 @@ static int result_counter_BTS_INTER_BSC_HO_OUT(enum handover_result result) {
static int result_counter_bts(enum handover_scope scope, enum handover_result result)
{
switch (scope) {
- case HO_INTRA_CELL:
- return result_counter_BTS_ASSIGNMENT(result);
default:
LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n",
handover_scope_name(scope));
- /* use "normal" HO_INTRA_BSC counter... */
+ /* use "normal" HO counter... */
case HO_NO_HANDOVER:
- case HO_INTRA_BSC:
return result_counter_BTS_HANDOVER(result);
+ case HO_INTRA_CELL:
+ return result_counter_BTS_INTRA_CELL_HO(result);
+ case HO_INTRA_BSC:
+ return result_counter_BTS_INTRA_BSC_HO(result);
case HO_INTER_BSC_OUT:
return result_counter_BTS_INTER_BSC_HO_OUT(result);
case HO_INTER_BSC_IN: