Change in osmo-bts[master]: [VAMOS] osmo-bts-trx: schedule bursts on 'shadow' timeslots

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
Thu May 27 21:21:11 UTC 2021


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


Change subject: [VAMOS] osmo-bts-trx: schedule bursts on 'shadow' timeslots
......................................................................

[VAMOS] osmo-bts-trx: schedule bursts on 'shadow' timeslots

Change-Id: I3e0bdf8c03273f66991aa1764029ab1dd3528d7e
Related: SYS#4895, OS#4941
---
M include/osmo-bts/scheduler.h
M src/common/scheduler.c
M src/osmo-bts-trx/main.c
M src/osmo-bts-trx/scheduler_trx.c
M src/osmo-bts-trx/trx_if.c
5 files changed, 67 insertions(+), 17 deletions(-)



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

diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h
index 9093229..e7d27ac 100644
--- a/include/osmo-bts/scheduler.h
+++ b/include/osmo-bts/scheduler.h
@@ -71,6 +71,7 @@
 enum trx_mod_type {
 	TRX_MOD_T_GMSK,
 	TRX_MOD_T_8PSK,
+	TRX_MOD_T_AQPSK,
 };
 
 /* A set of measurements belonging to one Uplink burst */
diff --git a/src/common/scheduler.c b/src/common/scheduler.c
index 75cf6bd..91e5067 100644
--- a/src/common/scheduler.c
+++ b/src/common/scheduler.c
@@ -606,32 +606,49 @@
  * init / exit
  */
 
+static void trx_sched_init_ts(struct gsm_bts_trx_ts *ts,
+			      const unsigned int rate_ctr_idx)
+{
+	struct l1sched_ts *l1ts;
+	unsigned int i;
+
+	l1ts = talloc_zero(ts->trx, struct l1sched_ts);
+	OSMO_ASSERT(l1ts != NULL);
+
+	/* Link both structures */
+	ts->priv = l1ts;
+	l1ts->ts = ts;
+
+	l1ts->ctrs = rate_ctr_group_alloc(ts->trx,
+					  &l1sched_ts_ctrg_desc,
+					  rate_ctr_idx);
+	INIT_LLIST_HEAD(&l1ts->dl_prims);
+
+	for (i = 0; i < ARRAY_SIZE(l1ts->chan_state); i++) {
+		struct l1sched_chan_state *chan_state;
+		chan_state = &l1ts->chan_state[i];
+		chan_state->active = false;
+	}
+}
+
 void trx_sched_init(struct gsm_bts_trx *trx)
 {
-	unsigned int tn, i;
+	unsigned int tn;
 
 	OSMO_ASSERT(trx != NULL);
 
 	LOGPTRX(trx, DL1C, LOGL_DEBUG, "Init scheduler structures\n");
 
+	/* Allocate shadow timeslots */
+	gsm_bts_trx_init_shadow_ts(trx);
+
 	for (tn = 0; tn < ARRAY_SIZE(trx->ts); tn++) {
-		struct l1sched_ts *l1ts;
+		unsigned int rate_ctr_idx = trx->nr * 100 + tn;
+		struct gsm_bts_trx_ts *ts = &trx->ts[tn];
 
-		l1ts = talloc_zero(trx, struct l1sched_ts);
-		OSMO_ASSERT(l1ts != NULL);
-
-		trx->ts[tn].priv = l1ts;
-		l1ts->ts = &trx->ts[tn];
-
-		l1ts->mf_index = 0;
-		l1ts->ctrs = rate_ctr_group_alloc(trx, &l1sched_ts_ctrg_desc, (trx->nr + 1) * 10 + tn);
-		INIT_LLIST_HEAD(&l1ts->dl_prims);
-
-		for (i = 0; i < ARRAY_SIZE(l1ts->chan_state); i++) {
-			struct l1sched_chan_state *chan_state;
-			chan_state = &l1ts->chan_state[i];
-			chan_state->active = false;
-		}
+		/* Init primary and shadow timeslots */
+		trx_sched_init_ts(ts, rate_ctr_idx);
+		trx_sched_init_ts(ts->vamos.peer, rate_ctr_idx + 10);
 	}
 }
 
