On Tue, Feb 13, 2018 at 10:01:11PM +0300, Ivan Kluchnikov wrote:
[...]
For tests, I called bsc_handover_start function from
different parts of the
code and for different states of the call and checked media and signalling
after and during HO procedure.
Nice idea :)
So one of the main improvement which should be
implemented is an automated
test suite for HO procedure which will cover all stages of the call.
Our TTCN-3 test suite is probably a good place to put this.
We also have the osmo-gsm-tester, to verify with real hardware.
gsm48_send_ho_cmd(ho->old_lchan, new_lchan,
0, ho->ho_ref);
+ new_lchan->conn->in_handover = 1;
+
In current osmo-bsc master, we already set conn->ho_lchan before sending
out
the chan activation request. I'd actually assume setting the flag only now,
after the activ ack, is a bit too late?
I set it right after gsm48_send_ho_cmd, because sending of HO CMD is the
actual start of handover procedure (as I understand specs).
Ah, from the context of the original lchan, starting to be in handover probably
is at this point. But from the conn's perspective I'd like to think of it
starting to be in handover the moment we've decided that we want it to
handover, i.e. from bsc_handover_start(), where we initially choose the lchan
to handover to and start to chan-activ that. So ok, it's just a matter of
perspective.
/* start T3103. We can continue either with
T3103 expiration,
* 04.08 HANDOVER COMPLETE or 04.08 HANDOVER FAIL */
ho->T3103.cb = ho_T3103_cb;
@@ -221,7 +230,8 @@ static int ho_chan_activ_ack(struct gsm_lchan
*new_lchan)
osmo_timer_schedule(&ho->T3103, 10,
0);
/* create a RTP connection */
- if (is_ipaccess_bts(new_lchan->ts->trx->bts))
+ if (is_ipaccess_bts(new_lchan->ts->trx->bts) &&
+ new_lchan->tch_mode !=
GSM48_CMODE_SIGN)
rsl_ipacc_crcx(new_lchan);
Please explain ... what case / behavior is this fixing?
Do we ever see CMODE_SIGN handovers?
Would we also need to check for GSM48_CMODE_DATA_*?
Yes, handover can be initiated in any mode of lchan and we saw handovers
for lchans in GSM48_CMODE_SIGN mode.
So I think we should be able to cover this case because I didn't find any
mention in the specs that this case is prohibited for HO.
I don't know if HO is allowed for CSD (GSM48_CMODE_DATA_*), it should be
checked.
But if it is prohibited for CSD, I think we should check and block it on
the stage of bsc_handover_start or earlier.
So, what is CMODE_DATA, is it for PDCH / GPRS data?
As far as osmo-bsc is concerned, a timeslot used for data appears as "not in
use", osmo-bts leaves operation of PDCH to the pcu. I don't think receiving a
handover for a data ts is possible, because they are no lchans.
Or is CMODE_DATA something I don't know about yet? :)
[...]
Thanks for the remaining explanations, which help a lot to clarify.
FYI, one of my next tasks is to implement the inter-BSC handover part for
osmo-bsc, and it's likely that the MSC part for inter-BSC handover will follow
or go along with it; for which your patches and comments will be very helpful.
~N