aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-05-21 02:38:43 +0200
committerHarald Welte <laforge@gnumonks.org>2019-05-23 19:16:11 +0000
commit590b23ce3c78d8cca5baa15f92019edf74a9323c (patch)
tree1315f0bc45d13541ab39551bb43b0c05b1bd2520 /include
parentd7be09caf8d49ac65ed626bca9de2fb738a365b6 (diff)
cbch: Add counters; queue length limits and CBCH LOAD reporting
This adds the final missing part to full CBCH support: * keep a tab on the current queue length for basic + extended CBCH * keep rate counters about the number of sent / transmitted SMSCB * send CBCH LOAD information via RSL to the BSC Change-Id: I7068c7937a60a900c40439115bb84dc3ee0d061f
Diffstat (limited to 'include')
-rw-r--r--include/osmo-bts/cbch.h8
-rw-r--r--include/osmo-bts/gsm_data_shared.h4
-rw-r--r--include/osmo-bts/rsl.h2
3 files changed, 14 insertions, 0 deletions
diff --git a/include/osmo-bts/cbch.h b/include/osmo-bts/cbch.h
index af5fd9a3..6bba5fa2 100644
--- a/include/osmo-bts/cbch.h
+++ b/include/osmo-bts/cbch.h
@@ -6,6 +6,14 @@
#include <osmo-bts/gsm_data.h>
#include <osmo-bts/bts.h>
+enum {
+ CBCH_CTR_RCVD_QUEUED,
+ CBCH_CTR_RCVD_DROPPED,
+ CBCH_CTR_SENT_SINGLE,
+ CBCH_CTR_SENT_DEFAULT,
+ CBCH_CTR_SENT_NULL,
+};
+
/* incoming SMS broadcast command from RSL */
int bts_process_smscb_cmd(struct gsm_bts *bts, struct rsl_ie_cb_cmd_type cmd_type,
bool extended_cbch, uint8_t msg_len, const uint8_t *msg);
diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h
index 860c296c..415e6bc0 100644
--- a/include/osmo-bts/gsm_data_shared.h
+++ b/include/osmo-bts/gsm_data_shared.h
@@ -542,6 +542,7 @@ struct gprs_rlc_cfg {
struct bts_smscb_state {
struct llist_head queue; /* list of struct smscb_msg */
int queue_len;
+ struct rate_ctr_group *ctrs;
struct smscb_msg *cur_msg; /* current SMS-CB */
struct smscb_msg *default_msg; /* default broadcast message; NULL if none */
};
@@ -744,6 +745,9 @@ struct gsm_bts {
/* State for SMSCB (Cell Broadcast) for BASIC and EXTENDED channel */
struct bts_smscb_state smscb_basic;
struct bts_smscb_state smscb_extended;
+ int smscb_queue_tgt_len; /* ideal/target queue length */
+ int smscb_queue_max_len; /* maximum queue length */
+ int smscb_queue_hyst; /* hysteresis for CBCH laod indications */
float min_qual_rach; /* minimum quality for RACH bursts */
float min_qual_norm; /* minimum quality for normal daata */
diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h
index 0361841d..186018eb 100644
--- a/include/osmo-bts/rsl.h
+++ b/include/osmo-bts/rsl.h
@@ -43,4 +43,6 @@ void cb_ts_disconnected(struct gsm_bts_trx_ts *ts);
void cb_ts_connected(struct gsm_bts_trx_ts *ts, int rc);
void ipacc_dyn_pdch_complete(struct gsm_bts_trx_ts *ts, int rc);
+int rsl_tx_cbch_load_indication(struct gsm_bts *bts, bool ext_cbch, bool overflow, uint8_t amount);
+
#endif // _RSL_H */