<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22102">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ms: Replace struct var with rate_ctr<br><br>Let's use usual osmocom rate_ctr instead of having one variable +<br>setter/getter functions, so we can easily add new counters and also<br>because it makes code more clear (no need to look at what the "update"<br>function is doing).<br><br>Using rate counter also provides info about how recently the MS has been<br>interacting with the network.<br><br>Related: OS#4907<br>Change-Id: I744507fde4291955c1dbbb9739b18a12a80145b1<br>---<br>M src/gprs_ms.c<br>M src/gprs_ms.h<br>M src/gprs_rlcmac_sched.cpp<br>M src/pcu_vty_functions.cpp<br>4 files changed, 33 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/02/22102/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs_ms.c b/src/gprs_ms.c</span><br><span>index 94f69cd..9281eff 100644</span><br><span>--- a/src/gprs_ms.c</span><br><span>+++ b/src/gprs_ms.c</span><br><span>@@ -35,11 +35,25 @@</span><br><span> #include <osmocom/gsm/protocol/gsm_04_08.h></span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span> #include <osmocom/core/logging.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/stats.h></span><br><span> #include "coding_scheme.h"</span><br><span> </span><br><span> #define GPRS_CODEL_SLOW_INTERVAL_MS 4000</span><br><span> </span><br><span> extern void *tall_pcu_ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+static unsigned int next_ms_ctr_group_id;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct rate_ctr_desc ms_ctr_description[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+        [MS_CTR_DL_CTRL_MSG_SCHED] = { "ms:dl_ctrl_msg_sched", "Amount of DL CTRL messages scheduled" },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const struct rate_ctr_group_desc ms_ctrg_desc = {</span><br><span style="color: hsl(120, 100%, 40%);">+ "pcu:ms",</span><br><span style="color: hsl(120, 100%, 40%);">+   "MS Statistics",</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMO_STATS_CLASS_SUBSCRIBER,</span><br><span style="color: hsl(120, 100%, 40%);">+  ARRAY_SIZE(ms_ctr_description),</span><br><span style="color: hsl(120, 100%, 40%);">+       ms_ctr_description,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> </span><br><span> static int64_t now_msec()</span><br><span> {</span><br><span>@@ -118,7 +132,15 @@</span><br><span>         }</span><br><span>    ms->last_cs_not_low = now_msec();</span><br><span>         ms->app_info_pending = false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    ms->ctrs = rate_ctr_group_alloc(ms, &ms_ctrg_desc, next_ms_ctr_group_id++);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!ms->ctrs)</span><br><span style="color: hsl(120, 100%, 40%);">+             goto free_ret;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     return ms;</span><br><span style="color: hsl(120, 100%, 40%);">+free_ret:</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(ms);</span><br><span style="color: hsl(120, 100%, 40%);">+      return NULL;</span><br><span> }</span><br><span> </span><br><span> static int ms_talloc_destructor(struct GprsMs *ms)</span><br><span>@@ -148,6 +170,9 @@</span><br><span>    }</span><br><span> </span><br><span>        llc_queue_clear(&ms->llc_queue, ms->bts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ms->ctrs)</span><br><span style="color: hsl(120, 100%, 40%);">+              rate_ctr_group_free(ms->ctrs);</span><br><span>    return 0;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/gprs_ms.h b/src/gprs_ms.h</span><br><span>index ade3f3b..6391f72 100644</span><br><span>--- a/src/gprs_ms.h</span><br><span>+++ b/src/gprs_ms.h</span><br><span>@@ -34,6 +34,7 @@</span><br><span> </span><br><span> #include <osmocom/core/timer.h></span><br><span> #include <osmocom/core/linuxlist.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/rate_ctr.h></span><br><span> </span><br><span> #include <osmocom/gsm/protocol/gsm_23_003.h></span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span>@@ -44,6 +45,10 @@</span><br><span> #include <stddef.h></span><br><span> #include <inttypes.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum ms_counter_id {</span><br><span style="color: hsl(120, 100%, 40%);">+      MS_CTR_DL_CTRL_MSG_SCHED,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct BTS;</span><br><span> struct gprs_rlcmac_trx;</span><br><span> struct GprsMs;</span><br><span>@@ -94,7 +99,7 @@</span><br><span>      struct gprs_codel *codel_state;</span><br><span>      enum mcs_kind mode;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- unsigned dl_ctrl_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct rate_ctr_group *ctrs;</span><br><span> };</span><br><span> </span><br><span> struct GprsMs *ms_alloc(struct BTS *bts, uint32_t tlli);</span><br><span>@@ -215,16 +220,6 @@</span><br><span>    return ms->nack_rate_dl;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static inline unsigned ms_dl_ctrl_msg(const struct GprsMs *ms)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     return ms->dl_ctrl_msg;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static inline void ms_update_dl_ctrl_msg(struct GprsMs *ms)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- ms->dl_ctrl_msg++;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static inline uint8_t ms_reserved_dl_slots(const struct GprsMs *ms)</span><br><span> {</span><br><span>   return ms->reserved_dl_slots;</span><br><span>diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp</span><br><span>index d7958c4..924a4de 100644</span><br><span>--- a/src/gprs_rlcmac_sched.cpp</span><br><span>+++ b/src/gprs_rlcmac_sched.cpp</span><br><span>@@ -233,8 +233,7 @@</span><br><span>              LOGP(DRLCMACSCHED, LOGL_DEBUG, "Scheduling control "</span><br><span>                       "message at RTS for %s (TRX=%d, TS=%d)\n",</span><br><span>                         tbf_name(tbf), trx, ts);</span><br><span style="color: hsl(0, 100%, 40%);">-                /* Updates the dl ctrl msg counter for ms */</span><br><span style="color: hsl(0, 100%, 40%);">-            ms_update_dl_ctrl_msg(tbf->ms());</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_inc(&tbf->ms()->ctrs->ctr[MS_CTR_DL_CTRL_MSG_SCHED]);</span><br><span>          return msg;</span><br><span>  }</span><br><span> </span><br><span>diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp</span><br><span>index 6100b13..92be77b 100644</span><br><span>--- a/src/pcu_vty_functions.cpp</span><br><span>+++ b/src/pcu_vty_functions.cpp</span><br><span>@@ -175,8 +175,6 @@</span><br><span>                         vty_out(vty, "  MS I level (slot %d):    %d dB%s",</span><br><span>                                 i, ms->l1_meas.ts[i].ms_i_level, VTY_NEWLINE);</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       vty_out(vty, "  RLC/MAC DL Control Msg: %d%s", ms_dl_ctrl_msg(ms),</span><br><span style="color: hsl(0, 100%, 40%);">-            VTY_NEWLINE);</span><br><span>        if (ms_ul_tbf(ms))</span><br><span>           vty_out(vty, "  Uplink TBF:             TFI=%d, state=%s%s",</span><br><span>                       ms_ul_tbf(ms)->tfi(),</span><br><span>@@ -201,6 +199,7 @@</span><br><span>                       tbf->state_name(),</span><br><span>                        VTY_NEWLINE);</span><br><span>        }</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out_rate_ctr_group(vty, "  ", ms->ctrs);</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22102">change 22102</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-pcu/+/22102"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I744507fde4291955c1dbbb9739b18a12a80145b1 </div>
<div style="display:none"> Gerrit-Change-Number: 22102 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>