Counters are added for the following events (use VTY show to query):

  - Dropped IMMEDIATE ASSIGN REJECT messages
  - Merged IMMEDIATE ASSIGN REJECT messages
  - Rejected AGCH messages
  - Use of PCH (non-reserved) for AGCH messages
  - Use of AGCH (reserved) for AGCH messages

Sponsored-by: On-Waves ehf
---
 include/osmo-bts/gsm_data.h |   10 ++++++++++
 src/common/bts.c            |    1 +
 src/common/vty.c            |    8 ++++++++
 3 files changed, 19 insertions(+)

diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index ea3fa5e..b139903 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -48,9 +48,19 @@ struct gsm_bts_role_bts {
        } load;
        uint8_t ny1;
        uint8_t max_ta;
+
+       /* AGCH queuing */
        struct llist_head agch_queue;
        int agch_queue_length;
        int agch_max_queue_length;
+
+       /* TODO: Use a rate counter group instead */
+       uint64_t agch_queue_dropped_msgs;
+       uint64_t agch_queue_merged_msgs;
+       uint64_t agch_queue_rejected_msgs;
+       uint64_t agch_queue_agch_msgs;
+       uint64_t agch_queue_pch_msgs;
+
        struct paging_state *paging_state;
        char *bsc_oml_host;
        unsigned int rtp_jitter_buf_ms;
diff --git a/src/common/bts.c b/src/common/bts.c
index c834786..508d562 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -347,6 +347,7 @@ int bts_ccch_copy_msg(struct gsm_bts *bts, uint8_t 
*out_buf, struct gsm_time *gt
             ((struct gsm48_imm_ass *)msgb_l3(msg))->msg_type,
             is_ag_res ? "AGCH" : "PCH");
        msgb_free(msg);
+       btsb->agch_queue_agch_msgs++;
 
        return rc;
 }
diff --git a/src/common/vty.c b/src/common/vty.c
index d818f3f..d2aeed0 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -359,6 +359,14 @@ static void bts_dump_vty(struct vty *vty, struct gsm_bts 
*bts)
        vty_out(vty, "  Paging: Queue size %u, occupied %u, lifetime %us%s",
                paging_get_queue_max(btsb->paging_state), 
paging_queue_length(btsb->paging_state),
                paging_get_lifetime(btsb->paging_state), VTY_NEWLINE);
+       vty_out(vty, "  AGCH: Queue limit %u, occupied %d, "
+               "dropped %llu, merged %llu, rejected %llu, "
+               "ag-res %llu, non-res %llu%s",
+               btsb->agch_max_queue_length, btsb->agch_queue_length,
+               btsb->agch_queue_dropped_msgs, btsb->agch_queue_merged_msgs,
+               btsb->agch_queue_rejected_msgs, btsb->agch_queue_agch_msgs,
+               btsb->agch_queue_pch_msgs,
+               VTY_NEWLINE);
 #if 0
        vty_out(vty, "  Paging: %u pending requests, %u free slots%s",
                paging_pending_requests_nr(bts),
-- 
1.7.9.5


Reply via email to