diff options
author | Harald Welte <laforge@gnumonks.org> | 2011-06-29 12:13:51 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2011-06-29 12:13:51 +0200 |
commit | 7ca604bcd3d635143236458dfeba97829d07b321 (patch) | |
tree | 66785021f1748d339cfb07bc4aaf08caf338e175 /src | |
parent | 6420774b3b2e1658fa7f3d788e81d2305d6f10c3 (diff) |
LAPDm: Uplink SACCH frames use format B, not format B4
Diffstat (limited to 'src')
-rw-r--r-- | src/gsm/lapdm.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c index 242544d3..2679ca06 100644 --- a/src/gsm/lapdm.c +++ b/src/gsm/lapdm.c @@ -1592,11 +1592,18 @@ static int l2_ph_data_ind(struct msgb *msg, struct lapdm_entity *le, uint8_t cha sapi = 0; } else { if (mctx.link_id & 0x40) { - /* It was received from network on SACCH, thus - * lapdm_fmt must be B4 */ - mctx.lapdm_fmt = LAPDm_FMT_B4; - mctx.n201 = N201_B4; - LOGP(DLLAPDM, LOGL_INFO, "fmt=B4\n"); + /* It was received from network on SACCH */ + + /* If sent by BTS, lapdm_fmt must be B4 */ + if (le->mode == LAPDM_MODE_MS) { + mctx.lapdm_fmt = LAPDm_FMT_B4; + mctx.n201 = N201_B4; + LOGP(DLLAPDM, LOGL_INFO, "fmt=B4\n"); + } else { + mctx.lapdm_fmt = LAPDm_FMT_B; + mctx.n201 = N201_AB_SACCH; + LOGP(DLLAPDM, LOGL_INFO, "fmt=B\n"); + } /* SACCH frames have a two-byte L1 header that * OsmocomBB L1 doesn't strip */ mctx.tx_power_ind = msg->l2h[0] & 0x1f; |