lapdm: send_rslms_rll_l3_ui(): Don't include B4/SACCH IE unless needed
The RSL_IE_MS_POWER / RSL_IE_TIMING_ADVANCE is how we communicate
the SACCH L1 header values on the MS side between LAPDm and L3 (which
is a non-standard use of RSL).
However, those IEs only maek sense on the SACCH, where we have B4 frame
format and where we actually have a L1 header containing related
information. Let's make sure to skip those IEs on regular RLL UNIT DATA
INDICATION happening on other channel types.
Change-Id: I6f13e02192531479287f71de674d17ca2ceabdc6
Closes: OS#3249
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index 49c2a4b..b9e7304 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -389,9 +389,11 @@
/* Add the RSL + RLL header */
msgb_tv16_push(msg, RSL_IE_L3_INFO, l3_len);
- /* Add two IEs carrying MS power and TA values */
- msgb_tv_push(msg, RSL_IE_MS_POWER, mctx->tx_power_ind);
- msgb_tv_push(msg, RSL_IE_TIMING_ADVANCE, mctx->ta_ind);
+ /* Add two non-standard IEs carrying MS power and TA values for B4 (SACCH) */
+ if (mctx->lapdm_fmt == LAPDm_FMT_B4) {
+ msgb_tv_push(msg, RSL_IE_MS_POWER, mctx->tx_power_ind);
+ msgb_tv_push(msg, RSL_IE_TIMING_ADVANCE, mctx->ta_ind);
+ }
rsl_rll_push_hdr(msg, RSL_MT_UNIT_DATA_IND, mctx->chan_nr,
mctx->link_id, 1);