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/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/25270 ) Change subject: osmo-bts-trx: add rate counter for Uplink block decoding errors ...................................................................... osmo-bts-trx: add rate counter for Uplink block decoding errors During the channel activation, allocate a counter group for each logical channel (struct l1sched_chan_state). Deallocate it on deactivation. The rate counter API requires a unique group index, which unfortunately cannot be determined for dedicated channels. As a quick hack, use monolitically increasing numbers for that. Change-Id: I7aea0529771ad73d5d6bcaf0865f9b0d4ecace6b Related: OS#4771 --- M include/osmo-bts/scheduler.h M src/common/scheduler.c M src/osmo-bts-trx/sched_lchan_pdtch.c M src/osmo-bts-trx/sched_lchan_tchf.c M src/osmo-bts-trx/sched_lchan_tchh.c M src/osmo-bts-trx/sched_lchan_xcch.c 6 files changed, 42 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/70/25270/1 diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h index 80a260f..b526db0 100644 --- a/include/osmo-bts/scheduler.h +++ b/include/osmo-bts/scheduler.h @@ -148,6 +148,14 @@ /* handover */ bool ho_rach_detect; /* if rach detection is on */ + + /* Rate counters (see L1SCHED_LCHAN_CTR_*) */ + struct rate_ctr_group *ctrs; +}; + +/* Rate counters for struct l1sched_chan_state */ +enum { + L1SCHED_LCHAN_CTR_UL_BAD_BLOCK, }; struct l1sched_ts { diff --git a/src/common/scheduler.c b/src/common/scheduler.c index 6e1e4fb..81cebf4 100644 --- a/src/common/scheduler.c +++ b/src/common/scheduler.c @@ -597,6 +597,20 @@ l1sched_ts_ctr_desc }; +static const struct rate_ctr_desc l1sched_lchan_ctr_desc[] = { + [L1SCHED_LCHAN_CTR_UL_BAD_BLOCK] = { + "l1sched_lchan:ul_bad_block", + "Uplink blocks which could not be decoded (Viterbi errors)" + }, +}; +static const struct rate_ctr_group_desc l1sched_lchan_ctrg_desc = { + "l1sched_lchan", + "L1 scheduler logical channel", + OSMO_STATS_CLASS_GLOBAL, + ARRAY_SIZE(l1sched_lchan_ctr_desc), + l1sched_lchan_ctr_desc, +}; + /* * init / exit */ @@ -677,6 +691,7 @@ talloc_free(chan_state->ul_bursts); chan_state->ul_bursts = NULL; } + rate_ctr_group_free(chan_state->ctrs); } /* clear lchan channel states */ for (i = 0; i < ARRAY_SIZE(ts->lchan); i++) @@ -1065,6 +1080,8 @@ struct l1sched_ts *l1ts = lchan->ts->priv; uint8_t tn = L1SAP_CHAN2TS(chan_nr); uint8_t ss = l1sap_chan2ss(chan_nr); + static unsigned int ctrg_idx = 0; + char ctrg_name[256]; bool found = false; int i; @@ -1104,11 +1121,22 @@ /* Bind to generic 'struct gsm_lchan' */ chan_state->lchan = lchan; + + /* Allocate per-l1cs rate counters with unique index */ + chan_state->ctrs = rate_ctr_group_alloc(l1ts, + &l1sched_lchan_ctrg_desc, + ctrg_idx++); + snprintf(ctrg_name, sizeof(ctrg_name), "%s %s", + lchan->name, trx_chan_desc[i].name); + rate_ctr_group_set_name(chan_state->ctrs, ctrg_name); } else { chan_state->ho_rach_detect = 0; /* Remove pending Tx prims belonging to this lchan */ trx_sched_queue_filter(&l1ts->dl_prims, chan_nr, link_id); + + /* De-allocate per-l1cs rate counters */ + rate_ctr_group_free(chan_state->ctrs); } chan_state->active = active; diff --git a/src/osmo-bts-trx/sched_lchan_pdtch.c b/src/osmo-bts-trx/sched_lchan_pdtch.c index 335ba6f..4bfccf3 100644 --- a/src/osmo-bts-trx/sched_lchan_pdtch.c +++ b/src/osmo-bts-trx/sched_lchan_pdtch.c @@ -130,6 +130,7 @@ } else { LOGL1SB(DL1P, LOGL_DEBUG, l1ts, bi, "Received bad PDTCH (%u/%u)\n", bi->fn % l1ts->mf_period, l1ts->mf_period); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); rc = 0; presence_info = PRES_INFO_INVALID; } diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c index 689925f..ead68b7 100644 --- a/src/osmo-bts-trx/sched_lchan_tchf.c +++ b/src/osmo-bts-trx/sched_lchan_tchf.c @@ -212,11 +212,13 @@ if (rc < 0) { LOGL1SB(DL1P, LOGL_NOTICE, l1ts, bi, "Received bad data (%u/%u)\n", bi->fn % l1ts->mf_period, l1ts->mf_period); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); bfi_flag = true; } else if (rc < 4) { LOGL1SB(DL1P, LOGL_NOTICE, l1ts, bi, "Received bad data (%u/%u) with invalid codec mode %d\n", bi->fn % l1ts->mf_period, l1ts->mf_period, rc); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); bfi_flag = true; } diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c index 4f03bd1..aec38c3 100644 --- a/src/osmo-bts-trx/sched_lchan_tchh.c +++ b/src/osmo-bts-trx/sched_lchan_tchh.c @@ -240,11 +240,13 @@ if (rc < 0) { LOGL1SB(DL1P, LOGL_NOTICE, l1ts, bi, "Received bad data (%u/%u)\n", bi->fn % l1ts->mf_period, l1ts->mf_period); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); bfi_flag = true; } else if (rc < 4) { LOGL1SB(DL1P, LOGL_NOTICE, l1ts, bi, "Received bad data (%u/%u) with invalid codec mode %d\n", bi->fn % l1ts->mf_period, l1ts->mf_period, rc); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); bfi_flag = true; } diff --git a/src/osmo-bts-trx/sched_lchan_xcch.c b/src/osmo-bts-trx/sched_lchan_xcch.c index 4bfc101..f994c1d 100644 --- a/src/osmo-bts-trx/sched_lchan_xcch.c +++ b/src/osmo-bts-trx/sched_lchan_xcch.c @@ -131,6 +131,7 @@ if (rc) { LOGL1SB(DL1P, LOGL_NOTICE, l1ts, bi, "Received bad data (%u/%u)\n", bi->fn % l1ts->mf_period, l1ts->mf_period); + rate_ctr_inc2(chan_state->ctrs, L1SCHED_LCHAN_CTR_UL_BAD_BLOCK); l2_len = 0; /* When SACCH Repetition is active, we may try to decode the -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/25270 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I7aea0529771ad73d5d6bcaf0865f9b0d4ecace6b Gerrit-Change-Number: 25270 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210828/2facb071/attachment.htm>