prepare dyn TS: act lchan: fetch the channel mode a bit later

Dyn TS will add a new type of chan activation, which does not need a Channel
Mode IE. Incidentally, the dyn PDCH also doesn't need this IE if it opts for
sending a PDCH ACT instead. So it makes sense to compose the Channel Mode IE
only after the dynamic decisions are done.

Change-Id: I66d88ad6a4ae7bee1e552960fd4e92aff953125c
This commit is contained in:
Neels Hofmeyr 2016-07-23 19:49:58 +02:00
parent e2eb5cb6a1
commit cf7933892a
1 changed files with 8 additions and 8 deletions

View File

@ -446,14 +446,6 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type,
struct rsl_ie_chan_mode cm;
struct gsm48_chan_desc cd;
rc = channel_mode_from_lchan(&cm, lchan);
if (rc < 0) {
LOGP(DRSL, LOGL_ERROR,
"%s Cannot find channel mode from lchan type\n",
gsm_ts_and_pchan_name(lchan->ts));
return rc;
}
/* If a TCH_F/PDCH TS is in PDCH mode, deactivate PDCH first. */
if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH
&& (lchan->ts->flags & TS_F_PDCH_ACTIVE)) {
@ -463,6 +455,14 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type,
return rsl_ipacc_pdch_activate(lchan->ts, 0);
}
rc = channel_mode_from_lchan(&cm, lchan);
if (rc < 0) {
LOGP(DRSL, LOGL_ERROR,
"%s Cannot find channel mode from lchan type\n",
gsm_ts_and_pchan_name(lchan->ts));
return rc;
}
rsl_lchan_set_state(lchan, LCHAN_S_ACT_REQ);
ta = lchan->rqd_ta;