Feature #2949

use RR Assignment for Handover within a cell

Added by neels over 3 years ago. Updated over 3 years ago.

Target version:
Start date:
Due date:
% Done:


Spec Reference:


Currently, we always use RSL_ACT_INTER_ASYNC and RR Handover Command, both for handover between different cells and for re-assignment within the same cell.

There are patches around to use RSL_ACT_INTRA_IMM_ASS and gsm48_send_rr_ass_cmd() for re-assignment within the same cell, instead.
However, that hasn't worked out in testing so far.

Implement Assignment by actual intra-cell assignment instead of Handover Command.

Related issues

Related to OsmoBSC - Bug #3357: osmo-bsc doesn't perform RSL MODE MODIFY on ASSIGNMENT if channel is compatible.Resolved06/26/2018

Is duplicate of OsmoBSC - Feature #3277: handover: for intra-cell re-assignment, use Assignment procedure, not HandoverIn Progress05/17/2018

Associated revisions

Revision 063868e1 (diff)
Added by Neels Hofmeyr over 3 years ago

handover_logic.c: always do inter-cell channel activation

In commit [1], the channel activation kind was modified out-of-context to use
Immediate Assignment in case of intra-cell re-assignment. This so far hasn't
worked out in tests, so instead stay with the strategy to use
RSL_ACT_INTER_ASYNC also for re-assignment within the same cell. We may move to
RSL_ACT_INTRA_IMM_ASS in a separate patch after proper testing.

[1]: 5eaa4fb821751b70ad2b864d8765ff96bd301996,
"HO: add indicators for inter-cell and async ho, use for chan act type",

Note that so far, no re-assignment within cells is triggered by the current
handover decision algorithm, so the effect will be really noticeable with
handover decision 2 that is coming up.

See feature OS#2949 which asks for implementing actual RR Assignment to
handover within a cell.

Related: OS#2949
Change-Id: Ia3d979094fa16620f1acc5933418797829710ba8


#1 Updated by neels over 3 years ago

This patch in essence came from the jolly/new_handover branch, does not seem to be sufficient.

commit adf9dc3065329714d1c67aa04600de23d7a70452
Author: Neels Hofmeyr <>
Date:   Mon Feb 12 17:28:56 2018 +0100

    use RR Assignment Command for intra-cell re-assignment

    Change-Id: I26b62731f13cd7d4217b68eb76e298a6216af896

diff --git a/src/libbsc/handover_logic.c b/src/libbsc/handover_logic.c
index cdc21f56f..2d6b6bddb 100644
--- a/src/libbsc/handover_logic.c
+++ b/src/libbsc/handover_logic.c
@@ -158,7 +158,9 @@ int bsc_handover_start(enum hodec_id from_hodec_id, struct gsm_lchan *old_lchan,
     new_lchan->conn->ho_lchan = new_lchan;

     rc = rsl_chan_activate_lchan(new_lchan,
-                     ho->async ? RSL_ACT_INTER_ASYNC : RSL_ACT_INTER_SYNC,
+                     ho->inter_cell
+                       ? (ho->async ? RSL_ACT_INTER_ASYNC : RSL_ACT_INTER_SYNC)
+                       : RSL_ACT_INTRA_IMM_ASS,
     if (rc < 0) {
         LOGPHO(ho, LOGL_INFO, "%s Failure: activate lchan rc = %d\n",
@@ -233,7 +235,10 @@ static int ho_chan_activ_ack(struct gsm_lchan *new_lchan)
     /* we can now send the 04.08 HANDOVER COMMAND to the MS
      * using the old lchan */

-    gsm48_send_ho_cmd(ho->old_lchan, new_lchan, new_lchan->ms_power, ho->ho_ref);
+    if (ho->inter_cell)
+        gsm48_send_ho_cmd(ho->old_lchan, new_lchan, new_lchan->ms_power, ho->ho_ref);
+    else
+        gsm48_send_rr_ass_cmd(ho->old_lchan, new_lchan, new_lchan->ms_power);

     /* start T3103.  We can continue either with T3103 expiration,
      * 04.08 HANDOVER COMPLETE or 04.08 HANDOVER FAIL */

#2 Updated by neels about 3 years ago

  • Is duplicate of Feature #3277: handover: for intra-cell re-assignment, use Assignment procedure, not Handover added

#3 Updated by laforge about 3 years ago

  • Related to Bug #3357: osmo-bsc doesn't perform RSL MODE MODIFY on ASSIGNMENT if channel is compatible. added

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)