This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
daniel gerrit-no-reply at lists.osmocom.orgdaniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/19734 ) Change subject: Count intra-cell and intra-bsc handover separately ...................................................................... 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 --- M include/osmocom/bsc/bts.h M include/osmocom/bsc/gsm_data.h M src/osmo-bsc/bts.c M src/osmo-bsc/handover_fsm.c 4 files changed, 131 insertions(+), 66 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/34/19734/1 diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index fb8139b..867979f 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -75,6 +75,20 @@ BTS_CTR_HANDOVER_TIMEOUT, BTS_CTR_HANDOVER_FAILED, BTS_CTR_HANDOVER_ERROR, + BTS_CTR_INTRA_CELL_HO_ATTEMPTED, + BTS_CTR_INTRA_CELL_HO_COMPLETED, + BTS_CTR_INTRA_CELL_HO_STOPPED, + BTS_CTR_INTRA_CELL_HO_NO_CHANNEL, + BTS_CTR_INTRA_CELL_HO_TIMEOUT, + BTS_CTR_INTRA_CELL_HO_FAILED, + BTS_CTR_INTRA_CELL_HO_ERROR, + BTS_CTR_INTRA_BSC_HO_ATTEMPTED, + BTS_CTR_INTRA_BSC_HO_COMPLETED, + BTS_CTR_INTRA_BSC_HO_STOPPED, + BTS_CTR_INTRA_BSC_HO_NO_CHANNEL, + BTS_CTR_INTRA_BSC_HO_TIMEOUT, + BTS_CTR_INTRA_BSC_HO_FAILED, + BTS_CTR_INTRA_BSC_HO_ERROR, BTS_CTR_INTER_BSC_HO_OUT_ATTEMPTED, BTS_CTR_INTER_BSC_HO_OUT_COMPLETED, BTS_CTR_INTER_BSC_HO_OUT_STOPPED, @@ -155,6 +169,22 @@ [BTS_CTR_HANDOVER_FAILED] = {"handover:failed", "Received Handover Fail messages."}, [BTS_CTR_HANDOVER_ERROR] = {"handover:error", "Re-assignment failed for other reason."}, + [BTS_CTR_INTRA_CELL_HO_ATTEMPTED] = {"intra_cell_ho:attempted", "Intra-Cell handover attempts."}, + [BTS_CTR_INTRA_CELL_HO_COMPLETED] = {"intra_cell_ho:completed", "Intra-Cell handover completed."}, + [BTS_CTR_INTRA_CELL_HO_STOPPED] = {"intra_cell_ho:stopped", "Connection ended during HO."}, + [BTS_CTR_INTRA_CELL_HO_NO_CHANNEL] = {"intra_cell_ho:no_channel", "Failure to allocate lchan for HO."}, + [BTS_CTR_INTRA_CELL_HO_TIMEOUT] = {"intra_cell_ho:timeout", "Handover timed out."}, + [BTS_CTR_INTRA_CELL_HO_FAILED] = {"intra_cell_ho:failed", "Received Handover Fail messages."}, + [BTS_CTR_INTRA_CELL_HO_ERROR] = {"intra_cell_ho:error", "Re-assignment failed for other reason."}, + + [BTS_CTR_INTRA_BSC_HO_ATTEMPTED] = {"intra_bsc_ho:attempted", "Intra-BSC handover attempts."}, + [BTS_CTR_INTRA_BSC_HO_COMPLETED] = {"intra_bsc_ho:completed", "Intra-BSC handover completed."}, + [BTS_CTR_INTRA_BSC_HO_STOPPED] = {"intra_bsc_ho:stopped", "Connection ended during HO."}, + [BTS_CTR_INTRA_BSC_HO_NO_CHANNEL] = {"intra_bsc_ho:no_channel", "Failure to allocate lchan for HO."}, + [BTS_CTR_INTRA_BSC_HO_TIMEOUT] = {"intra_bsc_ho:timeout", "Handover timed out."}, + [BTS_CTR_INTRA_BSC_HO_FAILED] = {"intra_bsc_ho:failed", "Received Handover Fail messages."}, + [BTS_CTR_INTRA_BSC_HO_ERROR] = {"intra_bsc_ho:error", "Re-assignment failed for other reason."}, + [BTS_CTR_INTER_BSC_HO_OUT_ATTEMPTED] = {"interbsc_ho_out:attempted", "Attempts to handover to remote BSS."}, [BTS_CTR_INTER_BSC_HO_OUT_COMPLETED] = {"interbsc_ho_out:completed", @@ -213,6 +243,62 @@ BTS_STAT_TS_BORKEN, }; +static const struct osmo_stat_item_desc bts_stat_desc[] = { + [BTS_STAT_CHAN_LOAD_AVERAGE] = { "chanloadavg", "Channel load average", "%", 16, 0 }, + [BTS_STAT_CHAN_CCCH_SDCCH4_USED] = { "chan_ccch_sdcch4:used", + "Number of CCCH+SDCCH4 channels used", "", 16, 0 }, + [BTS_STAT_CHAN_CCCH_SDCCH4_TOTAL] = { "chan_ccch_sdcch4:total", + "Number of CCCH+SDCCH4 channels total", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_USED] = { "chan_tch_f:used", + "Number of TCH/F channels used", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_TOTAL] = { "chan_tch_f:total", + "Number of TCH/F channels total", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_H_USED] = { "chan_tch_h:used", + "Number of TCH/H channels used", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_H_TOTAL] = { "chan_tch_h:total", + "Number of TCH/H channels total", "", 16, 0 }, + [BTS_STAT_CHAN_SDCCH8_USED] = { "chan_sdcch8:used", + "Number of SDCCH8 channels used", "", 16, 0 }, + [BTS_STAT_CHAN_SDCCH8_TOTAL] = { "chan_sdcch8:total", + "Number of SDCCH8 channels total", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_PDCH_USED] = { "chan_tch_f_pdch:used", + "Number of TCH/F_PDCH channels used", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_PDCH_TOTAL] = { "chan_tch_f_pdch:total", + "Number of TCH/F_PDCH channels total", "", 16, 0 }, + [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED] = { "chan_ccch_sdcch4_cbch:used", + "Number of CCCH+SDCCH4+CBCH channels used", "", 16, 0 }, + [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL] = { "chan_ccch_sdcch4_cbch:total", + "Number of CCCH+SDCCH4+CBCH channels total", "", 16, 0 }, + [BTS_STAT_CHAN_SDCCH8_CBCH_USED] = { "chan_sdcch8_cbch:used", + "Number of SDCCH8+CBCH channels used", "", 16, 0 }, + [BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL] = { "chan_sdcch8_cbch:total", + "Number of SDCCH8+CBCH channels total", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED] = { "chan_tch_f_tch_h_pdch:used", + "Number of TCH/F_TCH/H_PDCH channels used", "", 16, 0 }, + [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL] = { "chan_tch_f_tch_h_pdch:total", + "Number of TCH/F_TCH/H_PDCH channels total", "", 16, 0 }, + [BTS_STAT_T3122] = { "T3122", "T3122 IMMEDIATE ASSIGNMENT REJECT wait indicator", + "s", 16, GSM_T3122_DEFAULT }, + [BTS_STAT_RACH_BUSY] = { "rach_busy", + "RACH slots with signal above threshold", "%", 16, 0 }, + [BTS_STAT_RACH_ACCESS] = { "rach_access", + "RACH slots with access bursts in them", "%", 16, 0 }, + [BTS_STAT_OML_CONNECTED] = { "oml_connected", "Number of OML links connected", "", 16, 0 }, + [BTS_STAT_RSL_CONNECTED] = { "rsl_connected", "Number of RSL links connected", "", 16, 0 }, + [BTS_STAT_LCHAN_BORKEN] = { "lchan_borken", + "Number of lchans in the BORKEN state", "", 16, 0 }, + [BTS_STAT_TS_BORKEN] = { "ts_borken", + "Number of timeslots in the BORKEN state", "", 16, 0 }, +}; + +static const struct osmo_stat_item_group_desc bts_statg_desc = { + .group_name_prefix = "bts", + .group_description = "base transceiver station", + .class_id = OSMO_STATS_CLASS_GLOBAL, + .num_items = ARRAY_SIZE(bts_stat_desc), + .item_desc = bts_stat_desc, +}; + enum gsm_bts_type { GSM_BTS_TYPE_UNKNOWN, GSM_BTS_TYPE_BS11, diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index cfed1f8..60db07b 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -969,6 +969,20 @@ BSC_CTR_HANDOVER_TIMEOUT, BSC_CTR_HANDOVER_FAILED, BSC_CTR_HANDOVER_ERROR, + BSC_CTR_INTRA_CELL_HO_ATTEMPTED, + BSC_CTR_INTRA_CELL_HO_COMPLETED, + BSC_CTR_INTRA_CELL_HO_STOPPED, + BSC_CTR_INTRA_CELL_HO_NO_CHANNEL, + BSC_CTR_INTRA_CELL_HO_TIMEOUT, + BSC_CTR_INTRA_CELL_HO_FAILED, + BSC_CTR_INTRA_CELL_HO_ERROR, + BSC_CTR_INTRA_BSC_HO_ATTEMPTED, + BSC_CTR_INTRA_BSC_HO_COMPLETED, + BSC_CTR_INTRA_BSC_HO_STOPPED, + BSC_CTR_INTRA_BSC_HO_NO_CHANNEL, + BSC_CTR_INTRA_BSC_HO_TIMEOUT, + BSC_CTR_INTRA_BSC_HO_FAILED, + BSC_CTR_INTRA_BSC_HO_ERROR, BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED, BSC_CTR_INTER_BSC_HO_OUT_COMPLETED, BSC_CTR_INTER_BSC_HO_OUT_STOPPED, @@ -1000,14 +1014,30 @@ [BSC_CTR_ASSIGNMENT_FAILED] = {"assignment:failed", "Received Assignment Failure message."}, [BSC_CTR_ASSIGNMENT_ERROR] = {"assignment:error", "Assignment failed for other reason."}, - [BSC_CTR_HANDOVER_ATTEMPTED] = {"handover:attempted", "Intra-BSC handover attempts."}, - [BSC_CTR_HANDOVER_COMPLETED] = {"handover:completed", "Intra-BSC handover completed."}, + [BSC_CTR_HANDOVER_ATTEMPTED] = {"handover:attempted", "Handover attempts."}, + [BSC_CTR_HANDOVER_COMPLETED] = {"handover:completed", "Handover completed."}, [BSC_CTR_HANDOVER_STOPPED] = {"handover:stopped", "Connection ended during HO."}, [BSC_CTR_HANDOVER_NO_CHANNEL] = {"handover:no_channel", "Failure to allocate lchan for HO."}, [BSC_CTR_HANDOVER_TIMEOUT] = {"handover:timeout", "Handover timed out."}, [BSC_CTR_HANDOVER_FAILED] = {"handover:failed", "Received Handover Fail messages."}, [BSC_CTR_HANDOVER_ERROR] = {"handover:error", "Re-assignment failed for other reason."}, + [BSC_CTR_INTRA_CELL_HO_ATTEMPTED] = {"intra_cell_ho:attempted", "Intra-Cell handover attempts."}, + [BSC_CTR_INTRA_CELL_HO_COMPLETED] = {"intra_cell_ho:completed", "Intra-Cell handover completed."}, + [BSC_CTR_INTRA_CELL_HO_STOPPED] = {"intra_cell_ho:stopped", "Connection ended during HO."}, + [BSC_CTR_INTRA_CELL_HO_NO_CHANNEL] = {"intra_cell_ho:no_channel", "Failure to allocate lchan for HO."}, + [BSC_CTR_INTRA_CELL_HO_TIMEOUT] = {"intra_cell_ho:timeout", "Handover timed out."}, + [BSC_CTR_INTRA_CELL_HO_FAILED] = {"intra_cell_ho:failed", "Received Handover Fail messages."}, + [BSC_CTR_INTRA_CELL_HO_ERROR] = {"intra_cell_ho:error", "Re-assignment failed for other reason."}, + + [BSC_CTR_INTRA_BSC_HO_ATTEMPTED] = {"intra_bsc_ho:attempted", "Intra-BSC handover attempts."}, + [BSC_CTR_INTRA_BSC_HO_COMPLETED] = {"intra_bsc_ho:completed", "Intra-BSC handover completed."}, + [BSC_CTR_INTRA_BSC_HO_STOPPED] = {"intra_bsc_ho:stopped", "Connection ended during HO."}, + [BSC_CTR_INTRA_BSC_HO_NO_CHANNEL] = {"intra_bsc_ho:no_channel", "Failure to allocate lchan for HO."}, + [BSC_CTR_INTRA_BSC_HO_TIMEOUT] = {"intra_bsc_ho:timeout", "Handover timed out."}, + [BSC_CTR_INTRA_BSC_HO_FAILED] = {"intra_bsc_ho:failed", "Received Handover Fail messages."}, + [BSC_CTR_INTRA_BSC_HO_ERROR] = {"intra_bsc_ho:error", "Re-assignment failed for other reason."}, + [BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED] = {"interbsc_ho_out:attempted", "Attempts to handover to remote BSS."}, [BSC_CTR_INTER_BSC_HO_OUT_COMPLETED] = {"interbsc_ho_out:completed", diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c index 4318b7e..a17143d 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -120,62 +120,6 @@ return 0; } -static const struct osmo_stat_item_desc bts_stat_desc[] = { - [BTS_STAT_CHAN_LOAD_AVERAGE] = { "chanloadavg", "Channel load average", "%", 16, 0 }, - [BTS_STAT_CHAN_CCCH_SDCCH4_USED] = { "chan_ccch_sdcch4:used", - "Number of CCCH+SDCCH4 channels used", "", 16, 0 }, - [BTS_STAT_CHAN_CCCH_SDCCH4_TOTAL] = { "chan_ccch_sdcch4:total", - "Number of CCCH+SDCCH4 channels total", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_USED] = { "chan_tch_f:used", - "Number of TCH/F channels used", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_TOTAL] = { "chan_tch_f:total", - "Number of TCH/F channels total", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_H_USED] = { "chan_tch_h:used", - "Number of TCH/H channels used", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_H_TOTAL] = { "chan_tch_h:total", - "Number of TCH/H channels total", "", 16, 0 }, - [BTS_STAT_CHAN_SDCCH8_USED] = { "chan_sdcch8:used", - "Number of SDCCH8 channels used", "", 16, 0 }, - [BTS_STAT_CHAN_SDCCH8_TOTAL] = { "chan_sdcch8:total", - "Number of SDCCH8 channels total", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_PDCH_USED] = { "chan_tch_f_pdch:used", - "Number of TCH/F_PDCH channels used", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_PDCH_TOTAL] = { "chan_tch_f_pdch:total", - "Number of TCH/F_PDCH channels total", "", 16, 0 }, - [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED] = { "chan_ccch_sdcch4_cbch:used", - "Number of CCCH+SDCCH4+CBCH channels used", "", 16, 0 }, - [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL] = { "chan_ccch_sdcch4_cbch:total", - "Number of CCCH+SDCCH4+CBCH channels total", "", 16, 0 }, - [BTS_STAT_CHAN_SDCCH8_CBCH_USED] = { "chan_sdcch8_cbch:used", - "Number of SDCCH8+CBCH channels used", "", 16, 0 }, - [BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL] = { "chan_sdcch8_cbch:total", - "Number of SDCCH8+CBCH channels total", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED] = { "chan_tch_f_tch_h_pdch:used", - "Number of TCH/F_TCH/H_PDCH channels used", "", 16, 0 }, - [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL] = { "chan_tch_f_tch_h_pdch:total", - "Number of TCH/F_TCH/H_PDCH channels total", "", 16, 0 }, - [BTS_STAT_T3122] = { "T3122", "T3122 IMMEDIATE ASSIGNMENT REJECT wait indicator", - "s", 16, GSM_T3122_DEFAULT }, - [BTS_STAT_RACH_BUSY] = { "rach_busy", - "RACH slots with signal above threshold", "%", 16, 0 }, - [BTS_STAT_RACH_ACCESS] = { "rach_access", - "RACH slots with access bursts in them", "%", 16, 0 }, - [BTS_STAT_OML_CONNECTED] = { "oml_connected", "Number of OML links connected", "", 16, 0 }, - [BTS_STAT_RSL_CONNECTED] = { "rsl_connected", "Number of RSL links connected", "", 16, 0 }, - [BTS_STAT_LCHAN_BORKEN] = { "lchan_borken", - "Number of lchans in the BORKEN state", "", 16, 0 }, - [BTS_STAT_TS_BORKEN] = { "ts_borken", - "Number of timeslots in the BORKEN state", "", 16, 0 }, -}; - -static const struct osmo_stat_item_group_desc bts_statg_desc = { - .group_name_prefix = "bts", - .group_description = "base transceiver station", - .class_id = OSMO_STATS_CLASS_GLOBAL, - .num_items = ARRAY_SIZE(bts_stat_desc), - .item_desc = bts_stat_desc, -}; - static const uint8_t bts_nse_timer_default[] = { 3, 3, 3, 3, 30, 3, 10 }; static const uint8_t bts_cell_timer_default[] = { 3, 3, 3, 3, 3, 10, 3, 10, 3, 10, 3 }; diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c index 512e40b..edf91e7 100644 --- a/src/osmo-bsc/handover_fsm.c +++ b/src/osmo-bsc/handover_fsm.c @@ -369,12 +369,13 @@ 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, @@ -702,6 +703,8 @@ 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) { @@ -722,14 +725,14 @@ { switch (scope) { case HO_INTRA_CELL: - return result_counter_BSC_ASSIGNMENT(result); + return result_counter_BSC_INTRA_CELL_HO(result); default: LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n", handover_scope_name(scope)); /* use "normal" HO_INTRA_BSC counter... */ case HO_NO_HANDOVER: case HO_INTRA_BSC: - return result_counter_BSC_HANDOVER(result); + 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: @@ -739,6 +742,8 @@ 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) { @@ -759,14 +764,14 @@ { switch (scope) { case HO_INTRA_CELL: - return result_counter_BTS_ASSIGNMENT(result); + return result_counter_BTS_INTRA_CELL_HO(result); default: LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n", handover_scope_name(scope)); /* use "normal" HO_INTRA_BSC counter... */ case HO_NO_HANDOVER: case HO_INTRA_BSC: - return result_counter_BTS_HANDOVER(result); + 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: -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/19734 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I3a1195640b99813036c9f1426ee5f07548e26547 Gerrit-Change-Number: 19734 Gerrit-PatchSet: 1 Gerrit-Owner: daniel <dwillmann at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200820/51370278/attachment.htm>