<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/24327">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">[VAMOS] struct gsm_lchan: store Training Sequence Code/Set<br><br>Change-Id: I3744bc308b99ef941e6e9d139444e414abebc14b<br>Related: SYS#4895, OS#4941<br>---<br>M include/osmo-bts/gsm_data.h<br>M include/osmo-bts/scheduler.h<br>M src/common/l1sap.c<br>M src/common/scheduler.c<br>M src/osmo-bts-trx/sched_lchan_pdtch.c<br>M src/osmo-bts-trx/sched_lchan_tchf.c<br>M src/osmo-bts-trx/sched_lchan_tchh.c<br>M src/osmo-bts-trx/sched_lchan_xcch.c<br>8 files changed, 32 insertions(+), 7 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/27/24327/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h</span><br><span>index be18007..70c640b 100644</span><br><span>--- a/include/osmo-bts/gsm_data.h</span><br><span>+++ b/include/osmo-bts/gsm_data.h</span><br><span>@@ -278,6 +278,8 @@</span><br><span>                 struct osmo_rtp_socket *rtp_socket;</span><br><span>  } abis_ip;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        /* Training Sequence Code and set */</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t tsc_set:5, tsc:3;</span><br><span>    uint8_t rqd_ta;</span><br><span> </span><br><span>  char *name;</span><br><span>diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h</span><br><span>index beb2716..72858f5 100644</span><br><span>--- a/include/osmo-bts/scheduler.h</span><br><span>+++ b/include/osmo-bts/scheduler.h</span><br><span>@@ -12,6 +12,12 @@</span><br><span> #define TRX_CHAN_IS_ACTIVE(state, chan) \</span><br><span>   (trx_chan_desc[chan].flags & TRX_CHAN_FLAG_AUTO_ACTIVE || (state)->active)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define TRX_GMSK_NB_TSC(br) \</span><br><span style="color: hsl(120, 100%, 40%);">+  _sched_train_seq_gmsk_nb[(br)->tsc]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define TRX_8PSK_NB_TSC(br) \</span><br><span style="color: hsl(120, 100%, 40%);">+       _sched_train_seq_8psk_nb[(br)->tsc]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* These types define the different channels on a multiframe.</span><br><span>  * Each channel has queues and can be activated individually.</span><br><span>  */</span><br><span>diff --git a/src/common/l1sap.c b/src/common/l1sap.c</span><br><span>index b74e0d3..3a2bcfd 100644</span><br><span>--- a/src/common/l1sap.c</span><br><span>+++ b/src/common/l1sap.c</span><br><span>@@ -2,6 +2,7 @@</span><br><span> </span><br><span> /* (C) 2011 by Harald Welte <laforge@gnumonks.org></span><br><span>  * (C) 2013 by Andreas Eversberg <jolly@eversberg.eu></span><br><span style="color: hsl(120, 100%, 40%);">+ * Contributions by sysmocom - s.f.m.c. GmbH</span><br><span>  *</span><br><span>  * All Rights Reserved</span><br><span>  *</span><br><span>@@ -1962,11 +1963,16 @@</span><br><span> int l1sap_chan_act(struct gsm_bts_trx *trx, uint8_t chan_nr, struct tlv_parsed *tp)</span><br><span> {</span><br><span>    struct gsm_lchan *lchan = get_lchan_by_chan_nr(trx, chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+ const struct gsm_bts_trx_ts *ts = &trx->ts[chan_nr & 0x07];</span><br><span>       const struct gsm48_chan_desc *cd;</span><br><span>    int rc;</span><br><span> </span><br><span>  LOGPLCHAN(lchan, DL1C, LOGL_INFO, "activating channel %s\n", rsl_chan_nr_str(chan_nr));</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Default Training Sequence Code and Set */</span><br><span style="color: hsl(120, 100%, 40%);">+  lchan->tsc = gsm_ts_tsc(ts);</span><br><span style="color: hsl(120, 100%, 40%);">+       lchan->tsc_set = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     /* osmo-pcu calls this without a valid 'tp' parameter, so we</span><br><span>          * need to make sure ew don't crash here */</span><br><span>      if (tp && TLVP_PRES_LEN(tp, RSL_IE_CHAN_IDENT, sizeof(*cd) + 1)) {</span><br><span>@@ -1981,6 +1987,9 @@</span><br><span>                             cd->h0.tsc, trx->bts->bsic & 7);</span><br><span>                      return -RSL_ERR_SERV_OPT_UNIMPL;</span><br><span>             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           lchan->tsc_set = (cd->chan_nr & 0x80) ? 1 : 0;</span><br><span style="color: hsl(120, 100%, 40%);">+              lchan->tsc = cd->h0.tsc;</span><br><span>       }</span><br><span> </span><br><span>        lchan->s = trx->bts->radio_link_timeout.current;</span><br><span>diff --git a/src/common/scheduler.c b/src/common/scheduler.c</span><br><span>index 96049a3..97e83b8 100644</span><br><span>--- a/src/common/scheduler.c</span><br><span>+++ b/src/common/scheduler.c</span><br><span>@@ -1194,6 +1194,7 @@</span><br><span> {</span><br><span>  const struct l1sched_chan_state *l1cs;</span><br><span>       const struct trx_sched_frame *frame;</span><br><span style="color: hsl(120, 100%, 40%);">+  const struct gsm_lchan *lchan;</span><br><span>       uint8_t offset, period;</span><br><span>      trx_sched_dl_func *func;</span><br><span> </span><br><span>@@ -1210,11 +1211,18 @@</span><br><span>       func = trx_chan_desc[br->chan].dl_fn;</span><br><span> </span><br><span>         l1cs = &l1ts->chan_state[br->chan];</span><br><span style="color: hsl(120, 100%, 40%);">+ lchan = l1cs->lchan; /* NOTE: may be NULL! */</span><br><span> </span><br><span>         /* check if channel is active */</span><br><span>     if (!TRX_CHAN_IS_ACTIVE(l1cs, br->chan))</span><br><span>          return;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* Training Sequence Code and Set */</span><br><span style="color: hsl(120, 100%, 40%);">+  if (lchan != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+          br->tsc_set = lchan->tsc_set;</span><br><span style="color: hsl(120, 100%, 40%);">+           br->tsc = lchan->tsc;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* get burst from function */</span><br><span>        if (func(l1ts, br) != 0)</span><br><span>             return;</span><br><span>@@ -1223,8 +1231,8 @@</span><br><span>      br->mod = l1cs->dl_mod_type;</span><br><span> </span><br><span>       /* BS Power reduction (in dB) per logical channel */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (l1cs->lchan != NULL)</span><br><span style="color: hsl(0, 100%, 40%);">-             br->att = l1cs->lchan->bs_power_ctrl.current;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (lchan != NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+            br->att = lchan->bs_power_ctrl.current;</span><br><span> </span><br><span>    /* encrypt */</span><br><span>        if (br->burst_len && l1cs->dl_encr_algo) {</span><br><span>diff --git a/src/osmo-bts-trx/sched_lchan_pdtch.c b/src/osmo-bts-trx/sched_lchan_pdtch.c</span><br><span>index dede371..335ba6f 100644</span><br><span>--- a/src/osmo-bts-trx/sched_lchan_pdtch.c</span><br><span>+++ b/src/osmo-bts-trx/sched_lchan_pdtch.c</span><br><span>@@ -212,7 +212,7 @@</span><br><span>          burst = *bursts_p + br->bid * 348;</span><br><span>                memset(br->burst, 1, 9);</span><br><span>          memcpy(br->burst + 9, burst, 174);</span><br><span style="color: hsl(0, 100%, 40%);">-           memcpy(br->burst + 183, _sched_train_seq_8psk_nb[gsm_ts_tsc(l1ts->ts)], 78);</span><br><span style="color: hsl(120, 100%, 40%);">+            memcpy(br->burst + 183, TRX_8PSK_NB_TSC(br), 78);</span><br><span>                 memcpy(br->burst + 261, burst + 174, 174);</span><br><span>                memset(br->burst + 435, 1, 9);</span><br><span> </span><br><span>@@ -220,7 +220,7 @@</span><br><span>  } else {</span><br><span>             burst = *bursts_p + br->bid * 116;</span><br><span>                memcpy(br->burst + 3, burst, 58);</span><br><span style="color: hsl(0, 100%, 40%);">-            memcpy(br->burst + 61, _sched_train_seq_gmsk_nb[gsm_ts_tsc(l1ts->ts)], 26);</span><br><span style="color: hsl(120, 100%, 40%);">+             memcpy(br->burst + 61, TRX_GMSK_NB_TSC(br), 26);</span><br><span>          memcpy(br->burst + 87, burst + 58, 58);</span><br><span> </span><br><span>               br->burst_len = GSM_BURST_LEN;</span><br><span>diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c</span><br><span>index 5605969..689925f 100644</span><br><span>--- a/src/osmo-bts-trx/sched_lchan_tchf.c</span><br><span>+++ b/src/osmo-bts-trx/sched_lchan_tchf.c</span><br><span>@@ -562,7 +562,7 @@</span><br><span>     /* compose burst */</span><br><span>  burst = *bursts_p + br->bid * 116;</span><br><span>        memcpy(br->burst + 3, burst, 58);</span><br><span style="color: hsl(0, 100%, 40%);">-    memcpy(br->burst + 61, _sched_train_seq_gmsk_nb[gsm_ts_tsc(l1ts->ts)], 26);</span><br><span style="color: hsl(120, 100%, 40%);">+     memcpy(br->burst + 61, TRX_GMSK_NB_TSC(br), 26);</span><br><span>  memcpy(br->burst + 87, burst + 58, 58);</span><br><span> </span><br><span>       br->burst_len = GSM_BURST_LEN;</span><br><span>diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c</span><br><span>index 91ce02f..4f03bd1 100644</span><br><span>--- a/src/osmo-bts-trx/sched_lchan_tchh.c</span><br><span>+++ b/src/osmo-bts-trx/sched_lchan_tchh.c</span><br><span>@@ -451,7 +451,7 @@</span><br><span>     /* compose burst */</span><br><span>  burst = *bursts_p + br->bid * 116;</span><br><span>        memcpy(br->burst + 3, burst, 58);</span><br><span style="color: hsl(0, 100%, 40%);">-    memcpy(br->burst + 61, _sched_train_seq_gmsk_nb[gsm_ts_tsc(l1ts->ts)], 26);</span><br><span style="color: hsl(120, 100%, 40%);">+     memcpy(br->burst + 61, TRX_GMSK_NB_TSC(br), 26);</span><br><span>  memcpy(br->burst + 87, burst + 58, 58);</span><br><span> </span><br><span>       br->burst_len = GSM_BURST_LEN;</span><br><span>diff --git a/src/osmo-bts-trx/sched_lchan_xcch.c b/src/osmo-bts-trx/sched_lchan_xcch.c</span><br><span>index b31175e..4bfc101 100644</span><br><span>--- a/src/osmo-bts-trx/sched_lchan_xcch.c</span><br><span>+++ b/src/osmo-bts-trx/sched_lchan_xcch.c</span><br><span>@@ -239,7 +239,7 @@</span><br><span>     /* compose burst */</span><br><span>  burst = *bursts_p + br->bid * 116;</span><br><span>        memcpy(br->burst + 3, burst, 58);</span><br><span style="color: hsl(0, 100%, 40%);">-    memcpy(br->burst + 61, _sched_train_seq_gmsk_nb[gsm_ts_tsc(l1ts->ts)], 26);</span><br><span style="color: hsl(120, 100%, 40%);">+     memcpy(br->burst + 61, TRX_GMSK_NB_TSC(br), 26);</span><br><span>  memcpy(br->burst + 87, burst + 58, 58);</span><br><span> </span><br><span>       br->burst_len = GSM_BURST_LEN;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/24327">change 24327</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/+/24327"/><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: I3744bc308b99ef941e6e9d139444e414abebc14b </div>
<div style="display:none"> Gerrit-Change-Number: 24327 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>