<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/22888">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">l1sap: add logging for ACCH repetition<br><br>At the moment osmo-bts is not looging much ACCH repetition related<br>information. This makes testing ACCH repetition difficult. Lets add some<br>debug output that informs the user when ACCH repetition is turned on or<br>off. Also log when a repetition candidate is stored or when a channel is<br>repeated.<br><br>Change-Id: I59d11fd03be3d29fb8a4279d9945b03006764c0e<br>Related: SYS#5114<br>---<br>M src/common/l1sap.c<br>1 file changed, 44 insertions(+), 5 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/88/22888/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/common/l1sap.c b/src/common/l1sap.c</span><br><span>index 025982a..05c4f08 100644</span><br><span>--- a/src/common/l1sap.c</span><br><span>+++ b/src/common/l1sap.c</span><br><span>@@ -935,10 +935,12 @@</span><br><span>          /* Re-use stored FACCH message buffer from SLOT #0 for repetition. */</span><br><span>                msg = lchan->tch.rep_facch[0].msg;</span><br><span>                lchan->tch.rep_facch[0].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: repeating FACCH channel\n");</span><br><span>      } else if (lchan->tch.rep_facch[1].msg && GSM_TDMA_FN_SUB(fn, lchan->tch.rep_facch[1].fn) >= 8) {</span><br><span>           /* Re-use stored FACCH message buffer from SLOT #1 for repetition. */</span><br><span>                msg = lchan->tch.rep_facch[1].msg;</span><br><span>                lchan->tch.rep_facch[1].msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: repeating FACCH channel\n");</span><br><span>      } else {</span><br><span>             /* Fetch new FACCH from queue ... */</span><br><span>                 if (lapdm_phsap_dequeue_prim(le, &pp) < 0)</span><br><span>@@ -957,9 +959,11 @@</span><br><span>             if (lchan->tch.rep_facch[0].msg == NULL) {</span><br><span>                        lchan->tch.rep_facch[0].msg = msgb_copy(msg, "rep_facch_0");</span><br><span>                    lchan->tch.rep_facch[0].fn = fn;</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: stored repetition candidate\n");</span><br><span>          } else if (lchan->tch.rep_facch[1].msg == NULL) {</span><br><span>                         lchan->tch.rep_facch[1].msg = msgb_copy(msg, "rep_facch_1");</span><br><span>                    lchan->tch.rep_facch[1].fn = fn;</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: stored repetition candidate\n");</span><br><span>          } else {</span><br><span>                     /* By definition 3GPP TS 05.02 does not allow more than two (for TCH/H only one) FACCH blocks</span><br><span>                         * to be transmitted simultaniously. */</span><br><span>@@ -987,12 +991,19 @@</span><br><span>      if (!lchan->repeated_acch_capability.dl_facch_cmd</span><br><span>             && !lchan->repeated_acch_capability.dl_facch_all) {</span><br><span>           lchan->repeated_dl_facch_active = false;</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: disabled by BSC\n");</span><br><span>              return;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (lchan->repeated_dl_facch_active)</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: active\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        else</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: inactive\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* Threshold disabled (always on) */</span><br><span>         if (lchan->repeated_acch_capability.rxqual == 0) {</span><br><span>                lchan->repeated_dl_facch_active = true;</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: no threshold => DL-FACCH repetition active\n");</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span>@@ -1000,6 +1011,7 @@</span><br><span>         * (repeated SACCH requested) then it makes sense to enable</span><br><span>   * FACCH repetition too. */</span><br><span>  if ((lchan->meas.l1_info[0] >> 1) & 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: MS requests DL-SACCH repetition => DL-FACCH repetition also active\n");</span><br><span>                lchan->repeated_dl_facch_active = true;</span><br><span>           return;</span><br><span>      }</span><br><span>@@ -1029,10 +1041,15 @@</span><br><span>  else</span><br><span>                 rxqual = meas_res->rxqual_full;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (rxqual >= upper)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rxqual >= upper) {</span><br><span>            lchan->repeated_dl_facch_active = true;</span><br><span style="color: hsl(0, 100%, 40%);">-      else if (rxqual <= lower)</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: rxqual (%u) >= upper rxqual threshold (%u) => DL-FACCH repetition active\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                   rxqual, upper);</span><br><span style="color: hsl(120, 100%, 40%);">+     } else if (rxqual <= lower) {</span><br><span>             lchan->repeated_dl_facch_active = false;</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-FACCH repetition: rxqual (%u) <= lower rxqual threshold (%u) => DL-FACCH repetition inactive\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                         rxqual, lower);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span> }</span><br><span> </span><br><span>@@ -1043,6 +1060,11 @@</span><br><span>      struct msgb *msg;</span><br><span>    uint8_t sapi;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     if ((lchan->meas.l1_info[0] >> 1) & 1)</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-SACCH repetition: MS requests DL-SACCH repetition (SRR=1)\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       else</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-SACCH repetition: MS does not request DL-SACCH repetition (SRR=0)\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    /* Note: When the MS disables SACCH repetition, we still must collect</span><br><span>         * possible candidates in order to have one ready in case the MS enables</span><br><span>      * SACCH repetition. */</span><br><span>@@ -1058,6 +1080,7 @@</span><br><span>                      lchan->rep_sacch = NULL;</span><br><span>                  p[0] = lchan->rep_sacch_l1_hdr[0];</span><br><span>                        p[1] = lchan->rep_sacch_l1_hdr[1];</span><br><span style="color: hsl(120, 100%, 40%);">+                 LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-SACCH repetition: repeating SACCH channel\n");</span><br><span>                      return msg;</span><br><span>          }</span><br><span>    }</span><br><span>@@ -1065,6 +1088,7 @@</span><br><span>    /* Fetch new repetition candidate from queue */</span><br><span>      if (lapdm_phsap_dequeue_prim(le, &pp) < 0)</span><br><span>            return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       msg = pp.oph.msg;</span><br><span>    sapi = (msg->data[0] >> 2) & 0x07;</span><br><span> </span><br><span>@@ -1074,6 +1098,7 @@</span><br><span>          lchan->rep_sacch = msgb_copy(msg, "rep_sacch");</span><br><span>                 lchan->rep_sacch_l1_hdr[0] = p[0];</span><br><span>                lchan->rep_sacch_l1_hdr[1] = p[1];</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-SACCH repetition: stored repetition candidate\n");</span><br><span>  }</span><br><span> </span><br><span>        return msg;</span><br><span>@@ -1164,8 +1189,10 @@</span><br><span>                         le = &lchan->lapdm_ch.lapdm_acch;</span><br><span>                     if (lchan->repeated_acch_capability.dl_sacch)</span><br><span>                             pp_msg = lapdm_phsap_dequeue_msg_sacch(lchan, le, p);</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%);">+                                LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "DL-SACCH repetition: disabled by BSC\n");</span><br><span>                              pp_msg = lapdm_phsap_dequeue_msg(le);</span><br><span style="color: hsl(120, 100%, 40%);">+                 }</span><br><span>            } else {</span><br><span>                     if (lchan->ts->trx->bts->dtxd)</span><br><span>                           dtxd_facch = true;</span><br><span>@@ -1438,12 +1465,19 @@</span><br><span>          * reason, we must be sure that UL-SACCH repetition is disabled. */</span><br><span>  if (!lchan->repeated_acch_capability.ul_sacch) {</span><br><span>          lchan->repeated_ul_sacch_active = false;</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: disabled by BSC\n");</span><br><span>              return;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (lchan->repeated_dl_facch_active)</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: active\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        else</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: inactive\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* Threshold disabled (repetition is always on) */</span><br><span>   if (lchan->repeated_acch_capability.rxqual == 0) {</span><br><span>                lchan->repeated_ul_sacch_active = true;</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: no threshold => UL-SACCH repetition active\n");</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span>@@ -1461,10 +1495,15 @@</span><br><span>      lower = ber10k_by_rxqual_lower[lchan->repeated_acch_capability.rxqual];</span><br><span> </span><br><span>       /* If upper/rxqual == 0, then repeated UL-SACCH is always on */</span><br><span style="color: hsl(0, 100%, 40%);">- if (ber10k >= upper)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (ber10k >= upper) {</span><br><span>            lchan->repeated_ul_sacch_active = true;</span><br><span style="color: hsl(0, 100%, 40%);">-      else if (ber10k <= lower)</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: ber10k (%u) >= upper ber10k threshold (%u) => UL-SACCH repetition active\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                   ber10k, upper);</span><br><span style="color: hsl(120, 100%, 40%);">+     } else if (ber10k <= lower) {</span><br><span>             lchan->repeated_ul_sacch_active = false;</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPLCHAN(lchan, DL1C, LOGL_DEBUG, "UL-SACCH repetition: ber10k (%u) <= upper ber10k threshold (%u) => UL-SACCH repetition inactive\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                         ber10k, lower);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> /* DATA received from bts model */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/22888">change 22888</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-bts/+/22888"/><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-Change-Id: I59d11fd03be3d29fb8a4279d9945b03006764c0e </div>
<div style="display:none"> Gerrit-Change-Number: 22888 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>