This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Neels Hofmeyr gerrit-no-reply at lists.osmocom.orgNeels Hofmeyr has uploaded this change for review. ( https://gerrit.osmocom.org/12401 Change subject: fix call-during-call: switch off re-using lchan during assignment ...................................................................... fix call-during-call: switch off re-using lchan during assignment Disable lchan re-use on repeated Assignment Requests from the MSC, in order to enable switching over to a new call that is coming in during an ongoing call. This disables a rare and untested scenario for the benefit of a very common one: call during call. It adds a feature by disabling code :) The long-term way to support call-during-call, as well as Channel Mode Modify, would be to rather re-use the old lchan and implement FSM states to re-route the audio. But that is a task for another day. A more detailed explanation is given in the '#if 0' section added by this patch. To really get call-during-call working, osmo-msc also needs a fix, see the change-id in 'Related' below. Related: OS#3735, osmo-msc I0ba216b737909e92080a722db26e3577726c63cb Change-Id: I0c00ec2c120e5008281755adcd4944a3ce4d8355 --- M src/osmo-bsc/assignment_fsm.c 1 file changed, 37 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/01/12401/1 diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c index 93362f8..8f236d1 100644 --- a/src/osmo-bsc/assignment_fsm.c +++ b/src/osmo-bsc/assignment_fsm.c @@ -251,6 +251,9 @@ new_lchan->nr); } +#if 0 +Code using this is currently disabled, search for lchan_type_compat_with_mode below. + static bool lchan_type_compat_with_mode(enum gsm_chan_t type, enum gsm48_chan_mode chan_mode, int full_rate) { @@ -290,6 +293,7 @@ return false; } } +#endif void assignment_fsm_init() { @@ -337,6 +341,38 @@ return; } +#if 0 + ------- + This bit of code would re-use an existing lchan if it already satisfies the + mode and rate requested by the MSC. + + That is a nice idea per se, but the only practical benefit is when we were out + of SDCCH channels and assigned a TCH channel for signalling, and now that TCH + should take on the voice stream. This scenario has not been tested. + + A much more common scenario, though, is that a call is coming in while another + call is ongoing. Then, the user may choose to hang up the current call, and + continue on the new call instead. In that scenario, the MSC will send us + another Assignment Command with a different remote RTP address to route RTP to. + The proper way now would be to bump the lchan_fsm so that it re-uses everything + that is in place, only MDCXes the result to a different remote RTP port. This + is currently not implemented and would require more states in the FSM. With + this code enabled, we try to re-use the existing lchan but do not re-route the + RTP: the old call is hung up and the new call gets no audio. + + However, if we simply drop the old lchan and create a new one, we can trivially + set up a new lchan the same way we always do, and switching over to the new + caller works, without a single line of code added here. + + Hence, disable this lchan re-use until we can re-use an lchan properly. + + Test scenario: + + - from A, call B. + - from C, call B; B rings during ongoing call. + - in B, pick up the call, choose to drop the old call. + ------- + if (conn->lchan && lchan_type_compat_with_mode(conn->lchan->type, req->chan_mode, req->full_rate)) { @@ -359,6 +395,7 @@ "NOT IMPLEMENTED:" " Current lchan would be compatible, we should send Channel Mode Modify\n"); } +#endif conn->assignment.new_lchan = lchan_select_by_chan_mode(bts, req->chan_mode, req->full_rate); -- To view, visit https://gerrit.osmocom.org/12401 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I0c00ec2c120e5008281755adcd4944a3ce4d8355 Gerrit-Change-Number: 12401 Gerrit-PatchSet: 1 Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181221/a2688129/attachment.htm>