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 | 4e3db634da715daf0c275cee11a97bad3136e724 (patch) | |
tree | 44c3f034e2ef17bbd5281533a2a190eaf4456018 /src/libbsc | |
parent | 6dff51d583bbdd2beb9bbbc27ba65abf1df99a9c (diff) |
HO: cosmetic: bsc_handover_start_lchan_change(): tweak local vars
To keep this cosmetic change apart from subsequent functional changes:
have a local do_assigment flag and a local network pointer.
Change-Id: I09684dcf2a00e3d930e058cc1c925ad6e59b1468
Diffstat (limited to 'src/libbsc')
-rw-r--r-- | src/libbsc/handover_logic.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libbsc/handover_logic.c b/src/libbsc/handover_logic.c index b7f350ff3..fad4a3381 100644 --- a/src/libbsc/handover_logic.c +++ b/src/libbsc/handover_logic.c @@ -93,10 +93,12 @@ static struct bsc_handover *bsc_ho_by_old_lchan(struct gsm_lchan *old_lchan) int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts, enum gsm_chan_t new_lchan_type) { + struct gsm_network *network; struct gsm_lchan *new_lchan; struct bsc_handover *ho; static uint8_t ho_ref = 0; int rc; + bool do_assignment = false; /* don't attempt multiple handovers for the same lchan at * the same time */ @@ -106,8 +108,14 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts, DEBUGP(DHO, "Beginning with handover operation" "(old_lchan on BTS %u, new BTS %u) ...\n", old_lchan->ts->trx->bts->nr, new_bts->nr); + /* No new BTS? Then it shall be assignment within the same BTS. */ + if (!new_bts) + new_bts = old_lchan->ts->trx->bts; + do_assignment = (new_bts == old_lchan->ts->trx->bts); - rate_ctr_inc(&new_bts->network->bsc_ctrs->ctr[BSC_CTR_HANDOVER_ATTEMPTED]); + network = new_bts->network; + + rate_ctr_inc(&network->bsc_ctrs->ctr[BSC_CTR_HANDOVER_ATTEMPTED]); if (!old_lchan->conn) { LOGP(DHO, LOGL_ERROR, "Old lchan lacks connection data.\n"); @@ -117,7 +125,7 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts, new_lchan = lchan_alloc(new_bts, new_lchan_type, 0); if (!new_lchan) { LOGP(DHO, LOGL_NOTICE, "No free channel for %s\n", gsm_lchant_name(new_lchan_type)); - rate_ctr_inc(&new_bts->network->bsc_ctrs->ctr[BSC_CTR_HANDOVER_NO_CHANNEL]); + rate_ctr_inc(&network->bsc_ctrs->ctr[BSC_CTR_HANDOVER_NO_CHANNEL]); return -ENOSPC; } @@ -130,7 +138,7 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *new_bts, ho->old_lchan = old_lchan; ho->new_lchan = new_lchan; ho->ho_ref = ho_ref++; - if (old_lchan->ts->trx->bts != new_bts) { + if (!do_assignment) { ho->inter_cell = true; ho->async = true; } |