neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/24797 )


Change subject: hodec2: fix low rxqual tch/h<->tch/f oscillation
......................................................................

hodec2: fix low rxqual tch/h<->tch/f oscillation

Related: SYS#5198
Change-Id: I96cd5a494e661ba3bb0b6d22d25a9968d2a6813c
---
M src/osmo-bsc/handover_decision_2.c
M tests/handover/handover_tests.ok
M tests/handover/test_amr_tch_h_to_f_rxqual_oscillation.ho_vty
3 files changed, 15 insertions(+), 13 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/97/24797/1

diff --git a/src/osmo-bsc/handover_decision_2.c 
b/src/osmo-bsc/handover_decision_2.c
index 4fa41fb..1fa3c2a 100644
--- a/src/osmo-bsc/handover_decision_2.c
+++ b/src/osmo-bsc/handover_decision_2.c
@@ -1170,6 +1170,7 @@
        bool handover;
        int neighbors_count = 0;
        bool tch_f_with_low_rxlev;
+       bool tch_f_with_low_rxqual;

        OSMO_ASSERT(candidates);

@@ -1190,11 +1191,20 @@
        tch_f_with_low_rxlev = (lchan->type == GSM_LCHAN_TCH_F
                                && rxlev_current >= 0
                                && rxlev2dbm(rxlev_current) < 
ho_get_hodec2_min_rxlev(bts->ho));
+       tch_f_with_low_rxqual = false;
+       if (lchan->type == GSM_LCHAN_TCH_F) {
+               int av_rxqual = get_meas_rep_avg(lchan,
+                                                
ho_get_hodec2_full_tdma(bts->ho) ?
+                                                MEAS_REP_DL_RXQUAL_FULL : 
MEAS_REP_DL_RXQUAL_SUB,
+                                                
ho_get_hodec2_rxqual_avg_win(bts->ho));
+               if (av_rxqual >= 0 && av_rxqual > 
ho_get_hodec2_min_rxqual(bts->ho))
+                       tch_f_with_low_rxqual = true;
+       }

        /* See if re-assignment within the same cell can resolve congestion.
-        * But: when TCH/F has low rxlev, do not re-assign. If a low rxlev 
TCH/F were re-assigned to TCH/H, we would
-        * subsequently oscillate back to TCH/F due to low rxlev. So skip TCH/F 
with low rxlev. */
-       if (assignment && !tch_f_with_low_rxlev)
+        * But: when TCH/F has low rxlev or rxqual, do not re-assign. If a low 
rxlev TCH/F were re-assigned to TCH/H, we
+        * would subsequently oscillate back to TCH/F due to low rxlev/rxqual. 
So skip TCH/F with low ratings. */
+       if (assignment && !(tch_f_with_low_rxlev || tch_f_with_low_rxqual))
                collect_assignment_candidate(lchan, clist, candidates, 
rxlev_current);

        if (handover) {
diff --git a/tests/handover/handover_tests.ok b/tests/handover/handover_tests.ok
index 7de70e1..b76c032 100644
--- a/tests/handover/handover_tests.ok
+++ b/tests/handover/handover_tests.ok
@@ -12,6 +12,7 @@
 pass test_amr_tch_h_to_f_rxlev_oscillation.ho_vty
 pass test_amr_tch_h_to_f_rxqual.ho_vty
 pass test_amr_tch_h_to_f_rxqual_congested.ho_vty
+pass test_amr_tch_h_to_f_rxqual_oscillation.ho_vty
 pass test_balance_congestion.ho_vty
 pass test_balance_congestion_2.ho_vty
 pass test_balance_congestion_by_percentage.ho_vty
diff --git a/tests/handover/test_amr_tch_h_to_f_rxqual_oscillation.ho_vty 
b/tests/handover/test_amr_tch_h_to_f_rxqual_oscillation.ho_vty
index a98e917..e628f03 100644
--- a/tests/handover/test_amr_tch_h_to_f_rxqual_oscillation.ho_vty
+++ b/tests/handover/test_amr_tch_h_to_f_rxqual_oscillation.ho_vty
@@ -17,13 +17,4 @@

 meas-rep lchan 0 0 1 0 rxlev 30 rxqual 6 ta 0
 congestion-check
-# FAIL: should stay on TCH/F because rxqual is low, do not oscillate between 
TCH/F and /H.
-expect-as from lchan 0 0 1 0 to lchan 0 0 4 0
-expect-ts-use trx 0 0 states * - - - TCH/H- - - *
-meas-rep lchan 0 0 4 0 rxlev 30 rxqual 6 ta 0
-expect-as from lchan 0 0 4 0 to lchan 0 0 1 0
-expect-ts-use trx 0 0 states * TCH/F - - - - - *
-meas-rep lchan 0 0 1 0 rxlev 30 rxqual 6 ta 0
-congestion-check
-expect-as from lchan 0 0 1 0 to lchan 0 0 4 0
-expect-ts-use trx 0 0 states * - - - TCH/H- - - *
+expect-no-chan

--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/24797
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I96cd5a494e661ba3bb0b6d22d25a9968d2a6813c
Gerrit-Change-Number: 24797
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>
Gerrit-MessageType: newchange

Reply via email to