diff options
-rw-r--r-- | include/osmo-bts/gsm_data_shared.h | 1 | ||||
-rw-r--r-- | src/common/cbch.c | 2 | ||||
-rw-r--r-- | src/common/vty.c | 17 |
3 files changed, 6 insertions, 14 deletions
diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index 93787304..860c296c 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -541,6 +541,7 @@ struct gprs_rlc_cfg { 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 6092e464..2107f115 100644 --- a/src/common/cbch.c +++ b/src/common/cbch.c @@ -183,6 +183,7 @@ int bts_process_smscb_cmd(struct gsm_bts *bts, struct rsl_ie_cb_cmd_type cmd_typ 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 @@ static struct smscb_msg *select_next_smscb(struct gsm_bts *bts, uint8_t tb) 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 53a86743..fab55161 100644 --- a/src/common/vty.c +++ b/src/common/vty.c @@ -803,17 +803,6 @@ static void net_dump_nmstate(struct vty *vty, struct gsm_nm_state *nms) 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 @@ static void bts_dump_vty(struct vty *vty, struct gsm_bts *bts) 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); |