diff --git a/include/osmo-bts/handover.h b/include/osmo-bts/handover.h index b08f0657f..4412ea181 100644 --- a/include/osmo-bts/handover.h +++ b/include/osmo-bts/handover.h @@ -10,5 +10,6 @@ enum { void handover_rach(struct gsm_bts_trx *trx, uint8_t chan_nr, struct gsm_lchan *lchan, uint8_t ra, uint8_t acc_delay); void handover_frame(struct gsm_lchan *lchan); +void reset_handover(struct gsm_lchan *lchan); #endif /* HANDOVER_H */ diff --git a/src/common/handover.c b/src/common/handover.c index 6dedf9ea1..cd86428d3 100644 --- a/src/common/handover.c +++ b/src/common/handover.c @@ -136,10 +136,15 @@ void handover_frame(struct gsm_lchan *lchan) LOGP(DHO, LOGL_INFO, "%s First valid frame detected\n", gsm_lchan_name(lchan)); + reset_handover(lchan); +} + +/* release handover starte */ +void reset_handover(struct gsm_lchan *lchan) +{ /* Stop T3105 */ osmo_timer_del(&lchan->ho.t3105); /* Handover process is done */ lchan->ho.active = HANDOVER_NONE; } - diff --git a/src/common/rsl.c b/src/common/rsl.c index f039f432b..09b815b29 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -833,9 +833,8 @@ static int rsl_rx_rf_chan_rel(struct gsm_lchan *lchan) msgb_queue_flush(&lchan->dl_tch_queue); } - /* deactivate handover RACH detection and timer */ - lchan->ho.active = HANDOVER_NONE; - osmo_timer_del(&lchan->ho.t3105); + /* release handover state */ + reset_handover(lchan); lchan->rel_act_kind = LCHAN_REL_ACT_RSL; rc = bts_model_rsl_chan_rel(lchan);