[MERGED] osmo-bts[master]: dyn PDCH: pcu_tx_info_ind(): handle TCH/F_PDCH in PDCH mode

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

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Jun 17 15:50:49 UTC 2016


Harald Welte has submitted this change and it was merged.

Change subject: dyn PDCH: pcu_tx_info_ind(): handle TCH/F_PDCH in PDCH mode
......................................................................


dyn PDCH: pcu_tx_info_ind(): handle TCH/F_PDCH in PDCH mode

Introduce a static function to encapsulate the decision whether a TS is
used for PDCH. Depending on the ts->flags, handle a TCH/F_PDCH TS exactly like
a standard PDCH TS.

Change-Id: Ic72fd06ecc99609823efa3edcf773007cc514b5b
---
M src/common/pcu_sock.c
1 file changed, 19 insertions(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index ea4267d..cfffb2e 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -95,6 +95,24 @@
 	return msg;
 }
 
+static bool ts_is_pdch(struct gsm_bts_trx_ts *ts) {
+	if (ts->pchan == GSM_PCHAN_PDCH)
+		return true;
+	if (ts->pchan == GSM_PCHAN_TCH_F_PDCH) {
+		/* When we're busy deactivating the PDCH, we first set
+		 * DEACT_PENDING, tell the PCU about it and wait for a
+		 * response. So DEACT_PENDING means "no PDCH" to the PCU.
+		 * Similarly, when we're activating PDCH, we set the
+		 * ACT_PENDING and wait for an activation response from the
+		 * PCU, so ACT_PENDING means "is PDCH". */
+		if (ts->flags & TS_F_PDCH_ACTIVE)
+			return !(ts->flags & TS_F_PDCH_DEACT_PENDING);
+		else
+			return (ts->flags & TS_F_PDCH_ACT_PENDING);
+	}
+	return false;
+}
+
 int pcu_tx_info_ind(void)
 {
 	struct gsm_network *net = &bts_gsmnet;
@@ -207,7 +225,7 @@
 		for (j = 0; j < 8; j++) {
 			ts = &trx->ts[j];
 			if (ts->mo.nm_state.operational == NM_OPSTATE_ENABLED
-			 && ts->pchan == GSM_PCHAN_PDCH) {
+			    && ts_is_pdch(ts)) {
 				info_ind->trx[i].pdch_mask |= (1 << j);
 				info_ind->trx[i].tsc[j] =
 					(ts->tsc >= 0) ? ts->tsc : bts->bsic & 7;

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic72fd06ecc99609823efa3edcf773007cc514b5b
Gerrit-PatchSet: 3
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list