aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/handover_logic.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-02-12 17:25:04 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-02-16 16:11:16 +0100
commit05a3a2d5a7b780219e969b6ba2661b7e977f98ac (patch)
tree23984931736e868249a45518d53acb73c5087d2c /src/libbsc/handover_logic.c
parent3fb5dcfee32700a9d5cdcff4494f82a70a5c8419 (diff)
HO: bsc_handover_start_lchan_change(): set MS to max power on handover
For re-assignment within the same cell, keep the same MS power. But for handover to another cell, start off with that cell's configured maximum MS power. Change-Id: Ia91766d8bb8f543f514726ce9508b7747bb2bcb5
Diffstat (limited to 'src/libbsc/handover_logic.c')
-rw-r--r--src/libbsc/handover_logic.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libbsc/handover_logic.c b/src/libbsc/handover_logic.c
index 2b61c9378..52e5dd385 100644
--- a/src/libbsc/handover_logic.c
+++ b/src/libbsc/handover_logic.c
@@ -143,7 +143,15 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts,
/* copy some parameters from old lchan */
memcpy(&new_lchan->encr, &old_lchan->encr, sizeof(new_lchan->encr));
- new_lchan->ms_power = old_lchan->ms_power;
+ if (do_assignment) {
+ new_lchan->ms_power = old_lchan->ms_power;
+ new_lchan->rqd_ta = old_lchan->rqd_ta;
+ } else {
+ new_lchan->ms_power =
+ ms_pwr_ctl_lvl(new_bts->band, new_bts->ms_max_power);
+ /* FIXME: do we have a better idea of the timing advance? */
+ //new_lchan->rqd_ta = old_lchan->rqd_ta;
+ }
new_lchan->bs_power = old_lchan->bs_power;
new_lchan->rsl_cmode = old_lchan->rsl_cmode;
new_lchan->tch_mode = old_lchan->tch_mode;
@@ -153,7 +161,6 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts,
new_lchan->conn = old_lchan->conn;
new_lchan->conn->ho_lchan = new_lchan;
- /* FIXME: do we have a better idea of the timing advance? */
rc = rsl_chan_activate_lchan(new_lchan,
ho->async ? RSL_ACT_INTER_ASYNC : RSL_ACT_INTER_SYNC,
ho->ho_ref);