[MERGED] osmo-bts[master]: dyn TS, dyn PDCH: common/l1sap.c: properly notice PDCH

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
Thu Jul 28 16:57:14 UTC 2016


Harald Welte has submitted this change and it was merged.

Change subject: dyn TS, dyn PDCH: common/l1sap.c: properly notice PDCH
......................................................................


dyn TS, dyn PDCH: common/l1sap.c: properly notice PDCH

In l1sap_ph_rts_ind(), l1sap_ph_data_ind() and to_gsmtap(), the decision
to handle a TS as PDCH was still missing for dynamic TS.

It is not yet clear why this did not impact functionality for dynamic timeslots
on other BTS models. AFAICT they should not work without this patch, but in
fact they do. It would be nice to clarify this some day.

Change-Id: I7b873a089a3de70d980885a7539cb91997464743
---
M src/common/l1sap.c
1 file changed, 11 insertions(+), 3 deletions(-)

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



diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 7f73e3f..4f6cf05 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -294,6 +294,14 @@
 	return 0;
 }
 
+static bool ts_is_pdch(const struct gsm_bts_trx_ts *ts)
+{
+	return ts->pchan == GSM_PCHAN_PDCH
+		|| (ts->pchan == GSM_PCHAN_TCH_F_PDCH
+		    && (ts->flags & TS_F_PDCH_ACTIVE)
+		    && !(ts->flags & TS_F_PDCH_PENDING_MASK));
+}
+
 static int to_gsmtap(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap)
 {
 	uint8_t *data;
@@ -311,7 +319,7 @@
 		uplink = 0;
 		/* fall through */
 	case OSMO_PRIM(PRIM_PH_DATA, PRIM_OP_INDICATION):
-		if (trx->ts[tn].pchan == GSM_PCHAN_PDCH)
+		if (ts_is_pdch(&trx->ts[tn]))
 			rc = gsmtap_pdch(l1sap, &chan_type, &tn, &ss, &fn, &data,
 				&len);
 		else
@@ -542,7 +550,7 @@
 	DEBUGP(DL1P, "Rx PH-RTS.ind %02u/%02u/%02u chan_nr=%d link_id=%d\n",
 		g_time.t1, g_time.t2, g_time.t3, chan_nr, link_id);
 
-	if (trx->ts[tn].pchan == GSM_PCHAN_PDCH) {
+	if (ts_is_pdch(&trx->ts[tn])) {
 		if (L1SAP_IS_PTCCH(rts_ind->fn)) {
 			pcu_tx_rts_req(&trx->ts[tn], 1, fn, 1 /* ARFCN */,
 				L1SAP_FN2PTCCHBLOCK(fn));
@@ -806,7 +814,7 @@
 	DEBUGP(DL1P, "Rx PH-DATA.ind %02u/%02u/%02u chan_nr=%d link_id=%d\n",
 		g_time.t1, g_time.t2, g_time.t3, chan_nr, link_id);
 
-	if (trx->ts[tn].pchan == GSM_PCHAN_PDCH) {
+	if (ts_is_pdch(&trx->ts[tn])) {
 		if (len == 0)
 			return -EINVAL;
 		if (L1SAP_IS_PTCCH(fn)) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I7b873a089a3de70d980885a7539cb91997464743
Gerrit-PatchSet: 1
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
Gerrit-Reviewer: neels_test_account <neels at hofmeyr.de>



More information about the gerrit-log mailing list