diff --git a/src/osmo-bts-trx/main.c b/src/osmo-bts-trx/main.c
index 6ec8dfc..7134939 100644
--- a/src/osmo-bts-trx/main.c
+++ b/src/osmo-bts-trx/main.c
@@ -146,6 +146,7 @@
 	osmo_bts_set_feature(bts->features, BTS_FEAT_HOPPING);
 	osmo_bts_set_feature(bts->features, BTS_FEAT_ACCH_REP);
 	osmo_bts_set_feature(bts->features, BTS_FEAT_MULTI_TSC);
+	osmo_bts_set_feature(bts->features, BTS_FEAT_VAMOS);
 
 	bts_internal_flag_set(bts, BTS_INTERNAL_FLAG_MEAS_PAYLOAD_COMB);
 
diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c
index fa5c719..1e099c0 100644
--- a/src/osmo-bts-trx/scheduler_trx.c
+++ b/src/osmo-bts-trx/scheduler_trx.c
@@ -149,6 +149,33 @@
 	}
 }
 
+/* schedule one frame for a shadow TRX/TS */
+static void trx_sched_shadow_ts(const struct gsm_bts_trx_ts *ts,
+				struct trx_dl_burst_req *br)
+{
+	struct l1sched_ts *l1ts = ts->priv;
+	struct trx_dl_burst_req sbr = {
+		.trx_num = br->trx_num,
+		.fn = br->fn,
+		.tn = br->tn,
+	};
+
+	_sched_dl_burst(l1ts, &sbr);
+
+	if (br->burst_len != 0 && sbr.burst_len != 0) /* both present */
+		memcpy(br->burst + GSM_BURST_LEN, sbr.burst, GSM_BURST_LEN);
+	else if (br->burst_len == 0) /* V0 burst is missing, use dummy bits */
+		memcpy(br->burst, _sched_dummy_burst, GSM_BURST_LEN);
+	else if (sbr.burst_len == 0) /* V1 burst is missing, use dummy bits */
+		memcpy(br->burst + GSM_BURST_LEN, _sched_dummy_burst, GSM_BURST_LEN);
+	else /* nothing to send at all */
+		return;
+
+	/* FIXME: SCPIR is hard-coded to 0 */
+	br->burst_len = 2 * GSM_BURST_LEN;
+	br->mod = TRX_MOD_T_AQPSK;
+}
+
 /* schedule all frames of all TRX for given FN */
 static void bts_sched_fn(struct gsm_bts *bts, const uint32_t fn)
 {
@@ -195,6 +222,9 @@
 
 			/* get burst for FN */
 			_sched_dl_burst(l1ts, br);
+
+			if (ts->vamos.peer != NULL)
+				trx_sched_shadow_ts(ts->vamos.peer, br);
 		}
 	}
 
diff --git a/src/osmo-bts-trx/trx_if.c b/src/osmo-bts-trx/trx_if.c
index c10a15f..bcca807 100644
--- a/src/osmo-bts-trx/trx_if.c
+++ b/src/osmo-bts-trx/trx_if.c
@@ -755,6 +755,7 @@
 static const uint8_t trx_data_mod_val[] = {
 	[TRX_MOD_T_GMSK]	= 0x00, /* .00xx... */
 	[TRX_MOD_T_8PSK]	= 0x20, /* .010x... */
+	[TRX_MOD_T_AQPSK]	= 0x60, /* .11xx... */
 };
 
 /* Header dissector for TRXDv0 (and part of TRXDv1) */

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

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I3e0bdf8c03273f66991aa1764029ab1dd3528d7e
Gerrit-Change-Number: 24440
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/20210527/c005113e/attachment.htm>


More information about the gerrit-log mailing list