summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-05-08 22:03:20 +0200
committerHarald Welte <laforge@gnumonks.org>2018-05-08 23:33:32 +0200
commitf1bdf781aca6ee05d9475d260f9f1a5a81a25a03 (patch)
tree961fbeb8d6720b6377dbda2f126b084a02aa2155 /src
parentd977f5fe08e23bbb5878b52fee09d97bcd996046 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/gsm/lapdm.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index 49c2a4bb..b9e7304e 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -389,9 +389,11 @@ static int send_rslms_rll_l3_ui(struct lapdm_msg_ctx *mctx, struct msgb *msg)
/* 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);