[PATCH] osmo-bsc[master]: dyn TS, assignment: allow switch from PDCH with associated conn

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/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Sat May 5 18:39:55 UTC 2018


Review at  https://gerrit.osmocom.org/8043

dyn TS, assignment: allow switch from PDCH with associated conn

Typically, an lchan that is released should no longer be associated with
subscriber connection. If that is the case, an S_LCHAN_UNEXPECTED_RELEASE is
triggered, which aborts, e.g., an ongoing assignment.

However, with dynamic timeslots, we may set lchan->conn and then start to
switch over from PDCH to a TCH mode, in which case it is perfectly fine to
release an lchan that is associated to a conn.

In lchan_free(), do not fire S_LCHAN_UNEXPECTED_RELEASE for a dyn TS that is
currently in switchover.

This is the second and last part to fix dynamic timeslots handling of the
gscon.

Related: OS#3211
Change-Id: Id7d9dd06451722eb328db77bb586826c954bd85c
---
M src/libbsc/chan_alloc.c
1 file changed, 6 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/43/8043/1

diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c
index e72ab3c..9668968 100644
--- a/src/libbsc/chan_alloc.c
+++ b/src/libbsc/chan_alloc.c
@@ -448,7 +448,9 @@
 	lchan->type = GSM_LCHAN_NONE;
 
 
-	if (lchan->conn) {
+	if (lchan->conn
+	    && !(lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH
+		 && lchan->ts->dyn.pchan_is != lchan->ts->dyn.pchan_want)) {
 		struct lchan_signal_data sig;
 
 		/* We might kill an active channel... */
@@ -479,7 +481,9 @@
 	sig.bts = lchan->ts->trx->bts;
 	osmo_signal_dispatch(SS_CHALLOC, S_CHALLOC_FREED, &sig);
 
-	if (lchan->conn) {
+	if (lchan->conn
+	    && !(lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH
+		 && lchan->ts->dyn.pchan_is != lchan->ts->dyn.pchan_want)) {
 		LOGP(DRLL, LOGL_ERROR, "the subscriber connection should be gone.\n");
 		lchan->conn = NULL;
 	}

-- 
To view, visit https://gerrit.osmocom.org/8043
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id7d9dd06451722eb328db77bb586826c954bd85c
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list