<p>daniel has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/19734">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Count intra-cell and intra-bsc handover separately<br><br>Currently the counters don't distinguish between intra-cell and<br>intra-bsc handover.<br><br>Add _CTR_INTRA_CELL_HO_ and _CTR_INTRA_BSC_HO_ counters to track<br>intra-cell/bsc handover separately.<br><br>Change-Id: I3a1195640b99813036c9f1426ee5f07548e26547<br>Related: SYS#4877<br>---<br>M include/osmocom/bsc/bts.h<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/bts.c<br>M src/osmo-bsc/handover_fsm.c<br>4 files changed, 131 insertions(+), 66 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/34/19734/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h</span><br><span>index fb8139b..867979f 100644</span><br><span>--- a/include/osmocom/bsc/bts.h</span><br><span>+++ b/include/osmocom/bsc/bts.h</span><br><span>@@ -75,6 +75,20 @@</span><br><span>     BTS_CTR_HANDOVER_TIMEOUT,</span><br><span>    BTS_CTR_HANDOVER_FAILED,</span><br><span>     BTS_CTR_HANDOVER_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_INTRA_CELL_HO_ATTEMPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_INTRA_CELL_HO_COMPLETED,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_INTRA_CELL_HO_STOPPED,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_INTRA_CELL_HO_NO_CHANNEL,</span><br><span style="color: hsl(120, 100%, 40%);">+     BTS_CTR_INTRA_CELL_HO_TIMEOUT,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_INTRA_CELL_HO_FAILED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_INTRA_CELL_HO_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_INTRA_BSC_HO_ATTEMPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_INTRA_BSC_HO_COMPLETED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_INTRA_BSC_HO_STOPPED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_INTRA_BSC_HO_NO_CHANNEL,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_INTRA_BSC_HO_TIMEOUT,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_INTRA_BSC_HO_FAILED,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_INTRA_BSC_HO_ERROR,</span><br><span>  BTS_CTR_INTER_BSC_HO_OUT_ATTEMPTED,</span><br><span>  BTS_CTR_INTER_BSC_HO_OUT_COMPLETED,</span><br><span>  BTS_CTR_INTER_BSC_HO_OUT_STOPPED,</span><br><span>@@ -155,6 +169,22 @@</span><br><span>     [BTS_CTR_HANDOVER_FAILED] =             {"handover:failed", "Received Handover Fail messages."},</span><br><span>         [BTS_CTR_HANDOVER_ERROR] =              {"handover:error", "Re-assignment failed for other reason."},</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_INTRA_CELL_HO_ATTEMPTED] =     {"intra_cell_ho:attempted", "Intra-Cell handover attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_INTRA_CELL_HO_COMPLETED] =     {"intra_cell_ho:completed", "Intra-Cell handover completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_INTRA_CELL_HO_STOPPED] =       {"intra_cell_ho:stopped", "Connection ended during HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_INTRA_CELL_HO_NO_CHANNEL] =    {"intra_cell_ho:no_channel", "Failure to allocate lchan for HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_CTR_INTRA_CELL_HO_TIMEOUT] =       {"intra_cell_ho:timeout", "Handover timed out."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_INTRA_CELL_HO_FAILED] =        {"intra_cell_ho:failed", "Received Handover Fail messages."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_INTRA_CELL_HO_ERROR] =         {"intra_cell_ho:error", "Re-assignment failed for other reason."},</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_INTRA_BSC_HO_ATTEMPTED] =      {"intra_bsc_ho:attempted", "Intra-BSC handover attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_INTRA_BSC_HO_COMPLETED] =      {"intra_bsc_ho:completed", "Intra-BSC handover completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_INTRA_BSC_HO_STOPPED] =        {"intra_bsc_ho:stopped", "Connection ended during HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_CTR_INTRA_BSC_HO_NO_CHANNEL] =     {"intra_bsc_ho:no_channel", "Failure to allocate lchan for HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_INTRA_BSC_HO_TIMEOUT] =        {"intra_bsc_ho:timeout", "Handover timed out."},</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_CTR_INTRA_BSC_HO_FAILED] =         {"intra_bsc_ho:failed", "Received Handover Fail messages."},</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_INTRA_BSC_HO_ERROR] =          {"intra_bsc_ho:error", "Re-assignment failed for other reason."},</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      [BTS_CTR_INTER_BSC_HO_OUT_ATTEMPTED] =  {"interbsc_ho_out:attempted",</span><br><span>                                               "Attempts to handover to remote BSS."},</span><br><span>   [BTS_CTR_INTER_BSC_HO_OUT_COMPLETED] =  {"interbsc_ho_out:completed",</span><br><span>@@ -213,6 +243,62 @@</span><br><span>       BTS_STAT_TS_BORKEN,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static const struct osmo_stat_item_desc bts_stat_desc[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_STAT_CHAN_LOAD_AVERAGE] =                  { "chanloadavg", "Channel load average", "%", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_STAT_CHAN_CCCH_SDCCH4_USED] =              { "chan_ccch_sdcch4:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    "Number of CCCH+SDCCH4 channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_STAT_CHAN_CCCH_SDCCH4_TOTAL] =             { "chan_ccch_sdcch4:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   "Number of CCCH+SDCCH4 channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_STAT_CHAN_TCH_F_USED] =                    { "chan_tch_f:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          "Number of TCH/F channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   [BTS_STAT_CHAN_TCH_F_TOTAL] =                   { "chan_tch_f:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         "Number of TCH/F channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_STAT_CHAN_TCH_H_USED] =                    { "chan_tch_h:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          "Number of TCH/H channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   [BTS_STAT_CHAN_TCH_H_TOTAL] =                   { "chan_tch_h:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         "Number of TCH/H channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_STAT_CHAN_SDCCH8_USED] =                   { "chan_sdcch8:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         "Number of SDCCH8 channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_STAT_CHAN_SDCCH8_TOTAL] =                  { "chan_sdcch8:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        "Number of SDCCH8 channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_STAT_CHAN_TCH_F_PDCH_USED] =               { "chan_tch_f_pdch:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     "Number of TCH/F_PDCH channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_STAT_CHAN_TCH_F_PDCH_TOTAL] =              { "chan_tch_f_pdch:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    "Number of TCH/F_PDCH channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED] =         { "chan_ccch_sdcch4_cbch:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       "Number of CCCH+SDCCH4+CBCH channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL] =        { "chan_ccch_sdcch4_cbch:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      "Number of CCCH+SDCCH4+CBCH channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_STAT_CHAN_SDCCH8_CBCH_USED] =              { "chan_sdcch8_cbch:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    "Number of SDCCH8+CBCH channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL] =             { "chan_sdcch8_cbch:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   "Number of SDCCH8+CBCH channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED] =         { "chan_tch_f_tch_h_pdch:used",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       "Number of TCH/F_TCH/H_PDCH channels used", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL] =        { "chan_tch_f_tch_h_pdch:total",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      "Number of TCH/F_TCH/H_PDCH channels total", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_STAT_T3122] =                              { "T3122", "T3122 IMMEDIATE ASSIGNMENT REJECT wait indicator",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      "s", 16, GSM_T3122_DEFAULT },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_STAT_RACH_BUSY] =                          { "rach_busy",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        "RACH slots with signal above threshold", "%", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_STAT_RACH_ACCESS] =                        { "rach_access",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      "RACH slots with access bursts in them", "%", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_STAT_OML_CONNECTED] =                      { "oml_connected", "Number of OML links connected", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_STAT_RSL_CONNECTED] =                      { "rsl_connected", "Number of RSL links connected", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_STAT_LCHAN_BORKEN] =                       { "lchan_borken",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     "Number of lchans in the BORKEN state", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_STAT_TS_BORKEN] =                          { "ts_borken",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        "Number of timeslots in the BORKEN state", "", 16, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct osmo_stat_item_group_desc bts_statg_desc = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .group_name_prefix = "bts",</span><br><span style="color: hsl(120, 100%, 40%);">+ .group_description = "base transceiver station",</span><br><span style="color: hsl(120, 100%, 40%);">+    .class_id = OSMO_STATS_CLASS_GLOBAL,</span><br><span style="color: hsl(120, 100%, 40%);">+  .num_items = ARRAY_SIZE(bts_stat_desc),</span><br><span style="color: hsl(120, 100%, 40%);">+       .item_desc = bts_stat_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> enum gsm_bts_type {</span><br><span>     GSM_BTS_TYPE_UNKNOWN,</span><br><span>        GSM_BTS_TYPE_BS11,</span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index cfed1f8..60db07b 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -969,6 +969,20 @@</span><br><span>       BSC_CTR_HANDOVER_TIMEOUT,</span><br><span>    BSC_CTR_HANDOVER_FAILED,</span><br><span>     BSC_CTR_HANDOVER_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+       BSC_CTR_INTRA_CELL_HO_ATTEMPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+      BSC_CTR_INTRA_CELL_HO_COMPLETED,</span><br><span style="color: hsl(120, 100%, 40%);">+      BSC_CTR_INTRA_CELL_HO_STOPPED,</span><br><span style="color: hsl(120, 100%, 40%);">+        BSC_CTR_INTRA_CELL_HO_NO_CHANNEL,</span><br><span style="color: hsl(120, 100%, 40%);">+     BSC_CTR_INTRA_CELL_HO_TIMEOUT,</span><br><span style="color: hsl(120, 100%, 40%);">+        BSC_CTR_INTRA_CELL_HO_FAILED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BSC_CTR_INTRA_CELL_HO_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+  BSC_CTR_INTRA_BSC_HO_ATTEMPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BSC_CTR_INTRA_BSC_HO_COMPLETED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BSC_CTR_INTRA_BSC_HO_STOPPED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BSC_CTR_INTRA_BSC_HO_NO_CHANNEL,</span><br><span style="color: hsl(120, 100%, 40%);">+      BSC_CTR_INTRA_BSC_HO_TIMEOUT,</span><br><span style="color: hsl(120, 100%, 40%);">+ BSC_CTR_INTRA_BSC_HO_FAILED,</span><br><span style="color: hsl(120, 100%, 40%);">+  BSC_CTR_INTRA_BSC_HO_ERROR,</span><br><span>  BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED,</span><br><span>  BSC_CTR_INTER_BSC_HO_OUT_COMPLETED,</span><br><span>  BSC_CTR_INTER_BSC_HO_OUT_STOPPED,</span><br><span>@@ -1000,14 +1014,30 @@</span><br><span>  [BSC_CTR_ASSIGNMENT_FAILED] =           {"assignment:failed", "Received Assignment Failure message."},</span><br><span>   [BSC_CTR_ASSIGNMENT_ERROR] =            {"assignment:error", "Assignment failed for other reason."},</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    [BSC_CTR_HANDOVER_ATTEMPTED] =          {"handover:attempted", "Intra-BSC handover attempts."},</span><br><span style="color: hsl(0, 100%, 40%);">-     [BSC_CTR_HANDOVER_COMPLETED] =          {"handover:completed", "Intra-BSC handover completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+  [BSC_CTR_HANDOVER_ATTEMPTED] =          {"handover:attempted", "Handover attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BSC_CTR_HANDOVER_COMPLETED] =          {"handover:completed", "Handover completed."},</span><br><span>   [BSC_CTR_HANDOVER_STOPPED] =            {"handover:stopped", "Connection ended during HO."},</span><br><span>     [BSC_CTR_HANDOVER_NO_CHANNEL] =         {"handover:no_channel", "Failure to allocate lchan for HO."},</span><br><span>    [BSC_CTR_HANDOVER_TIMEOUT] =            {"handover:timeout", "Handover timed out."},</span><br><span>     [BSC_CTR_HANDOVER_FAILED] =             {"handover:failed", "Received Handover Fail messages."},</span><br><span>         [BSC_CTR_HANDOVER_ERROR] =              {"handover:error", "Re-assignment failed for other reason."},</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ [BSC_CTR_INTRA_CELL_HO_ATTEMPTED] =     {"intra_cell_ho:attempted", "Intra-Cell handover attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BSC_CTR_INTRA_CELL_HO_COMPLETED] =     {"intra_cell_ho:completed", "Intra-Cell handover completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+    [BSC_CTR_INTRA_CELL_HO_STOPPED] =       {"intra_cell_ho:stopped", "Connection ended during HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BSC_CTR_INTRA_CELL_HO_NO_CHANNEL] =    {"intra_cell_ho:no_channel", "Failure to allocate lchan for HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+        [BSC_CTR_INTRA_CELL_HO_TIMEOUT] =       {"intra_cell_ho:timeout", "Handover timed out."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BSC_CTR_INTRA_CELL_HO_FAILED] =        {"intra_cell_ho:failed", "Received Handover Fail messages."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BSC_CTR_INTRA_CELL_HO_ERROR] =         {"intra_cell_ho:error", "Re-assignment failed for other reason."},</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      [BSC_CTR_INTRA_BSC_HO_ATTEMPTED] =      {"intra_bsc_ho:attempted", "Intra-BSC handover attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+       [BSC_CTR_INTRA_BSC_HO_COMPLETED] =      {"intra_bsc_ho:completed", "Intra-BSC handover completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+      [BSC_CTR_INTRA_BSC_HO_STOPPED] =        {"intra_bsc_ho:stopped", "Connection ended during HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+  [BSC_CTR_INTRA_BSC_HO_NO_CHANNEL] =     {"intra_bsc_ho:no_channel", "Failure to allocate lchan for HO."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [BSC_CTR_INTRA_BSC_HO_TIMEOUT] =        {"intra_bsc_ho:timeout", "Handover timed out."},</span><br><span style="color: hsl(120, 100%, 40%);">+  [BSC_CTR_INTRA_BSC_HO_FAILED] =         {"intra_bsc_ho:failed", "Received Handover Fail messages."},</span><br><span style="color: hsl(120, 100%, 40%);">+      [BSC_CTR_INTRA_BSC_HO_ERROR] =          {"intra_bsc_ho:error", "Re-assignment failed for other reason."},</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      [BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED] =  {"interbsc_ho_out:attempted",</span><br><span>                                               "Attempts to handover to remote BSS."},</span><br><span>   [BSC_CTR_INTER_BSC_HO_OUT_COMPLETED] =  {"interbsc_ho_out:completed",</span><br><span>diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c</span><br><span>index 4318b7e..a17143d 100644</span><br><span>--- a/src/osmo-bsc/bts.c</span><br><span>+++ b/src/osmo-bsc/bts.c</span><br><span>@@ -120,62 +120,6 @@</span><br><span>  return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static const struct osmo_stat_item_desc bts_stat_desc[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-   [BTS_STAT_CHAN_LOAD_AVERAGE] =                  { "chanloadavg", "Channel load average", "%", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-    [BTS_STAT_CHAN_CCCH_SDCCH4_USED] =              { "chan_ccch_sdcch4:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      "Number of CCCH+SDCCH4 channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-       [BTS_STAT_CHAN_CCCH_SDCCH4_TOTAL] =             { "chan_ccch_sdcch4:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     "Number of CCCH+SDCCH4 channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-      [BTS_STAT_CHAN_TCH_F_USED] =                    { "chan_tch_f:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    "Number of TCH/F channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-     [BTS_STAT_CHAN_TCH_F_TOTAL] =                   { "chan_tch_f:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   "Number of TCH/F channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-    [BTS_STAT_CHAN_TCH_H_USED] =                    { "chan_tch_h:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    "Number of TCH/H channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-     [BTS_STAT_CHAN_TCH_H_TOTAL] =                   { "chan_tch_h:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   "Number of TCH/H channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-    [BTS_STAT_CHAN_SDCCH8_USED] =                   { "chan_sdcch8:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   "Number of SDCCH8 channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-    [BTS_STAT_CHAN_SDCCH8_TOTAL] =                  { "chan_sdcch8:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          "Number of SDCCH8 channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-   [BTS_STAT_CHAN_TCH_F_PDCH_USED] =               { "chan_tch_f_pdch:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       "Number of TCH/F_PDCH channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-        [BTS_STAT_CHAN_TCH_F_PDCH_TOTAL] =              { "chan_tch_f_pdch:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      "Number of TCH/F_PDCH channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-       [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED] =         { "chan_ccch_sdcch4_cbch:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                         "Number of CCCH+SDCCH4+CBCH channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-  [BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL] =        { "chan_ccch_sdcch4_cbch:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        "Number of CCCH+SDCCH4+CBCH channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">- [BTS_STAT_CHAN_SDCCH8_CBCH_USED] =              { "chan_sdcch8_cbch:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      "Number of SDCCH8+CBCH channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-       [BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL] =             { "chan_sdcch8_cbch:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                     "Number of SDCCH8+CBCH channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-      [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED] =         { "chan_tch_f_tch_h_pdch:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                         "Number of TCH/F_TCH/H_PDCH channels used", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-  [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL] =        { "chan_tch_f_tch_h_pdch:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        "Number of TCH/F_TCH/H_PDCH channels total", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">- [BTS_STAT_T3122] =                              { "T3122", "T3122 IMMEDIATE ASSIGNMENT REJECT wait indicator",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        "s", 16, GSM_T3122_DEFAULT },</span><br><span style="color: hsl(0, 100%, 40%);">-       [BTS_STAT_RACH_BUSY] =                          { "rach_busy",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          "RACH slots with signal above threshold", "%", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-   [BTS_STAT_RACH_ACCESS] =                        { "rach_access",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        "RACH slots with access bursts in them", "%", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-    [BTS_STAT_OML_CONNECTED] =                      { "oml_connected", "Number of OML links connected", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-  [BTS_STAT_RSL_CONNECTED] =                      { "rsl_connected", "Number of RSL links connected", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-  [BTS_STAT_LCHAN_BORKEN] =                       { "lchan_borken",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       "Number of lchans in the BORKEN state", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-      [BTS_STAT_TS_BORKEN] =                          { "ts_borken",</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          "Number of timeslots in the BORKEN state", "", 16, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static const struct osmo_stat_item_group_desc bts_statg_desc = {</span><br><span style="color: hsl(0, 100%, 40%);">- .group_name_prefix = "bts",</span><br><span style="color: hsl(0, 100%, 40%);">-   .group_description = "base transceiver station",</span><br><span style="color: hsl(0, 100%, 40%);">-      .class_id = OSMO_STATS_CLASS_GLOBAL,</span><br><span style="color: hsl(0, 100%, 40%);">-    .num_items = ARRAY_SIZE(bts_stat_desc),</span><br><span style="color: hsl(0, 100%, 40%);">- .item_desc = bts_stat_desc,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static const uint8_t bts_nse_timer_default[] = { 3, 3, 3, 3, 30, 3, 10 };</span><br><span> static const uint8_t bts_cell_timer_default[] =</span><br><span>                                { 3, 3, 3, 3, 3, 10, 3, 10, 3, 10, 3 };</span><br><span>diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c</span><br><span>index 512e40b..edf91e7 100644</span><br><span>--- a/src/osmo-bsc/handover_fsm.c</span><br><span>+++ b/src/osmo-bsc/handover_fsm.c</span><br><span>@@ -369,12 +369,13 @@</span><br><span> </span><br><span>         ho->new_lchan = lchan_select_by_type(ho->new_bts, ho->new_lchan_type);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (ho->scope & HO_INTRA_CELL)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ho->scope & HO_INTRA_CELL) {</span><br><span style="color: hsl(120, 100%, 40%);">+               ho_count(bts, CTR_INTRA_CELL_HO_ATTEMPTED);</span><br><span>          ho_fsm_update_id(fi, "intraCell");</span><br><span style="color: hsl(0, 100%, 40%);">-    else</span><br><span style="color: hsl(120, 100%, 40%);">+  } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              ho_count(bts, CTR_INTRA_BSC_HO_ATTEMPTED);</span><br><span>           ho_fsm_update_id(fi, "intraBSC");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     ho_count(bts, CTR_HANDOVER_ATTEMPTED);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span>        if (!ho->new_lchan) {</span><br><span>             ho_fail(HO_RESULT_FAIL_NO_CHANNEL,</span><br><span>@@ -702,6 +703,8 @@</span><br><span> </span><br><span> FUNC_RESULT_COUNTER(BSC, ASSIGNMENT)</span><br><span> FUNC_RESULT_COUNTER(BSC, HANDOVER)</span><br><span style="color: hsl(120, 100%, 40%);">+FUNC_RESULT_COUNTER(BSC, INTRA_CELL_HO)</span><br><span style="color: hsl(120, 100%, 40%);">+FUNC_RESULT_COUNTER(BSC, INTRA_BSC_HO)</span><br><span> FUNC_RESULT_COUNTER(BSC, INTER_BSC_HO_IN)</span><br><span> </span><br><span> static int result_counter_BSC_INTER_BSC_HO_OUT(enum handover_result result) {</span><br><span>@@ -722,14 +725,14 @@</span><br><span> {</span><br><span>   switch (scope) {</span><br><span>     case HO_INTRA_CELL:</span><br><span style="color: hsl(0, 100%, 40%);">-             return result_counter_BSC_ASSIGNMENT(result);</span><br><span style="color: hsl(120, 100%, 40%);">+         return result_counter_BSC_INTRA_CELL_HO(result);</span><br><span>     default:</span><br><span>             LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n",</span><br><span>                handover_scope_name(scope));</span><br><span>            /* use "normal" HO_INTRA_BSC counter... */</span><br><span>         case HO_NO_HANDOVER:</span><br><span>         case HO_INTRA_BSC:</span><br><span style="color: hsl(0, 100%, 40%);">-              return result_counter_BSC_HANDOVER(result);</span><br><span style="color: hsl(120, 100%, 40%);">+           return result_counter_BSC_INTRA_BSC_HO(result);</span><br><span>      case HO_INTER_BSC_OUT:</span><br><span>               return result_counter_BSC_INTER_BSC_HO_OUT(result);</span><br><span>  case HO_INTER_BSC_IN:</span><br><span>@@ -739,6 +742,8 @@</span><br><span> </span><br><span> FUNC_RESULT_COUNTER(BTS, ASSIGNMENT)</span><br><span> FUNC_RESULT_COUNTER(BTS, HANDOVER)</span><br><span style="color: hsl(120, 100%, 40%);">+FUNC_RESULT_COUNTER(BTS, INTRA_CELL_HO)</span><br><span style="color: hsl(120, 100%, 40%);">+FUNC_RESULT_COUNTER(BTS, INTRA_BSC_HO)</span><br><span> FUNC_RESULT_COUNTER(BTS, INTER_BSC_HO_IN)</span><br><span> </span><br><span> static int result_counter_BTS_INTER_BSC_HO_OUT(enum handover_result result) {</span><br><span>@@ -759,14 +764,14 @@</span><br><span> {</span><br><span>        switch (scope) {</span><br><span>     case HO_INTRA_CELL:</span><br><span style="color: hsl(0, 100%, 40%);">-             return result_counter_BTS_ASSIGNMENT(result);</span><br><span style="color: hsl(120, 100%, 40%);">+         return result_counter_BTS_INTRA_CELL_HO(result);</span><br><span>     default:</span><br><span>             LOGP(DHO, LOGL_ERROR, "invalid enum handover_scope value: %s\n",</span><br><span>                handover_scope_name(scope));</span><br><span>            /* use "normal" HO_INTRA_BSC counter... */</span><br><span>         case HO_NO_HANDOVER:</span><br><span>         case HO_INTRA_BSC:</span><br><span style="color: hsl(0, 100%, 40%);">-              return result_counter_BTS_HANDOVER(result);</span><br><span style="color: hsl(120, 100%, 40%);">+           return result_counter_BTS_INTRA_BSC_HO(result);</span><br><span>      case HO_INTER_BSC_OUT:</span><br><span>               return result_counter_BTS_INTER_BSC_HO_OUT(result);</span><br><span>  case HO_INTER_BSC_IN:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/19734">change 19734</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/19734"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3a1195640b99813036c9f1426ee5f07548e26547 </div>
<div style="display:none"> Gerrit-Change-Number: 19734 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>