Thorkell Thorkelsson has uploaded this change for review.
tch: fix RTP clock not ticking for unhandled payload types
When the payload type from the DSP is not handled by the switch
in l1if_tch_rx(), rmsg stays NULL and we return 0 without calling
add_l1sap_header(), silently dropping a 20ms RTP tick.
Always allocate an empty RTP frame when rmsg is NULL so the RTP
clock keeps ticking.
Related: OS#5974
Change-Id: I202522ea6f83d77872a2f84d9a2622b87e829a0c
Signed-off-by: Thorkell Thorkelsson <thorkellmanithorkelsson@gmail.com>
---
M src/osmo-bts-sysmo/tch.c
1 file changed, 14 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/44/42244/1
diff --git a/src/osmo-bts-sysmo/tch.c b/src/osmo-bts-sysmo/tch.c
index b5bf04b..bbf05c1 100644
--- a/src/osmo-bts-sysmo/tch.c
+++ b/src/osmo-bts-sysmo/tch.c
@@ -598,18 +598,23 @@
case GsmL1_TchPlType_Amr_SidFirstP1:
rmsg = l1_to_rtppayload_amr(payload, payload_len, lchan);
break;
- /* FIXME: what about GsmL1_TchPlType_Amr_SidBad? not well documented. */
}
- if (rmsg)
- return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
- data_ind->measParam.fBer * 10000,
- data_ind->measParam.fLinkQuality * 10,
- data_ind->measParam.fRssi,
- data_ind->measParam.i16BurstTiming * 64,
- 0);
+ if (!rmsg) {
+ LOGPLCFN(lchan, data_ind->u32Fn, DL1P, LOGL_NOTICE,
+ "Unhandled payload type %s, generating empty RTP tick\n",
+ get_value_string(femtobts_tch_pl_names, payload_type));
+ rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
+ if (!rmsg)
+ return -ENOMEM;
+ }
- return 0;
+ return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
+ data_ind->measParam.fBer * 10000,
+ data_ind->measParam.fLinkQuality * 10,
+ data_ind->measParam.fRssi,
+ data_ind->measParam.i16BurstTiming * 64,
+ 0);
err_payload_match:
LOGPLCFN(lchan, data_ind->u32Fn, DL1P, LOGL_ERROR, "%s Rx Payload Type %s incompatible with lchan\n",
To view, visit change 42244. To unsubscribe, or for help writing mail filters, visit settings.