<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>