aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-10-10 16:17:26 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-10-16 13:02:38 +0200
commit89357ec6cdddd481aede5cab2abb884f06ad6d08 (patch)
tree1528f414fcfe9f93ec62cc9dca0d404a71730a62
parentd763a70d681da267df19a8e37b0b8d2ef884ce31 (diff)
cfg inter-bsc activeneels/ho2-interbsc
-rw-r--r--include/osmocom/bsc/handover_cfg.h7
-rw-r--r--src/osmo-bsc/handover_decision_2.c8
2 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocom/bsc/handover_cfg.h b/include/osmocom/bsc/handover_cfg.h
index 865fab9..2ab318b 100644
--- a/include/osmocom/bsc/handover_cfg.h
+++ b/include/osmocom/bsc/handover_cfg.h
@@ -189,6 +189,13 @@ static inline const char *tdma2a(bool val)
"Disable in-call assignment\n" \
"Enable in-call assignment\n") \
\
+ HO_CFG_ONE_MEMBER(bool, hodec2_inter_bsc_active, 1, \
+ "handover2 ", "inter-bsc-ho", "0|1", a2bool, "%d", bool2i, \
+ HO_CFG_STR_HANDOVER2 \
+ "Enable or disable handover to remote-BSS" HO_CFG_STR_2 \
+ "Disable inter-BSC handover from this cell\n" \
+ "Enable inter-BSC handover from this cell (if remote neighbors are configured)\n") \
+ \
HO_CFG_ONE_MEMBER(bool, hodec2_full_tdma, subset, \
"handover2 ", "tdma-measurement", "full|subset", a2tdma, "%s", tdma2a, \
HO_CFG_STR_HANDOVER2 \
diff --git a/src/osmo-bsc/handover_decision_2.c b/src/osmo-bsc/handover_decision_2.c
index a8fff63..60b14b0 100644
--- a/src/osmo-bsc/handover_decision_2.c
+++ b/src/osmo-bsc/handover_decision_2.c
@@ -625,9 +625,17 @@ static uint8_t check_requirements_remote_bss(struct gsm_lchan *lchan,
{
uint8_t requirement = 0;
unsigned int penalty_time;
+ struct gsm_bts *current_bts = lchan->ts->trx->bts;
/* Requirement A */
+ /* the handover/assignment must not be disabled */
+ if (!ho_get_hodec2_inter_bsc_active(current_bts->ho)) {
+ LOGPHOLCHANTOREMOTE(lchan, cil, LOGL_DEBUG,
+ "not a candidate, inter-BSC handover is disabled from this BTS\n");
+ return 0;
+ }
+
/* the handover penalty timer must not run for this bts */
penalty_time = conn_penalty_time_remaining(lchan->conn, cil);
if (penalty_time) {