dexter has uploaded this change for review. ( 
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: I633870030fad35d0a29dfafd6d118e2caa4ec3c9
Related SYS#4624

Change-Id: I7f091ed1bbc2afe12656e42031e122144eeb6826
---
M src/osmo-bsc/gsm_08_08.c
1 file changed, 16 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/09/15209/1

diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c
index 6ca5455..6dbb1b0 100644
--- a/src/osmo-bsc/gsm_08_08.c
+++ b/src/osmo-bsc/gsm_08_08.c
@@ -325,8 +325,8 @@
        subscr = extract_sub(conn, msg);

        if (!subscr) {
-               LOGP(DMSC, LOGL_ERROR, "Got paged but no subscriber found.\n");
-               return NULL;
+               LOGP(DMSC, LOGL_ERROR, "Got paged 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);
@@ -346,7 +346,20 @@
                return msc;
        }

-       LOGP(DMSC, LOGL_ERROR, "Got paged but no request found.\n");
+       LOGP(DMSC, LOGL_ERROR, "Got paged 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: 1
Gerrit-Owner: dexter <pma...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to