aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_04_08_utils.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2009-11-18 19:30:24 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2009-11-19 09:40:03 +0100
commit25b1e25dd400dda565c59a05c9abcbf08c162080 (patch)
tree60e568861ce4b84ddef15a51e09baab6bc695a24 /openbsc/src/gsm_04_08_utils.c
parent231163d3658d0c48d3e3dec786735244e66b8b7e (diff)
[gsm48] Send the IPA CRCX after the chan modify ack
Change the CRCX after the channel has been modified.
Diffstat (limited to 'openbsc/src/gsm_04_08_utils.c')
-rw-r--r--openbsc/src/gsm_04_08_utils.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/openbsc/src/gsm_04_08_utils.c b/openbsc/src/gsm_04_08_utils.c
index b8fe43069..1a0af3735 100644
--- a/openbsc/src/gsm_04_08_utils.c
+++ b/openbsc/src/gsm_04_08_utils.c
@@ -599,16 +599,12 @@ int gsm48_lchan_modify(struct gsm_lchan *lchan, u_int8_t lchan_mode,
if (rc < 0)
return rc;
- /* FIXME: we not only need to do this after mode modify, but
- * also after channel activation */
- if (is_ipaccess_bts(lchan->ts->trx->bts) && lchan_mode != GSM48_CMODE_SIGN)
- rc = rsl_ipacc_crcx(lchan);
-
return rc;
}
int gsm48_rx_rr_modif_ack(struct msgb *msg)
{
+ int rc;
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_chan_mode_modify *mod =
(struct gsm48_chan_mode_modify *) gh->data;
@@ -641,5 +637,11 @@ int gsm48_rx_rr_modif_ack(struct msgb *msg)
/* We've successfully modified the MS side of the channel,
* now go on to modify the BTS side of the channel */
- return rsl_chan_mode_modify_req(msg->lchan);
+ rc = rsl_chan_mode_modify_req(msg->lchan);
+
+ /* FIXME: we not only need to do this after mode modify, but
+ * also after channel activation */
+ if (is_ipaccess_bts(msg->lchan->ts->trx->bts) && mod->mode != GSM48_CMODE_SIGN)
+ rsl_ipacc_crcx(msg->lchan);
+ return rc;
}