Change in osmo-bts[master]: osmo-bts-trx: send dummy FACCH in the absense of RTP frames

fixeria gerrit-no-reply at lists.osmocom.org
Sun Aug 29 08:21:33 UTC 2021


fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/24846 )

Change subject: osmo-bts-trx: send dummy FACCH in the absense of RTP frames
......................................................................

osmo-bts-trx: send dummy FACCH in the absense of RTP frames

If for whatever reason the transmit queue of a TCH/{F,H} contains
neither speech frames nor signalling blocks, osmo-bts-trx would
currently transmit garbage.  Of course, this causes decoding
errors at the MS side.

Ideally, we should employ an ECU (Error Concealment Unit) for the
given codec in use.  However, a simpler solution is to transmit
dummy LAPDm frames over FACCH.  This is what e.g. nanoBTS does.

Change-Id: I868afecbcb6890f40c8f146e3ce00e836b794dd3
Related: OS#4823
---
M src/osmo-bts-trx/sched_lchan_tchf.c
M src/osmo-bts-trx/sched_lchan_tchh.c
2 files changed, 16 insertions(+), 2 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  dexter: Looks good to me, but someone else must approve
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c
index 689925f..8e6298c 100644
--- a/src/osmo-bts-trx/sched_lchan_tchf.c
+++ b/src/osmo-bts-trx/sched_lchan_tchf.c
@@ -530,9 +530,16 @@
 		memset(*bursts_p + 464, 0, 464);
 	}
 
-	/* no message at all */
+	/* no message at all, send a dummy L2 frame on FACCH */
 	if (!msg_tch && !msg_facch) {
+		static const uint8_t dummy[GSM_MACBLOCK_LEN] = {
+			0x03, 0x03, 0x01, /* TODO: use randomized padding */
+			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+		};
+
 		LOGL1SB(DL1P, LOGL_INFO, l1ts, br, "No TCH or FACCH prim for transmit.\n");
+		gsm0503_tch_fr_encode(*bursts_p, dummy, sizeof(dummy), 1);
 		goto send_burst;
 	}
 
diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c
index 4f03bd1..bfebb66 100644
--- a/src/osmo-bts-trx/sched_lchan_tchh.c
+++ b/src/osmo-bts-trx/sched_lchan_tchh.c
@@ -417,9 +417,16 @@
 		}
 	}
 
-	/* no message at all */
+	/* no message at all, send a dummy L2 frame on FACCH */
 	if (!msg_tch && !msg_facch && !chan_state->dl_ongoing_facch) {
+		static const uint8_t dummy[GSM_MACBLOCK_LEN] = {
+			0x03, 0x03, 0x01, /* TODO: use randomized padding */
+			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+			0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+		};
+
 		LOGL1SB(DL1P, LOGL_INFO, l1ts, br, "No TCH or FACCH prim for transmit.\n");
+		gsm0503_tch_hr_encode(*bursts_p, dummy, sizeof(dummy));
 		goto send_burst;
 	}
 

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

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I868afecbcb6890f40c8f146e3ce00e836b794dd3
Gerrit-Change-Number: 24846
Gerrit-PatchSet: 4
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210829/4f20cc92/attachment.htm>


More information about the gerrit-log mailing list