Change in openbsc[master]: Use proper measurement for handover

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

gerrit-no-reply at lists.osmocom.org gerrit-no-reply at lists.osmocom.org
Tue May 17 14:06:36 UTC 2016


>From Max <msuraev at sysmocom.de>:

Max has uploaded a new change for review.

  https://gerrit.osmocom.org/66

Change subject: Use proper measurement for handover
......................................................................

Use proper measurement for handover

Previously *FULL measurements were always used for handover
decisions. Those are incorrect in case of DTX - check if it was enabled
and use *SUB instead.

Note: *SUB values have higher variance so there might be more "bad"
values compared to *FULL although real quality remains the same.

Change-Id: I95e8e544047a83a256e057a47458678f40a19a15
Related: OS#1701
---
M openbsc/src/libbsc/handover_decision.c
1 file changed, 12 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/66/66/1

diff --git a/openbsc/src/libbsc/handover_decision.c b/openbsc/src/libbsc/handover_decision.c
index 24c0f79..0f07bca 100644
--- a/openbsc/src/libbsc/handover_decision.c
+++ b/openbsc/src/libbsc/handover_decision.c
@@ -228,6 +228,7 @@
 static int process_meas_rep(struct gsm_meas_rep *mr)
 {
 	struct gsm_network *net = mr->lchan->ts->trx->bts->network;
+	enum meas_rep_field dlev, dqual;
 	int av_rxlev;
 
 	/* we currently only do handover for TCH channels */
@@ -239,22 +240,28 @@
 		return 0;
 	}
 
+	if (mr->flags & MEAS_REP_F_DL_DTX) {
+		dlev = MEAS_REP_DL_RXLEV_SUB;
+		dqual = MEAS_REP_DL_RXQUAL_SUB;
+	} else {
+		dlev = MEAS_REP_DL_RXLEV_FULL;
+		dqual = MEAS_REP_DL_RXQUAL_FULL;
+	}
+
 	/* parse actual neighbor cell info */
 	if (mr->num_cell > 0 && mr->num_cell < 7)
 		process_meas_neigh(mr);
 
-	av_rxlev = get_meas_rep_avg(mr->lchan, MEAS_REP_DL_RXLEV_FULL,
+	av_rxlev = get_meas_rep_avg(mr->lchan, dlev,
 				    net->handover.win_rxlev_avg);
 
 	/* Interference HO */
 	if (rxlev2dbm(av_rxlev) > -85 &&
-	    meas_rep_n_out_of_m_be(mr->lchan, MEAS_REP_DL_RXQUAL_FULL,
-				   3, 4, 5))
+	    meas_rep_n_out_of_m_be(mr->lchan, dqual, 3, 4, 5))
 		return attempt_handover(mr);
 
 	/* Bad Quality */
-	if (meas_rep_n_out_of_m_be(mr->lchan, MEAS_REP_DL_RXQUAL_FULL,
-				   3, 4, 5))
+	if (meas_rep_n_out_of_m_be(mr->lchan, dqual, 3, 4, 5))
 		return attempt_handover(mr);
 
 	/* Low Level */

-- 
To view, visit https://gerrit.osmocom.org/66
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I95e8e544047a83a256e057a47458678f40a19a15
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>



More information about the OpenBSC mailing list