neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27759 )
Change subject: hodec2: apply penalty_low_rxqual_as only on assignment ......................................................................
hodec2: apply penalty_low_rxqual_as only on assignment
The penalty timer low_rxqual_as() is only supposed to apply on an intra-cell re-assignment. However, a segfault has been reported that apparently applies it to inter-BSC handover.
Make sure that this timer applies only to re-assignment. In effect this makes sure that the target bts is non-NULL and avoids the segfault.
Related: OS#5525 Change-Id: Ifdb9891fbe7e3f3423a96371def4fcbf2fc0bc0d --- M src/osmo-bsc/handover_decision_2.c 1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/59/27759/1
diff --git a/src/osmo-bsc/handover_decision_2.c b/src/osmo-bsc/handover_decision_2.c index 8627910..c88e846 100644 --- a/src/osmo-bsc/handover_decision_2.c +++ b/src/osmo-bsc/handover_decision_2.c @@ -1448,7 +1448,8 @@
/* After upgrading TCH/H to TCH/F due to bad RxQual, start penalty timer to avoid re-assignment within * the same cell again, to avoid oscillation from RxQual noise combined with congestion resolution. */ - if (!rc && is_upgrade_to_tchf(best_cand, REQUIREMENT_A_MASK)) { + if (!rc && best_cand->target.bts == best_cand->current.bts + && is_upgrade_to_tchf(best_cand, REQUIREMENT_A_MASK)) { struct gsm0808_cell_id bts_id; gsm_bts_cell_id(&bts_id, best_cand->target.bts); penalty_timers_add(lchan->conn, &lchan->conn->hodec2.penalty_timers, &bts_id,