diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-02-12 17:25:04 +0100 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-02-16 16:11:16 +0100 |
commit | 05a3a2d5a7b780219e969b6ba2661b7e977f98ac (patch) | |
tree | 23984931736e868249a45518d53acb73c5087d2c /src/libbsc/handover_logic.c | |
parent | 3fb5dcfee32700a9d5cdcff4494f82a70a5c8419 (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.c | 11 |
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); |