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
This commit is contained in:
Harald Welte 2018-05-08 22:03:20 +02:00
parent d977f5fe08
commit f1bdf781ac
1 changed files with 5 additions and 3 deletions

View File

@ -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);