<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/6315">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  tnt: Looks good to me, but someone else must approve
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Max: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmo-bts-trx: add extended (11-bit) RACH support<br><br>Attempt to decode incoming RACH burst as 11-bit first<br>and fallback to 8-bit if unsuccessful.<br><br>Change-Id: Ia28741603636406744e5e22ffff1fb7a9689955a<br>Related: OS#1854<br>---<br>M src/osmo-bts-trx/scheduler_trx.c<br>1 file changed, 38 insertions(+), 10 deletions(-)<br><br></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 1b0ba73..b395479 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>@@ -716,18 +716,29 @@</span><br><span>        uint8_t chan_nr;</span><br><span>     struct osmo_phsap_prim l1sap;</span><br><span>        int n_errors, n_bits_total;</span><br><span style="color: hsl(120, 100%, 40%);">+   bool is_11bit = true;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t ra11;</span><br><span>       uint8_t ra;</span><br><span style="color: hsl(0, 100%, 40%);">-     int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc = 1;</span><br><span> </span><br><span>      chan_nr = trx_chan_desc[chan].chan_nr | tn;</span><br><span> </span><br><span>      LOGL1S(DL1P, LOGL_DEBUG, l1t, tn, chan, fn, "Received RACH toa=%d\n", toa256);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* decode */</span><br><span style="color: hsl(0, 100%, 40%);">-    rc = gsm0503_rach_decode_ber(&ra, bits + 8 + 41, l1t->trx->bts->bsic, &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (chan == TRXC_RACH) /* Attempt to decode as extended (11-bit) RACH first */</span><br><span style="color: hsl(120, 100%, 40%);">+                rc = gsm0503_rach_ext_decode_ber(&ra11, bits + 8 + 41,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             l1t->trx->bts->bsic, &n_errors, &n_bits_total);</span><br><span>    if (rc) {</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGL1S(DL1P, LOGL_DEBUG, l1t, tn, chan, fn, "Received bad AB frame\n");</span><br><span style="color: hsl(0, 100%, 40%);">-               return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Indicate non-extended RACH */</span><br><span style="color: hsl(120, 100%, 40%);">+              is_11bit = false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Fall-back to the normal RACH decoding */</span><br><span style="color: hsl(120, 100%, 40%);">+           rc = gsm0503_rach_decode_ber(&ra, bits + 8 + 41,</span><br><span style="color: hsl(120, 100%, 40%);">+                  l1t->trx->bts->bsic, &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+              if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGL1S(DL1P, LOGL_DEBUG, l1t, tn, chan, fn, "Received bad AB frame\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                     return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span> </span><br><span>        /* compose primitive */</span><br><span>@@ -736,17 +747,34 @@</span><br><span>      osmo_prim_init(&l1sap.oph, SAP_GSM_PH, PRIM_PH_RACH, PRIM_OP_INDICATION,</span><br><span>                 NULL);</span><br><span>       l1sap.u.rach_ind.chan_nr = chan_nr;</span><br><span style="color: hsl(0, 100%, 40%);">-     l1sap.u.rach_ind.ra = ra;</span><br><span>    l1sap.u.rach_ind.acc_delay = (toa256 >= 0) ? toa256/256 : 0;</span><br><span>      l1sap.u.rach_ind.fn = fn;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* 11bit RACH is not supported for osmo-trx */</span><br><span style="color: hsl(0, 100%, 40%);">-  l1sap.u.rach_ind.is_11bit = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-  l1sap.u.rach_ind.burst_type = GSM_L1_BURST_TYPE_ACCESS_0;</span><br><span>    l1sap.u.rach_ind.rssi = rssi;</span><br><span>        l1sap.u.rach_ind.ber10k = compute_ber10k(n_bits_total, n_errors);</span><br><span>    l1sap.u.rach_ind.acc_delay_256bits = toa256;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      if (is_11bit) {</span><br><span style="color: hsl(120, 100%, 40%);">+               l1sap.u.rach_ind.is_11bit = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                l1sap.u.rach_ind.ra = ra11;</span><br><span style="color: hsl(120, 100%, 40%);">+           l1sap.u.rach_ind.burst_type = BSIC2BCC(l1t->trx->bts->bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+         switch (l1sap.u.rach_ind.burst_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+                case GSM_L1_BURST_TYPE_ACCESS_0:</span><br><span style="color: hsl(120, 100%, 40%);">+              case GSM_L1_BURST_TYPE_ACCESS_1:</span><br><span style="color: hsl(120, 100%, 40%);">+              case GSM_L1_BURST_TYPE_ACCESS_2:</span><br><span style="color: hsl(120, 100%, 40%);">+                      break;</span><br><span style="color: hsl(120, 100%, 40%);">+                default:</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGL1S(DL1P, LOGL_NOTICE, l1t, tn, chan, fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                         "Received RACH frame with unexpected TSC %u, "</span><br><span style="color: hsl(120, 100%, 40%);">+                              "forcing default %u\n", l1sap.u.rach_ind.burst_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                        GSM_L1_BURST_TYPE_ACCESS_0);</span><br><span style="color: hsl(120, 100%, 40%);">+                   l1sap.u.rach_ind.burst_type = GSM_L1_BURST_TYPE_ACCESS_0;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              l1sap.u.rach_ind.is_11bit = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                l1sap.u.rach_ind.ra = ra;</span><br><span style="color: hsl(120, 100%, 40%);">+             l1sap.u.rach_ind.burst_type = GSM_L1_BURST_TYPE_ACCESS_0;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* forward primitive */</span><br><span>      l1sap_up(l1t->trx, &l1sap);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/6315">change 6315</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/6315"/><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: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ia28741603636406744e5e22ffff1fb7a9689955a </div>
<div style="display:none"> Gerrit-Change-Number: 6315 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Stefan Sperling <stsp@stsp.name> </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: tnt <tnt@246tNt.com> </div>