diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-07-05 12:59:50 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2021-07-09 11:51:40 +0000 |
commit | 052934d0e6689cfef20b909942562ab9a09eb515 (patch) | |
tree | 1272cc1046e581c9e7f3b67e1d8eaabd20bd86f0 | |
parent | 9d4865ecaea5dc17e3058777620d52e8efa4c8a5 (diff) |
hodec1: use same automatic FULL/SUBSET choice as in hodec2
So far handover decision 1 uses the FULL or SUBSET TDMA measurements
across all measurement reports, depending on whether the last
measurement report indicates that DTX is in use or not.
Handover decision 2 since recently uses TDMA_MEAS_SET_AUTO to choose for
each individual measurement report whether to use the FULL or the SUBSET
value, depending on each single report's DTX use flag.
Also switch handover decision 1 to heed every single report's DTX flag,
by simply using TDMA_MEAS_SET_AUTO, replacing the current decision.
Change-Id: Iebe980254b8c4a53ef9e7d720e417dc67077eff7
-rw-r--r-- | src/osmo-bsc/handover_decision.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/osmo-bsc/handover_decision.c b/src/osmo-bsc/handover_decision.c index 220fa1c7e..2fb466cbe 100644 --- a/src/osmo-bsc/handover_decision.c +++ b/src/osmo-bsc/handover_decision.c @@ -214,7 +214,6 @@ static void attempt_handover(struct gsm_meas_rep *mr) static void on_measurement_report(struct gsm_meas_rep *mr) { struct gsm_bts *bts = mr->lchan->ts->trx->bts; - enum tdma_meas_set meas_set; int av_rxlev; unsigned int pwr_interval; @@ -231,18 +230,16 @@ static void on_measurement_report(struct gsm_meas_rep *mr) return; } - meas_set = (mr->flags & MEAS_REP_F_DL_DTX) ? TDMA_MEAS_SET_SUB : TDMA_MEAS_SET_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, TDMA_MEAS_FIELD_RXLEV, TDMA_MEAS_DIR_DL, meas_set, + av_rxlev = get_meas_rep_avg(mr->lchan, TDMA_MEAS_FIELD_RXLEV, TDMA_MEAS_DIR_DL, TDMA_MEAS_SET_AUTO, ho_get_hodec1_rxlev_avg_win(bts->ho)); /* Interference HO */ if (rxlev2dbm(av_rxlev) > -85 && - meas_rep_n_out_of_m_be(mr->lchan, TDMA_MEAS_FIELD_RXQUAL, TDMA_MEAS_DIR_DL, meas_set, 3, 4, 5)) { + meas_rep_n_out_of_m_be(mr->lchan, TDMA_MEAS_FIELD_RXQUAL, TDMA_MEAS_DIR_DL, TDMA_MEAS_SET_AUTO, 3, 4, 5)) { LOGPC(DHO, LOGL_INFO, "HO cause: Interference HO av_rxlev=%d dBm\n", rxlev2dbm(av_rxlev)); attempt_handover(mr); @@ -250,7 +247,7 @@ static void on_measurement_report(struct gsm_meas_rep *mr) } /* Bad Quality */ - if (meas_rep_n_out_of_m_be(mr->lchan, TDMA_MEAS_FIELD_RXQUAL, TDMA_MEAS_DIR_DL, meas_set, 3, 4, 5)) { + if (meas_rep_n_out_of_m_be(mr->lchan, TDMA_MEAS_FIELD_RXQUAL, TDMA_MEAS_DIR_DL, TDMA_MEAS_SET_AUTO, 3, 4, 5)) { LOGPC(DHO, LOGL_INFO, "HO cause: Bad Quality av_rxlev=%d dBm\n", rxlev2dbm(av_rxlev)); attempt_handover(mr); return; |