laforge has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-bsc/+/15209 )
Change subject: gsm_08_08.c: always pick first msc for unsolicit paging responses ...................................................................... gsm_08_08.c: always pick first msc for unsolicit paging responses When osmo-bsc receives a paging response via the A-bis interface it tries to find the MSC which is in charge for the paging. This is due to the fact that osmo-bsc supports multiple msc connections, which is not specified by 3gpp specs. In an MT-CSFB call the MSC pages the UE via the SGs interface. Then the UE falls back to 2G. It then reports back as MS on the A-Bis interface with the paging response directly. In those cases osmo-bsc will not be able to determine an MSC in charge, so we will forward the paging response to the first configured MSC. Change-Id: I7f091ed1bbc2afe12656e42031e122144eeb6826 Related: SYS#4624 --- M src/osmo-bsc/gsm_08_08.c 1 file changed, 16 insertions(+), 3 deletions(-) Approvals: Jenkins Builder: Verified neels: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c index 4dc4883..43117a8 100644 --- a/src/osmo-bsc/gsm_08_08.c +++ b/src/osmo-bsc/gsm_08_08.c @@ -323,8 +323,8 @@ subscr = extract_sub(conn, msg); if (!subscr) { - LOGP(DMSC, LOGL_ERROR, "Got paged but no subscriber found.\n"); - return NULL; + LOGP(DMSC, LOGL_INFO, "Got paging response but no subscriber found, will now (blindly) deliver the paging response to the first configured MSC!\n"); + goto blind; } pag_msc = paging_get_msc(conn_get_bts(conn), subscr); @@ -344,7 +344,20 @@ return msc; } - LOGP(DMSC, LOGL_ERROR, "Got paged but no request found.\n"); + LOGP(DMSC, LOGL_INFO, "Got paging response but no request found, will now (blindly) deliver the paging response to the first configured MSC!\n"); + +blind: + /* In the case of an MT CSFB call we will get a paging response from + * the BTS without a preceding paging request via A-Interface. In those + * cases the MSC will page the subscriber via SGs interface, so the BSC + * can not know about the paging in advance. In those cases we can not + * know the MSC which is in charge. The only meaningful option we have + * is to deliver the paging response to the first configured MSC + * blindly. */ + msc = llist_first_entry_or_null(&bsc->mscs, struct bsc_msc_data, entry); + if (msc) + return msc; + LOGP(DMSC, LOGL_ERROR, "Unable to find any suitable MSC to deliver paging response!\n"); return NULL; } -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/15209 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I7f091ed1bbc2afe12656e42031e122144eeb6826 Gerrit-Change-Number: 15209 Gerrit-PatchSet: 2 Gerrit-Owner: dexter <pma...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <axilira...@gmail.com> Gerrit-Reviewer: laforge <lafo...@gnumonks.org> Gerrit-Reviewer: neels <nhofm...@sysmocom.de> Gerrit-CC: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged