aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-06-01 17:00:59 +0200
committerIvan Kluchnikov <kluchnikovi@gmail.com>2018-09-03 14:49:18 +0300
commit133faf012160c767bf78b3a7f70646b5449b36de (patch)
tree061a4cc9c88344336d44917f15631d7efa40425e
parentda3e33f38ba2e6c141e3958859cd0afe1215f4bc (diff)
HO: Count neighbor measurements and reduce window of neigh_meas_avg
Always start with a counter of 0 for a new measurement report. If the neigh_meas_avg is caluclated over the given window, the window is reduced, if there are less measurement reports received so far. Change-Id: If476838dc14729b894693f371e181ac657b84017
-rw-r--r--openbsc/src/libbsc/handover_decision.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/handover_decision.c b/openbsc/src/libbsc/handover_decision.c
index eefa009f2..354363ac2 100644
--- a/openbsc/src/libbsc/handover_decision.c
+++ b/openbsc/src/libbsc/handover_decision.c
@@ -76,6 +76,13 @@ static int neigh_meas_avg(struct neigh_meas_proc *nmp, int window)
unsigned int i, idx;
int avg = 0;
+ /* reduce window to the actual number of existing measurements */
+ if (window < nmp->rxlev_cnt)
+ window = nmp->rxlev_cnt;
+ /* this should never happen */
+ if (window == 0)
+ return 0;
+
idx = calc_initial_idx(ARRAY_SIZE(nmp->rxlev),
nmp->rxlev_cnt % ARRAY_SIZE(nmp->rxlev),
window);
@@ -154,6 +161,7 @@ static void process_meas_neigh(struct gsm_meas_rep *mr)
nmp->arfcn = mrc->arfcn;
nmp->bsic = mrc->bsic;
+ nmp->rxlev_cnt = 0;
idx = nmp->rxlev_cnt % ARRAY_SIZE(nmp->rxlev);
nmp->rxlev[idx] = mrc->rxlev;
nmp->rxlev_cnt++;