Change in osmocom-bb[master]: trxcon/l1ctl.c: properly handle handover RACH request

Vadim Yanitskiy gerrit-no-reply at lists.osmocom.org
Wed May 29 23:47:37 UTC 2019


Vadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/14274


Change subject: trxcon/l1ctl.c: properly handle handover RACH request
......................................................................

trxcon/l1ctl.c: properly handle handover RACH request

During the handover the MS needs to release the existing dedicated
channel(s), establish the new one(s) as indicated by the network,
and then, depending on the synchronisation state, send one or more
HANDOVER ACCESS messages carried by Access Bursts.

In order to implement this, trxcon needs to be able to transmit
Access Bursts on any TDMA timeslot regardless of the logical
channel type and the associated handler, i.e. != TRXC_RACH.

The controlling side on L1CTL (layer23 or TTCN-3) needs to send
one or more L1CTL_RESET_REQ message(s) with properly populated
UL info header. Otherwise a regular RACH on TS0 is assumed.

Change-Id: Ia967820a536c99966ba2c60b63d2ea9edb093f46
---
M src/host/trxcon/l1ctl.c
M src/host/trxcon/sched_trx.c
2 files changed, 17 insertions(+), 13 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/74/14274/1

diff --git a/src/host/trxcon/l1ctl.c b/src/host/trxcon/l1ctl.c
index fff1c2b..ce83f95 100644
--- a/src/host/trxcon/l1ctl.c
+++ b/src/host/trxcon/l1ctl.c
@@ -509,7 +509,6 @@
 	struct l1ctl_rach_req *req;
 	struct l1ctl_info_ul *ul;
 	struct trx_ts_prim *prim;
-	uint8_t chan_nr, link_id;
 	size_t len;
 	int rc;
 
@@ -534,25 +533,24 @@
 			"(offset=%u, ra=0x%02x)\n", req->offset, req->ra);
 	}
 
-	/**
-	 * FIXME: l1ctl_info_ul doesn't provide channel description
-	 * FIXME: Can we use other than TS0?
-	 */
-	chan_nr = RSL_CHAN_RACH;
-	link_id = 0x00;
+	/* The controlling L1CTL side always include the UL info header,
+	 * but may leave it empty. We assume RACH is on TS0 in this case. */
+	if (ul->chan_nr == 0x00) {
+		LOGP(DL1C, LOGL_NOTICE, "The UL info header is empty, "
+					"assuming RACH is on TS0\n");
+		ul->chan_nr = RSL_CHAN_RACH;
+	}
 
 	/* Init a new primitive */
-	rc = sched_prim_init(l1l->trx, &prim, len, chan_nr, link_id);
+	rc = sched_prim_init(l1l->trx, &prim, len, ul->chan_nr, ul->link_id);
 	if (rc)
 		goto exit;
 
 	/**
-	 * Push this primitive to transmit queue
-	 *
-	 * FIXME: what if requested TS is not configured?
-	 * Or what if one (such as TCH) has no TRXC_RACH slots?
+	 * Push this primitive to the transmit queue.
+	 * Indicated timeslot needs to be configured.
 	 */
-	rc = sched_prim_push(l1l->trx, prim, chan_nr);
+	rc = sched_prim_push(l1l->trx, prim, ul->chan_nr);
 	if (rc) {
 		talloc_free(prim);
 		goto exit;
diff --git a/src/host/trxcon/sched_trx.c b/src/host/trxcon/sched_trx.c
index 62fe870..37d1acf 100644
--- a/src/host/trxcon/sched_trx.c
+++ b/src/host/trxcon/sched_trx.c
@@ -35,6 +35,7 @@
 #include <osmocom/core/logging.h>
 #include <osmocom/core/linuxlist.h>
 
+#include "l1ctl_proto.h"
 #include "scheduler.h"
 #include "sched_trx.h"
 #include "trx_if.h"
@@ -116,6 +117,11 @@
 		if (lchan->prim == NULL)
 			continue;
 
+		/* Handover RACH needs to be handled regardless of the
+		 * current channel type and the associated handler. */
+		if (PRIM_IS_RACH(lchan->prim) && lchan->prim->chan != TRXC_RACH)
+			handler = trx_lchan_desc[TRXC_RACH].tx_fn;
+
 		/* Poke lchan handler */
 		handler(trx, ts, lchan, fn, bid);
 	}

-- 
To view, visit https://gerrit.osmocom.org/14274
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia967820a536c99966ba2c60b63d2ea9edb093f46
Gerrit-Change-Number: 14274
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190529/5386e9b5/attachment.html>


More information about the gerrit-log mailing list