<p>fixeria <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/19009">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  pespin: Looks good to me, approved
  Hoernchen: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmo-bts-trx: fix trx_sched_fn(): properly advance frame number<br><br>In trx_sched_fn() we schedule Downlink bursts in advance, in order<br>to give the transceiver some time to process them.  This function<br>handles all timeslots of all transceivers in a loop.  The problem<br>is that the given frame number is overwritten on each iteration.<br><br>Let's say we have 4 transceivers, each with default fn-advance 20.<br>The given frame number N will be advanced 4 times, so the resulting<br>frame number for 4-th transceiver would be (N + 4 * 20) instead of<br>(N + 20) as expected.  Therefore, all additional transceivers would<br>be served more and more in the future (depending on their position).<br><br>Change-Id: Ie3ab544eac81a675266df09cd2b7740e4183188e<br>---<br>M src/osmo-bts-trx/scheduler_trx.c<br>1 file changed, 6 insertions(+), 4 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 3936124..47cc4b5 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>@@ -56,10 +56,11 @@</span><br><span> }</span><br><span> </span><br><span> /* schedule all frames of all TRX for given FN */</span><br><span style="color: hsl(0, 100%, 40%);">-static int trx_sched_fn(struct gsm_bts *bts, uint32_t fn)</span><br><span style="color: hsl(120, 100%, 40%);">+static int trx_sched_fn(struct gsm_bts *bts, const uint32_t fn)</span><br><span> {</span><br><span>       struct trx_dl_burst_req br;</span><br><span>  struct gsm_bts_trx *trx;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t sched_fn;</span><br><span>   uint8_t tn;</span><br><span> </span><br><span>      /* send time indication */</span><br><span>@@ -74,7 +75,7 @@</span><br><span> </span><br><span>           /* advance frame number, so the transceiver has more</span><br><span>                  * time until it must be transmitted. */</span><br><span style="color: hsl(0, 100%, 40%);">-                fn = GSM_TDMA_FN_SUM(fn, plink->u.osmotrx.clock_advance);</span><br><span style="color: hsl(120, 100%, 40%);">+          sched_fn = GSM_TDMA_FN_SUM(fn, plink->u.osmotrx.clock_advance);</span><br><span> </span><br><span>               /* we don't schedule, if power is off */</span><br><span>                 if (!trx_if_powered(l1h))</span><br><span>@@ -83,11 +84,12 @@</span><br><span>              /* process every TS of TRX */</span><br><span>                for (tn = 0; tn < ARRAY_SIZE(l1t->ts); tn++) {</span><br><span>                         /* ready-to-send */</span><br><span style="color: hsl(0, 100%, 40%);">-                     _sched_rts(l1t, tn, GSM_TDMA_FN_SUM(fn, plink->u.osmotrx.rts_advance));</span><br><span style="color: hsl(120, 100%, 40%);">+                    _sched_rts(l1t, tn, GSM_TDMA_FN_SUM(sched_fn, plink->u.osmotrx.rts_advance));</span><br><span> </span><br><span>                         /* All other parameters to be set by _sched_dl_burst() */</span><br><span>                    br = (struct trx_dl_burst_req) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                .fn = fn, .tn = tn,</span><br><span style="color: hsl(120, 100%, 40%);">+                           .fn = sched_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                               .tn = tn,</span><br><span>                    };</span><br><span> </span><br><span>                       /* get burst for FN */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/19009">change 19009</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/+/19009"/><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: Ie3ab544eac81a675266df09cd2b7740e4183188e </div>
<div style="display:none"> Gerrit-Change-Number: 19009 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>