<p>daniel has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18720">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Count assignment rates per BTS as well<br><br>This adds the assignment counters for the BTS as well and changes the<br>assignment_count() macro to increase both the counters for the BSC as<br>well as the BTS.<br><br>Related: SYS#4877<br>Change-Id: I0009e51d4caf68e762138d98e2e23d49acc3cc1a<br>---<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/assignment_fsm.c<br>M src/osmo-bsc/gsm_04_08_rr.c<br>3 files changed, 30 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/20/18720/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index c4e3a46..9fed4ea 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -1427,6 +1427,13 @@</span><br><span>       BTS_CTR_TS_BORKEN_EV_PDCH_ACT_ACK_NACK,</span><br><span>      BTS_CTR_TS_BORKEN_EV_PDCH_DEACT_ACK_NACK,</span><br><span>    BTS_CTR_TS_BORKEN_EV_TEARDOWN,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_ASSIGNMENT_ATTEMPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_ASSIGNMENT_COMPLETED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_ASSIGNMENT_STOPPED,</span><br><span style="color: hsl(120, 100%, 40%);">+   BTS_CTR_ASSIGNMENT_NO_CHANNEL,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_ASSIGNMENT_TIMEOUT,</span><br><span style="color: hsl(120, 100%, 40%);">+   BTS_CTR_ASSIGNMENT_FAILED,</span><br><span style="color: hsl(120, 100%, 40%);">+    BTS_CTR_ASSIGNMENT_ERROR,</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_desc bts_ctr_description[] = {</span><br><span>@@ -1477,6 +1484,13 @@</span><br><span>  [BTS_CTR_TS_BORKEN_EV_PDCH_ACT_ACK_NACK] =   {"ts_borken:event:pdch_act_ack_nack", "PDCH_ACT_ACK/NACK received in the TS BORKEN state"},</span><br><span>         [BTS_CTR_TS_BORKEN_EV_PDCH_DEACT_ACK_NACK] = {"ts_borken:event:pdch_deact_ack_nack", "PDCH_DEACT_ACK/NACK received in the TS BORKEN state"},</span><br><span>     [BTS_CTR_TS_BORKEN_EV_TEARDOWN] =            {"ts_borken:event:teardown", "TS in a BORKEN state is shutting down (BTS disconnected?)"},</span><br><span style="color: hsl(120, 100%, 40%);">+   [BTS_CTR_ASSIGNMENT_ATTEMPTED] =             {"assignment:attempted", "Assignment attempts."},</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_ASSIGNMENT_COMPLETED] =             {"assignment:completed", "Assignment completed."},</span><br><span style="color: hsl(120, 100%, 40%);">+   [BTS_CTR_ASSIGNMENT_STOPPED] =               {"assignment:stopped", "Connection ended during Assignment."},</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_ASSIGNMENT_NO_CHANNEL] =            {"assignment:no_channel", "Failure to allocate lchan for Assignment."},</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_ASSIGNMENT_TIMEOUT] =               {"assignment:timeout", "Assignment timed out."},</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_ASSIGNMENT_FAILED] =                {"assignment:failed", "Received Assignment Failure message."},</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_ASSIGNMENT_ERROR] =                 {"assignment:error", "Assignment failed for other reason."},</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_group_desc bts_ctrg_desc = {</span><br><span>diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c</span><br><span>index 674dcbc..94dd359 100644</span><br><span>--- a/src/osmo-bsc/assignment_fsm.c</span><br><span>+++ b/src/osmo-bsc/assignment_fsm.c</span><br><span>@@ -69,16 +69,18 @@</span><br><span>          _conn->assignment.failure_cause = cause; \</span><br><span>                LOG_ASSIGNMENT(_conn, LOGL_ERROR, "Assignment failed in state %s, cause %s: " fmt "\n", \</span><br><span>                               osmo_fsm_inst_state_name(fi), gsm0808_cause_name(cause), ## args); \</span><br><span style="color: hsl(0, 100%, 40%);">-             assignment_count_result(BSC_CTR_ASSIGNMENT_ERROR); \</span><br><span style="color: hsl(120, 100%, 40%);">+          assignment_count_result(CTR_ASSIGNMENT_ERROR); \</span><br><span>             on_assignment_failure(_conn); \</span><br><span>      } while(0)</span><br><span> </span><br><span> /* Assume presence of local var 'conn' as struct gsm_subscriber_connection */</span><br><span> #define assignment_count(counter) do { \</span><br><span style="color: hsl(120, 100%, 40%);">+           struct gsm_bts *bts = conn_get_bts(conn); \</span><br><span>          LOG_ASSIGNMENT(conn, LOGL_DEBUG, "incrementing rate counter: %s %s\n", \</span><br><span style="color: hsl(0, 100%, 40%);">-                             bsc_ctr_description[counter].name, \</span><br><span style="color: hsl(0, 100%, 40%);">-                            bsc_ctr_description[counter].description); \</span><br><span style="color: hsl(0, 100%, 40%);">-             rate_ctr_inc(&conn->network->bsc_ctrs->ctr[counter]); \</span><br><span style="color: hsl(120, 100%, 40%);">+                         bsc_ctr_description[BSC_##counter].name, \</span><br><span style="color: hsl(120, 100%, 40%);">+                            bsc_ctr_description[BSC_##counter].description); \</span><br><span style="color: hsl(120, 100%, 40%);">+             rate_ctr_inc(&conn->network->bsc_ctrs->ctr[BSC_##counter]); \</span><br><span style="color: hsl(120, 100%, 40%);">+            rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_##counter]); \</span><br><span>        } while(0)</span><br><span> </span><br><span> #define assignment_count_result(counter) do { \</span><br><span>@@ -88,8 +90,8 @@</span><br><span>                } else \</span><br><span>                     LOG_ASSIGNMENT(conn, LOGL_DEBUG, \</span><br><span>                                  "result rate counter already recorded, NOT counting as: %s %s\n", \</span><br><span style="color: hsl(0, 100%, 40%);">-                                   bsc_ctr_description[counter].name, \</span><br><span style="color: hsl(0, 100%, 40%);">-                                    bsc_ctr_description[counter].description); \</span><br><span style="color: hsl(120, 100%, 40%);">+                                  bsc_ctr_description[BSC_##counter].name, \</span><br><span style="color: hsl(120, 100%, 40%);">+                                    bsc_ctr_description[BSC_##counter].description); \</span><br><span>    } while(0)</span><br><span> </span><br><span> void assignment_reset(struct gsm_subscriber_connection *conn)</span><br><span>@@ -250,7 +252,7 @@</span><br><span>        LOG_ASSIGNMENT(conn, LOGL_DEBUG, "Assignment successful\n");</span><br><span>       osmo_fsm_inst_term(conn->assignment.fi, OSMO_FSM_TERM_REGULAR, 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       assignment_count_result(BSC_CTR_ASSIGNMENT_COMPLETED);</span><br><span style="color: hsl(120, 100%, 40%);">+        assignment_count_result(CTR_ASSIGNMENT_COMPLETED);</span><br><span> }</span><br><span> </span><br><span> static void assignment_fsm_update_id(struct gsm_subscriber_connection *conn)</span><br><span>@@ -426,7 +428,7 @@</span><br><span>    OSMO_ASSERT(!conn->assignment.fi);</span><br><span>        OSMO_ASSERT(!conn->assignment.new_lchan);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        assignment_count(BSC_CTR_ASSIGNMENT_ATTEMPTED);</span><br><span style="color: hsl(120, 100%, 40%);">+       assignment_count(CTR_ASSIGNMENT_ATTEMPTED);</span><br><span> </span><br><span>      fi = osmo_fsm_inst_alloc_child(&assignment_fsm, conn->fi, GSCON_EV_ASSIGNMENT_END);</span><br><span>   OSMO_ASSERT(fi);</span><br><span>@@ -456,7 +458,7 @@</span><br><span>               /* If something went wrong during send_assignment_complete(), the fi will be gone from</span><br><span>                * error handling in there. */</span><br><span>               if (conn->assignment.fi) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   assignment_count_result(BSC_CTR_ASSIGNMENT_COMPLETED);</span><br><span style="color: hsl(120, 100%, 40%);">+                        assignment_count_result(CTR_ASSIGNMENT_COMPLETED);</span><br><span>                   osmo_fsm_inst_term(conn->assignment.fi, OSMO_FSM_TERM_REGULAR, 0);</span><br><span>                }</span><br><span>            return;</span><br><span>@@ -474,7 +476,7 @@</span><br><span>        /* Check whether the lchan allocation was successful or not and tear</span><br><span>          * down the assignment in case of failure. */</span><br><span>        if (!conn->assignment.new_lchan) {</span><br><span style="color: hsl(0, 100%, 40%);">-           assignment_count_result(BSC_CTR_ASSIGNMENT_NO_CHANNEL);</span><br><span style="color: hsl(120, 100%, 40%);">+               assignment_count_result(CTR_ASSIGNMENT_NO_CHANNEL);</span><br><span>          assignment_fail(GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE,</span><br><span>                           "BSSMAP Assignment Command:"</span><br><span>                               " No lchan available for: pref=%s:%s / alt1=%s:%s / alt2=%s:%s\n",</span><br><span>@@ -565,7 +567,7 @@</span><br><span>           return;</span><br><span> </span><br><span>  case ASSIGNMENT_EV_RR_ASSIGNMENT_FAIL:</span><br><span style="color: hsl(0, 100%, 40%);">-          assignment_count_result(BSC_CTR_ASSIGNMENT_FAILED);</span><br><span style="color: hsl(120, 100%, 40%);">+           assignment_count_result(CTR_ASSIGNMENT_FAILED);</span><br><span>              assignment_fail(get_cause(data), "Rx RR Assignment Failure");</span><br><span>              return;</span><br><span> </span><br><span>@@ -733,7 +735,7 @@</span><br><span>    switch (event) {</span><br><span> </span><br><span>         case ASSIGNMENT_EV_CONN_RELEASING:</span><br><span style="color: hsl(0, 100%, 40%);">-              assignment_count_result(BSC_CTR_ASSIGNMENT_STOPPED);</span><br><span style="color: hsl(120, 100%, 40%);">+          assignment_count_result(CTR_ASSIGNMENT_STOPPED);</span><br><span>             osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, 0);</span><br><span>            return;</span><br><span> </span><br><span>@@ -753,7 +755,7 @@</span><br><span> int assignment_fsm_timer_cb(struct osmo_fsm_inst *fi)</span><br><span> {</span><br><span>      struct gsm_subscriber_connection *conn = assignment_fi_conn(fi);</span><br><span style="color: hsl(0, 100%, 40%);">-        assignment_count_result(BSC_CTR_ASSIGNMENT_TIMEOUT);</span><br><span style="color: hsl(120, 100%, 40%);">+  assignment_count_result(CTR_ASSIGNMENT_TIMEOUT);</span><br><span>     assignment_fail(GSM0808_CAUSE_EQUIPMENT_FAILURE, "Timeout");</span><br><span>       return 0;</span><br><span> }</span><br><span>diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>index 4e5a307..d429b05 100644</span><br><span>--- a/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>+++ b/src/osmo-bsc/gsm_04_08_rr.c</span><br><span>@@ -554,6 +554,7 @@</span><br><span> /* Chapter 9.1.2: Assignment Command */</span><br><span> int gsm48_send_rr_ass_cmd(struct gsm_lchan *dest_lchan, struct gsm_lchan *lchan, uint8_t power_command)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_bts *bts = dest_lchan->ts->trx->bts;</span><br><span>     struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 ASS CMD");</span><br><span>     struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));</span><br><span>      struct gsm48_ass_cmd *ass =</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18720">change 18720</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-bsc/+/18720"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0009e51d4caf68e762138d98e2e23d49acc3cc1a </div>
<div style="display:none"> Gerrit-Change-Number: 18720 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>