<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/15441">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmo-bts-trx/scheduler: fix: do not reset ECU with BFI frame<br><br>BFI (Bad Frame Indication) needs to be sent:<br><br>  - when failed to decode a speech (or FACCH) frame, or<br>  - when decoded frame is FACCH frame (23 octets long),<br><br>if the current channel mode is RSL_CMOD_SPD_SPEECH.<br><br>Since we (re)use the same buffer as used for non-BFI frames,<br>we need to avoid resetting the ECU (Error Cancellation Unit)<br>with a bad frame indication.<br><br>We used a boolean flag for that, but it was not set in the<br>second case - when a FACCH frame is decoded. Let's get rid<br>of that flag and use 'goto' operator to step over the ECU<br>resetting code.<br><br>Let's also modify rx_tchh_fn(), which does not (yet) deal<br>with ECU, but most likely will in the future.<br><br>Change-Id: I8bdc7483f524006a86ff1fee7cdefafe3db899d8<br>---<br>M src/osmo-bts-trx/scheduler_trx.c<br>1 file changed, 7 insertions(+), 4 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/41/15441/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c</span><br><span>index 57eb138..5b31387 100644</span><br><span>--- a/src/osmo-bts-trx/scheduler_trx.c</span><br><span>+++ b/src/osmo-bts-trx/scheduler_trx.c</span><br><span>@@ -1138,7 +1138,6 @@</span><br><span>      uint8_t tch_data[128]; /* just to be safe */</span><br><span>         int rc, amr = 0;</span><br><span>     int n_errors, n_bits_total;</span><br><span style="color: hsl(0, 100%, 40%);">-     bool bfi_flag = false;</span><br><span>       struct gsm_lchan *lchan =</span><br><span>            get_lchan_by_chan_nr(l1t->trx, trx_chan_desc[chan].chan_nr | bi->tn);</span><br><span> </span><br><span>@@ -1235,14 +1234,12 @@</span><br><span>            LOGL1S(DL1P, LOGL_NOTICE, l1t, bi->tn, chan, bi->fn,</span><br><span>                   "Received bad data (%u/%u)\n",</span><br><span>                     bi->fn % l1ts->mf_period, l1ts->mf_period);</span><br><span style="color: hsl(0, 100%, 40%);">-            bfi_flag = true;</span><br><span>             goto bfi;</span><br><span>    }</span><br><span>    if (rc < 4) {</span><br><span>             LOGL1S(DL1P, LOGL_NOTICE, l1t, bi->tn, chan, bi->fn,</span><br><span>                   "Received bad data (%u/%u) with invalid codec mode %d\n",</span><br><span>                  bi->fn % l1ts->mf_period, l1ts->mf_period, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-                bfi_flag = true;</span><br><span>             goto bfi;</span><br><span>    }</span><br><span> </span><br><span>@@ -1300,6 +1297,9 @@</span><br><span>                                        "TCH mode %u invalid, please fix!\n", tch_mode);</span><br><span>                           return -EINVAL;</span><br><span>                      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   /* Step over resetting ECU */</span><br><span style="color: hsl(120, 100%, 40%);">+                 goto compose_l1sap;</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span>@@ -1307,7 +1307,7 @@</span><br><span>                return 0;</span><br><span> </span><br><span>        /* Reset ECU with a good frame */</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!bfi_flag && tch_mode == GSM48_CMODE_SPEECH_V1)</span><br><span style="color: hsl(120, 100%, 40%);">+   if (tch_mode == GSM48_CMODE_SPEECH_V1)</span><br><span>               osmo_ecu_fr_reset(&lchan->ecu_state.fr, tch_data);</span><br><span> </span><br><span>        /* TCH or BFI */</span><br><span>@@ -1497,6 +1497,9 @@</span><br><span>                                     "TCH mode %u invalid, please fix!\n", tch_mode);</span><br><span>                           return -EINVAL;</span><br><span>                      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   /* Step over resetting ECU */</span><br><span style="color: hsl(120, 100%, 40%);">+                 goto compose_l1sap;</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/15441">change 15441</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/+/15441"/><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: I8bdc7483f524006a86ff1fee7cdefafe3db899d8 </div>
<div style="display:none"> Gerrit-Change-Number: 15441 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>