<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/14117">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cbch: Improve logging verbosity: Always indicate BASIC/EXTD CBCH<br><br>Change-Id: I6c8f9fc6215b616371e46c1f4ca4e44b8c7ac096<br>---<br>M src/common/cbch.c<br>1 file changed, 35 insertions(+), 19 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/17/14117/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/common/cbch.c b/src/common/cbch.c</span><br><span>index 6b65679..7ed11c2 100644</span><br><span>--- a/src/common/cbch.c</span><br><span>+++ b/src/common/cbch.c</span><br><span>@@ -71,6 +71,14 @@</span><br><span> OSMO_ASSERT(0);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static const char *tb_to_chan_str(uint8_t tb)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (tb < 4)</span><br><span style="color: hsl(120, 100%, 40%);">+ return "CBCH-BASIC";</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ return "CBCH-EXTENDED";</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* construct a SMSCB NULL block in the user-provided output buffer at 'out' */</span><br><span> static int get_smscb_null_block(uint8_t *out)</span><br><span> {</span><br><span>@@ -86,24 +94,26 @@</span><br><span> }</span><br><span> </span><br><span> /* get the next block of the current CB message */</span><br><span style="color: hsl(0, 100%, 40%);">-static int get_smscb_block(struct bts_smscb_state *bts_ss, uint8_t *out, uint8_t block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+static int get_smscb_block(struct bts_smscb_state *bts_ss, uint8_t *out, uint8_t tb,</span><br><span> const struct gsm_time *g_time)</span><br><span> {</span><br><span> int to_copy;</span><br><span> struct gsm412_block_type *block_type;</span><br><span> struct smscb_msg *msg = bts_ss->cur_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t block_nr = tb % 4;</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *chan_name = tb_to_chan_str(tb);</span><br><span> </span><br><span> if (!msg) {</span><br><span> /* No message: Send NULL block */</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGPGT(DLSMS, g_time, "No cur_msg; requesting NULL block\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGPGT(DLSMS, g_time, "%s: No cur_msg; requesting NULL block\n", chan_name);</span><br><span> return get_smscb_null_block(out);</span><br><span> }</span><br><span> OSMO_ASSERT(block_nr < 4);</span><br><span> </span><br><span> if (block_nr >= msg->num_segs) {</span><br><span> /* Higher block number than this message has blocks: Send NULL block */</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGPGT(DLSMS, g_time, "cur_msg has only %u blocks; requesting NULL block\n",</span><br><span style="color: hsl(0, 100%, 40%);">- msg->num_segs);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGPGT(DLSMS, g_time, "%s: cur_msg has only %u blocks; requesting NULL block\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, msg->num_segs);</span><br><span> return get_smscb_null_block(out);</span><br><span> }</span><br><span> </span><br><span>@@ -136,12 +146,14 @@</span><br><span> </span><br><span> if (block_nr == 4) {</span><br><span> if (msg != bts_ss->default_msg) {</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGPGT(DLSMS, g_time, "deleting fully-transmitted message %p\n", msg);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGPGT(DLSMS, g_time, "%s: deleting fully-transmitted message %p\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, msg);</span><br><span> /* delete any fully-transmitted normal message (or superseded default) */</span><br><span> talloc_free(bts_ss->cur_msg);</span><br><span> bts_ss->cur_msg = NULL;</span><br><span> } else {</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGPGT(DLSMS, g_time, "keeping fully-transmitted default message %p\n", msg);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGPGT(DLSMS, g_time, "%s: keeping fully-transmitted default message %p\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, msg);</span><br><span> }</span><br><span> }</span><br><span> </span><br><span>@@ -170,16 +182,19 @@</span><br><span> {</span><br><span> struct smscb_msg *scm;</span><br><span> struct bts_smscb_state *bts_ss;</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *chan_name;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (extended_cbch)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (extended_cbch) {</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name = tb_to_chan_str(4);</span><br><span> bts_ss = &bts->smscb_extended;</span><br><span style="color: hsl(0, 100%, 40%);">- else</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name = tb_to_chan_str(0);</span><br><span> bts_ss = &bts->smscb_basic;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> if (msg_len > sizeof(scm->msg)) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLSMS, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">- "Cannot process SMSCB of %u bytes (max %zu)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- msg_len, sizeof(scm->msg));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DLSMS, LOGL_ERROR, "%s: Cannot process SMSCB of %u bytes (max %zu)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, msg_len, sizeof(scm->msg));</span><br><span> return -EINVAL;</span><br><span> }</span><br><span> </span><br><span>@@ -197,8 +212,7 @@</span><br><span> memcpy(scm->msg, msg, msg_len);</span><br><span> </span><br><span> LOGP(DLSMS, LOGL_INFO, "RSL SMSCB COMMAND (chan=%s, type=%s, num_blocks=%u)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- extended_cbch ? "EXTENDED" : "BASIC",</span><br><span style="color: hsl(0, 100%, 40%);">- get_value_string(rsl_cb_cmd_names, cmd_type.command), scm->num_segs);</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, get_value_string(rsl_cb_cmd_names, cmd_type.command), scm->num_segs);</span><br><span> </span><br><span> switch (cmd_type.command) {</span><br><span> case RSL_CB_CMD_TYPE_NORMAL:</span><br><span>@@ -207,6 +221,8 @@</span><br><span> /* def_bcast is ignored as per Section 9.3.41 of 3GPP TS 48.058 */</span><br><span> /* limit queue size and optionally send CBCH LOAD Information (overflow) via RSL */</span><br><span> if (bts_ss->queue_len >= bts->smscb_queue_max_len) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DLSMS, LOGL_NOTICE, "RSL SMSCB COMMAND (chan=%s, type=%s): OVERFLOW\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ chan_name, get_value_string(rsl_cb_cmd_names, cmd_type.command));</span><br><span> rate_ctr_inc2(bts_ss->ctrs, CBCH_CTR_RCVD_DROPPED);</span><br><span> talloc_free(scm);</span><br><span> break;</span><br><span>@@ -241,6 +257,7 @@</span><br><span> static struct smscb_msg *select_next_smscb(struct gsm_bts *bts, uint8_t tb)</span><br><span> {</span><br><span> struct bts_smscb_state *bts_ss = bts_smscb_state(bts, tb);</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *chan_name = tb_to_chan_str(tb);</span><br><span> struct smscb_msg *msg;</span><br><span> </span><br><span> msg = llist_first_entry_or_null(&bts_ss->queue, struct smscb_msg, list);</span><br><span>@@ -248,7 +265,7 @@</span><br><span> llist_del(&msg->list);</span><br><span> bts_ss->queue_len--;</span><br><span> check_and_send_cbch_load(bts, bts_ss);</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGP(DLSMS, "%s: Dequeued msg\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGP(DLSMS, "%s: %s: Dequeued msg\n", __func__, chan_name);</span><br><span> rate_ctr_inc2(bts_ss->ctrs, CBCH_CTR_SENT_SINGLE);</span><br><span> return msg;</span><br><span> }</span><br><span>@@ -259,12 +276,12 @@</span><br><span> /* choose the default message, if any */</span><br><span> msg = bts_ss->default_msg;</span><br><span> if (msg) {</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGP(DLSMS, "%s: Using default msg\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGP(DLSMS, "%s: %s: Using default msg\n", __func__, chan_name);</span><br><span> rate_ctr_inc2(bts_ss->ctrs, CBCH_CTR_SENT_DEFAULT);</span><br><span> return msg;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGP(DLSMS, "%s: No queued msg nor default\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGP(DLSMS, "%s: %s: No queued msg nor default\n", __func__, chan_name);</span><br><span> rate_ctr_inc2(bts_ss->ctrs, CBCH_CTR_SENT_NULL);</span><br><span> return NULL;</span><br><span> }</span><br><span>@@ -277,7 +294,6 @@</span><br><span> struct bts_smscb_state *bts_ss;</span><br><span> /* According to 05.02 Section 6.5.4 */</span><br><span> uint32_t tb = (fn / 51) % 8;</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t block_nr = tb % 4;</span><br><span> int rc = 0;</span><br><span> </span><br><span> bts_ss = bts_smscb_state(bts, tb);</span><br><span>@@ -296,11 +312,11 @@</span><br><span> case 4:</span><br><span> /* select a new SMSCB message */</span><br><span> bts_ss->cur_msg = select_next_smscb(bts, tb);</span><br><span style="color: hsl(0, 100%, 40%);">- rc = get_smscb_block(bts_ss, outbuf, block_nr, g_time);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = get_smscb_block(bts_ss, outbuf, tb, g_time);</span><br><span> break;</span><br><span> case 1: case 2: case 3:</span><br><span> case 5: case 6: case 7:</span><br><span style="color: hsl(0, 100%, 40%);">- rc = get_smscb_block(bts_ss, outbuf, block_nr, g_time);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = get_smscb_block(bts_ss, outbuf, tb, g_time);</span><br><span> break;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14117">change 14117</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/14117"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6c8f9fc6215b616371e46c1f4ca4e44b8c7ac096 </div>
<div style="display:none"> Gerrit-Change-Number: 14117 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>