aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Sperling <ssperling@sysmocom.de>2018-07-31 18:53:55 +0200
committerHarald Welte <laforge@gnumonks.org>2018-08-22 19:50:33 +0000
commit0ab50934d5afc6fa6d187845ae46d1d98b0e872a (patch)
treeb6333237a48ba5e68f1565ee86a72d183974070e
parent4553890d702a235aca35b7d3004ac530e1d6da59 (diff)
fix conditions for sending fill frames during RTS IND
Rewrite an if-statement to better match the description given in GSM 05.08, and quote the relevant paragraph in a comment. Since this entire block of code only runs for SDCCH and TCH, this new condition should provide the same result expect that in accordance with the standard we now stop sending fill-frames on a signalling TCH if DTX is in use. Also note that this code should already cover parts of the patch proposed at https://gerrit.osmocom.org/c/osmo-bts/+/5753 The changes to osmo-bts-litecell15/l1_if.c proposed there should be equivalent to the fill-frame logic in this existing common BTS code which is handling RTS IND. Change-Id: Ibaf3ecbd0bde4f37e799d5e2f5d00dc695e0139a Related: OS#1950
-rw-r--r--src/common/l1sap.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 00ead8d5..b8cec0e7 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -754,9 +754,16 @@ static int l1sap_ph_rts_ind(struct gsm_bts_trx *trx,
memcpy(p + 2, si, GSM_MACBLOCK_LEN - 2);
} else
memcpy(p + 2, fill_frame, GSM_MACBLOCK_LEN - 2);
- } else if ((!L1SAP_IS_CHAN_TCHF(chan_nr) && !L1SAP_IS_CHAN_TCHH(chan_nr))
- || lchan->rsl_cmode == RSL_CMOD_SPD_SIGN) {
- /* send fill frame only, if not TCH/x != Signalling, otherwise send empty frame */
+ } else if (L1SAP_IS_CHAN_SDCCH4(chan_nr) || L1SAP_IS_CHAN_SDCCH8(chan_nr) ||
+ (lchan->rsl_cmode == RSL_CMOD_SPD_SIGN && !lchan->ts->trx->bts->dtxd)) {
+ /*
+ * SDCCH or TCH in signalling mode without DTX.
+ *
+ * Send fill frame according to GSM 05.08, section 8.3: "On the SDCCH and on the
+ * half rate speech traffic channel in signalling only mode DTX is not allowed.
+ * In these cases and during signalling on the TCH when DTX is not used, the same
+ * L2 fill frame shall be transmitted in case there is nothing else to transmit."
+ */
p = msgb_put(msg, GSM_MACBLOCK_LEN);
memcpy(p, fill_frame, GSM_MACBLOCK_LEN);
} /* else the message remains empty, so TCH frames are sent */