aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-07-07 08:24:32 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2017-12-01 03:37:44 +0100
commit80a25c31692e6317f38e2b2d88991bfa03ed7e55 (patch)
treee537d938fe2df79bf3f78b262b7de50fba8952b0 /src/libmsc
parent57fc8bf8c4a79c40bd885374fbe0615d6d029102 (diff)
HO: New improved handover algorithm
The handover algorithm selects the best cell, tries to solve congestion of cells and forces handover in case of bad radio link: Handover shall ensure that the mobile station is always on the best cell during a call. This results in best speech quality and allows a lower TX level (up-link) to save battery and reduce interference. Sometimes this is not desirable, especially if a cell with large coverage becomes congested after handover. In this situation it makes sense to balance the usage between cells to prevent congestion. If a cell is congested, one or several mobile stations need to be handovered to a different cell, even if that cell is not the best cell for these mobile station. In case that a mobile station needs to handover to prevent a loss of radio link, it makes sense to handover it to a cell that is congested afterwards. In this situation, a different mobile station on the congested target cell can be handovered to a non-congested neighbor cell, to solve or balance the congestion. Because congestion of TCH/F and TCH/H is handled individually or bad quality might require change from TCH/H to TCH/F, assignment instead of handover might be used to change the channel within the same BTS. This new algorithm handles both assigment and handover depending on the target BTS.
Diffstat (limited to 'src/libmsc')
-rw-r--r--src/libmsc/vty_interface_layer3.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libmsc/vty_interface_layer3.c b/src/libmsc/vty_interface_layer3.c
index 163e58e32..9e7a948da 100644
--- a/src/libmsc/vty_interface_layer3.c
+++ b/src/libmsc/vty_interface_layer3.c
@@ -631,7 +631,8 @@ DEFUN(ena_subscr_handover,
}
/* now start the handover */
- ret = bsc_handover_start(conn->lchan, bts);
+ ret = bsc_handover_start(conn->lchan, bts,
+ (conn->lchan->type != GSM_LCHAN_TCH_H));
if (ret != 0) {
vty_out(vty, "%% Handover failed with errno %d.%s",
ret, VTY_NEWLINE);