fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/33703 )
Change subject: osmo-bts-trx: pull the AMR header in tch_dl_dequeue() ......................................................................
osmo-bts-trx: pull the AMR header in tch_dl_dequeue()
The goal is to unify encoding functions in tx_tch[fh]_fn(), so that in a follow-up change adding CSD we could use a switch statement.
Change-Id: I15318e497b236128f779769e4fa99f307ea431ea Related: OS#1572 --- M src/osmo-bts-trx/sched_lchan_tchf.c M src/osmo-bts-trx/sched_lchan_tchh.c 2 files changed, 30 insertions(+), 12 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c index b8f8322..444cda2 100644 --- a/src/osmo-bts-trx/sched_lchan_tchf.c +++ b/src/osmo-bts-trx/sched_lchan_tchf.c @@ -402,6 +402,9 @@ LOGL1SB(DL1P, LOGL_NOTICE, l1ts, br, "Transmitting 'bad AMR frame'\n"); goto free_bad_msg; } + /* pull the AMR header, it's not being sent over Um */ + msg_tch->l2h += sizeof(struct amr_hdr); + len -= sizeof(struct amr_hdr); break; default: inval_mode2: @@ -490,12 +493,13 @@ /* the first FN 4,13,21 defines that CMI is included in frame, * the first FN 0,8,17 defines that CMR is included in frame. */ - gsm0503_tch_afs_encode(bursts_p, msg->l2h + sizeof(struct amr_hdr), - msgb_l2len(msg) - sizeof(struct amr_hdr), - !sched_tchf_dl_amr_cmi_map[br->fn % 26], - chan_state->codec, chan_state->codecs, - chan_state->dl_ft, - chan_state->dl_cmr); + gsm0503_tch_afs_encode(bursts_p, + msgb_l2(msg), msgb_l2len(msg), + !sched_tchf_dl_amr_cmi_map[br->fn % 26], + chan_state->codec, + chan_state->codecs, + chan_state->dl_ft, + chan_state->dl_cmr); } else { gsm0503_tch_fr_encode(bursts_p, msg->l2h, msgb_l2len(msg), 1); } diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c index 97b8582..541feab 100644 --- a/src/osmo-bts-trx/sched_lchan_tchh.c +++ b/src/osmo-bts-trx/sched_lchan_tchh.c @@ -412,12 +412,13 @@ /* the first FN 4,13,21 or 5,14,22 defines that CMI is included * in frame, the first FN 0,8,17 or 1,9,18 defines that CMR is * included in frame. */ - gsm0503_tch_ahs_encode(bursts_p, msg->l2h + sizeof(struct amr_hdr), - msgb_l2len(msg) - sizeof(struct amr_hdr), - !sched_tchh_dl_amr_cmi_map[br->fn % 26], - chan_state->codec, chan_state->codecs, - chan_state->dl_ft, - chan_state->dl_cmr); + gsm0503_tch_ahs_encode(bursts_p, + msgb_l2(msg), msgb_l2len(msg), + !sched_tchh_dl_amr_cmi_map[br->fn % 26], + chan_state->codec, + chan_state->codecs, + chan_state->dl_ft, + chan_state->dl_cmr); } else { gsm0503_tch_hr_encode(bursts_p, msg->l2h, msgb_l2len(msg)); }