Change in osmo-bts[master]: cbch: Keep SMSCB queue length counter

Harald Welte gerrit-no-reply at lists.osmocom.org
Tue May 21 18:15:17 UTC 2019


Harald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/14112 )

Change subject: cbch: Keep SMSCB queue length counter
......................................................................

cbch: Keep SMSCB queue length counter

This avoids having to iterate the list to count the number of elements.

Change-Id: I72c47affeb87c9b898bc2290dc7ed113945f1805
---
M include/osmo-bts/gsm_data_shared.h
M src/common/cbch.c
M src/common/vty.c
3 files changed, 6 insertions(+), 14 deletions(-)

Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved



diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h
index 9378730..860c296 100644
--- a/include/osmo-bts/gsm_data_shared.h
+++ b/include/osmo-bts/gsm_data_shared.h
@@ -541,6 +541,7 @@
 
 struct bts_smscb_state {
 	struct llist_head queue; /* list of struct smscb_msg */
+	int queue_len;
 	struct smscb_msg *cur_msg; /* current SMS-CB */
 	struct smscb_msg *default_msg; /* default broadcast message; NULL if none */
 };
diff --git a/src/common/cbch.c b/src/common/cbch.c
index 6092e46..2107f11 100644
--- a/src/common/cbch.c
+++ b/src/common/cbch.c
@@ -183,6 +183,7 @@
 	case RSL_CB_CMD_TYPE_NULL:
 		/* def_bcast is ignored as per Section 9.3.41 of 3GPP TS 48.058 */
 		llist_add_tail(&scm->list, &bts_ss->queue);
+		bts_ss->queue_len++;
 		/* FIXME: limit queue size and optionally send CBCH LOAD Information (overflow) via RSL */
 		break;
 	case RSL_CB_CMD_TYPE_DEFAULT:
@@ -215,6 +216,7 @@
 	msg = llist_first_entry_or_null(&bts_ss->queue, struct smscb_msg, list);
 	if (msg) {
 		llist_del(&msg->list);
+		bts_ss->queue_len--;
 		DEBUGP(DLSMS, "%s: Dequeued msg\n", __func__);
 		return msg;
 	}
diff --git a/src/common/vty.c b/src/common/vty.c
index 53a8674..fab5516 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -803,17 +803,6 @@
 		abis_nm_avail_name(nms->availability), VTY_NEWLINE);
 }
 
-static unsigned int llist_length(struct llist_head *list)
-{
-	unsigned int len = 0;
-	struct llist_head *pos;
-
-	llist_for_each(pos, list)
-		len++;
-
-	return len;
-}
-
 static void bts_dump_vty_features(struct vty *vty, struct gsm_bts *bts)
 {
 	unsigned int i;
@@ -865,10 +854,10 @@
 		bts->agch_queue.rejected_msgs, bts->agch_queue.agch_msgs,
 		bts->agch_queue.pch_msgs,
 		VTY_NEWLINE);
-	vty_out(vty, "  CBCH backlog queue length (BASIC): %u%s",
-		llist_length(&bts->smscb_basic.queue), VTY_NEWLINE);
+	vty_out(vty, "  CBCH backlog queue length (BASIC): %d%s",
+		bts->smscb_basic.queue_len, VTY_NEWLINE);
 	vty_out(vty, "  CBCH backlog queue length (EXTENDED): %u%s",
-		llist_length(&bts->smscb_extended.queue), VTY_NEWLINE);
+		bts->smscb_extended.queue_len, VTY_NEWLINE);
 	vty_out(vty, "  Paging: queue length %d, buffer space %d%s",
 		paging_queue_length(bts->paging_state), paging_buffer_space(bts->paging_state),
 		VTY_NEWLINE);

-- 
To view, visit https://gerrit.osmocom.org/14112
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I72c47affeb87c9b898bc2290dc7ed113945f1805
Gerrit-Change-Number: 14112
Gerrit-PatchSet: 1
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190521/f75074ed/attachment.html>


More information about the gerrit-log mailing list