aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-litecell15/l1_if.c
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-09-17 14:15:03 +0200
committerMax <msuraev@sysmocom.de>2016-09-24 15:09:31 +0200
commit654175f33bd412671e3ef8cdd65c0689d10f278c (patch)
tree9861adb1bf44de4ff5edf02025e7fc7795f33218 /src/osmo-bts-litecell15/l1_if.c
parenteb08a87be52bf55a78c12689f1e5c7cff627cbbc (diff)
DTX: check Marker bit to send ONSET to L1
If Marker bit is set than it's a talkspurt which we have to explicitly indicate to L1 by first sending ONSET message and than actual voice data in a separate message. This change affect sysmobts and LC15 hw. Change-Id: I88c41568bcb0d82699f617adc4ad192603dd1bb6 Related: OS#1750
Diffstat (limited to 'src/osmo-bts-litecell15/l1_if.c')
-rw-r--r--src/osmo-bts-litecell15/l1_if.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index 21d047a5..0779dacc 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -469,7 +469,8 @@ static int ph_tch_req(struct gsm_bts_trx *trx, struct msgb *msg,
if (!l1if_tch_encode(lchan,
l1p->u.phDataReq.msgUnitParam.u8Buffer,
&l1p->u.phDataReq.msgUnitParam.u8Size,
- msg->data, msg->len, u32Fn)) {
+ msg->data, msg->len, u32Fn,
+ l1sap->u.tch.marker)) {
msgb_free(nmsg);
nmsg = NULL;
}
@@ -503,7 +504,13 @@ static int ph_tch_req(struct gsm_bts_trx *trx, struct msgb *msg,
/* send message to DSP's queue */
osmo_wqueue_enqueue(&fl1->write_q[MQ_L1_WRITE], nmsg);
- msgb_free(msg);
+ if (l1sap->u.tch.marker) { /* Send voice after ONSET was sent */
+ l1sap->u.tch.marker = 0;
+ return ph_tch_req(trx, l1sap->oph.msg, l1sap);
+ }
+
+ if (msg)
+ msgb_free(msg);
return 0;
}