Change in osmo-bts[master]: [VAMOS] struct gsm_lchan: store Training Sequence Code/Set

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

fixeria gerrit-no-reply at lists.osmocom.org
Fri May 21 15:15:48 UTC 2021


fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/24327 )


Change subject: [VAMOS] struct gsm_lchan: store Training Sequence Code/Set
......................................................................

[VAMOS] struct gsm_lchan: store Training Sequence Code/Set

Change-Id: I3744bc308b99ef941e6e9d139444e414abebc14b
Related: SYS#4895, OS#4941
---
M include/osmo-bts/gsm_data.h
M include/osmo-bts/scheduler.h
M src/common/l1sap.c
M src/common/scheduler.c
M src/osmo-bts-trx/sched_lchan_pdtch.c
M src/osmo-bts-trx/sched_lchan_tchf.c
M src/osmo-bts-trx/sched_lchan_tchh.c
M src/osmo-bts-trx/sched_lchan_xcch.c
8 files changed, 32 insertions(+), 7 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/27/24327/1

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

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/24327
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I3744bc308b99ef941e6e9d139444e414abebc14b
Gerrit-Change-Number: 24327
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210521/b776a2e8/attachment.htm>


More information about the gerrit-log mailing list