Change in osmo-bsc[master]: stats: add bsc.paging:expired

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/.

osmith gerrit-no-reply at lists.osmocom.org
Fri Nov 26 13:30:28 UTC 2021


osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/26384 )


Change subject: stats: add bsc.paging:expired
......................................................................

stats: add bsc.paging:expired

Similar to paging:attempted, count paging:expired not only per BTS, but
also for the whole BSC. Add the timer bsc_T3113 to increase the counter
only once if paging expires, and not once per BTS where paging expired.

Related: SYS#4878
Change-Id: I9c118e7e3d61ed8c9f1951111255b196905eba4d
---
M include/osmocom/bsc/bsc_stats.h
M include/osmocom/bsc/bsc_subscriber.h
M src/osmo-bsc/bsc_stats.c
M src/osmo-bsc/osmo_bsc_bssap.c
M src/osmo-bsc/paging.c
5 files changed, 55 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/26384/1

diff --git a/include/osmocom/bsc/bsc_stats.h b/include/osmocom/bsc/bsc_stats.h
index 9140f85..801a2c1 100644
--- a/include/osmocom/bsc/bsc_stats.h
+++ b/include/osmocom/bsc/bsc_stats.h
@@ -76,6 +76,7 @@
 	BSC_CTR_PAGING_ATTEMPTED,
 	BSC_CTR_PAGING_DETACHED,
 	BSC_CTR_PAGING_RESPONDED,
+	BSC_CTR_PAGING_EXPIRED,
 	BSC_CTR_PAGING_NO_ACTIVE_PAGING,
 	BSC_CTR_UNKNOWN_UNIT_ID,
 	BSC_CTR_MSCPOOL_SUBSCR_NO_MSC,
diff --git a/include/osmocom/bsc/bsc_subscriber.h b/include/osmocom/bsc/bsc_subscriber.h
index 6fffafd..7736f38 100644
--- a/include/osmocom/bsc/bsc_subscriber.h
+++ b/include/osmocom/bsc/bsc_subscriber.h
@@ -5,6 +5,7 @@
 #include <stdint.h>
 
 #include <osmocom/core/linuxlist.h>
+#include <osmocom/core/timer.h>
 #include <osmocom/core/use_count.h>
 #include <osmocom/gsm/protocol/gsm_23_003.h>
 #include <osmocom/gsm/gsm48.h>
@@ -17,6 +18,9 @@
 
 	char imsi[GSM23003_IMSI_MAX_DIGITS+1];
 	uint32_t tmsi;
+
+	/* Paging expired timer to increase bsc.paging:expired */
+	struct osmo_timer_list bsc_T3113;
 };
 
 const char *bsc_subscr_name(struct bsc_subscr *bsub);
diff --git a/src/osmo-bsc/bsc_stats.c b/src/osmo-bsc/bsc_stats.c
index c789aea..b48c90a 100644
--- a/src/osmo-bsc/bsc_stats.c
+++ b/src/osmo-bsc/bsc_stats.c
@@ -93,6 +93,7 @@
 	[BSC_CTR_PAGING_ATTEMPTED] =		{"paging:attempted", "Paging attempts for a subscriber"},
 	[BSC_CTR_PAGING_DETACHED] =		{"paging:detached", "Paging request send failures because no responsible BTS was found"},
 	[BSC_CTR_PAGING_RESPONDED] =		{"paging:responded", "Paging attempts with successful response"},
+	[BSC_CTR_PAGING_EXPIRED] =		{"paging:expired", "Paging Request expired because of timeout T3113"},
 	[BSC_CTR_PAGING_NO_ACTIVE_PAGING] =	{"paging:no_active_paging", "Paging response without an active paging request (arrived after paging expiration?)"},
 
 	[BSC_CTR_UNKNOWN_UNIT_ID] =		{"abis:unknown_unit_id", "Connection attempts from unknown IPA CCM Unit ID"},
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 904da62..bac691a 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -335,6 +335,48 @@
 	return bsc_paging_start(&paging);
 }
 
+static void bsc_paging_T3113_expired(void *data)
+{
+	struct bsc_paging_params *params = (struct bsc_paging_params *)data;
+
+	log_set_context(LOG_CTX_BSC_SUBSCR, params->bsub);
+	LOGP(DPAG, LOGL_DEBUG, "T3113 expired for %s, increasing bsc.paging:expired\n",
+	     bsc_subscr_name(params->bsub));
+	log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
+
+	rate_ctr_inc(rate_ctr_group_get_ctr(bsc_gsmnet->bsc_ctrs, BSC_CTR_PAGING_EXPIRED));
+}
+
+/*! Start the BSC's T3113 to increase the bsc.paging:expired if needed */
+void bsc_paging_start_timer(struct bsc_paging_params *params)
+{
+	struct gsm_bts *bts_i;
+	unsigned int timeout_s = 0;
+	struct timeval now;
+
+	osmo_gettimeofday(&now, NULL);
+
+	/* T3113 may be different per BTS (especially if set to dynamic), so
+	 * get the max of T3113 of all BTS where the subscriber was paged */
+	llist_for_each_entry(bts_i, &bsc_gsmnet->bts_list, list) {
+		struct gsm_paging_request *req;
+
+		llist_for_each_entry(req, &bts_i->paging.pending_requests, entry) {
+			struct timeval remaining;
+
+			if (req->bsub != params->bsub)
+				continue;
+
+			osmo_timer_remaining(&req->T3113, &now, &remaining);
+			timeout_s = OSMO_MAX(timeout_s, remaining.tv_sec);
+			break;
+		}
+	}
+
+	osmo_timer_setup(&params->bsub->bsc_T3113, bsc_paging_T3113_expired, params);
+	osmo_timer_schedule(&params->bsub->bsc_T3113, timeout_s, 0);
+}
+
 int bsc_paging_start(struct bsc_paging_params *params)
 {
 	rate_ctr_inc(rate_ctr_group_get_ctr(bsc_gsmnet->bsc_ctrs, BSC_CTR_PAGING_ATTEMPTED));
@@ -388,6 +430,8 @@
 		break;
 	}
 
+	bsc_paging_start_timer(params);
+
 	bsc_subscr_put(params->bsub, BSUB_USE_PAGING_START);
 	log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
 	return 0;
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 04512be..b4a3881 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -411,6 +411,8 @@
 		return 1;
 	}
 
+	osmo_timer_del(&bsub->bsc_T3113);
+
 	return 0;
 }
 
@@ -479,6 +481,9 @@
 			count++;
 		}
 	}
+
+	osmo_timer_del(&bsub->bsc_T3113);
+
 	return count;
 }
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/26384
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I9c118e7e3d61ed8c9f1951111255b196905eba4d
Gerrit-Change-Number: 26384
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211126/a6764965/attachment.htm>


More information about the gerrit-log mailing list