aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-06-29 12:13:51 +0200
committerHarald Welte <laforge@gnumonks.org>2011-06-29 12:13:51 +0200
commit7ca604bcd3d635143236458dfeba97829d07b321 (patch)
tree66785021f1748d339cfb07bc4aaf08caf338e175
parent6420774b3b2e1658fa7f3d788e81d2305d6f10c3 (diff)
LAPDm: Uplink SACCH frames use format B, not format B4
-rw-r--r--src/gsm/lapdm.c17
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;