aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-10-08 00:39:13 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2020-10-15 05:28:44 +0200
commit6efafb1219fbb6f4e0f7d29a4983ad74561c1a42 (patch)
tree6a8b7d401f1055c23e3313434378eb7b22ea3be7
parentc27ae2da550efbd35cccbcd9ea620d1bca8aa926 (diff)
BSSMAP RESET: move cancel-paging call to osmo_bsc_sigtran_reset()
So far we would cancel ongoing Paging for a given MSC only after receiving a RESET message from that BSC. However, the typical operation would be that OsmoBSC *sends* a RESET and receives a RESET-ACK. Instead, move the call to within osmo_bsc_sigtran_reset(). This is also called when OsmoBSC considers the A-interface link to be lost, from the a_reset.c code, after multiple SCCP connection failures. Change-Id: Ia14b916be56563d18632c69a833084e71799a468
-rw-r--r--include/osmocom/bsc/osmo_bsc_sigtran.h2
-rw-r--r--src/osmo-bsc/osmo_bsc_bssap.c3
-rw-r--r--src/osmo-bsc/osmo_bsc_sigtran.c6
3 files changed, 6 insertions, 5 deletions
diff --git a/include/osmocom/bsc/osmo_bsc_sigtran.h b/include/osmocom/bsc/osmo_bsc_sigtran.h
index 79afa6b41..df37cf44f 100644
--- a/include/osmocom/bsc/osmo_bsc_sigtran.h
+++ b/include/osmocom/bsc/osmo_bsc_sigtran.h
@@ -38,7 +38,7 @@ int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *m
int osmo_bsc_sigtran_init(struct llist_head *mscs);
/* Close all open sigtran connections and channels */
-void osmo_bsc_sigtran_reset(const struct bsc_msc_data *msc);
+void osmo_bsc_sigtran_reset(struct bsc_msc_data *msc);
void osmo_bsc_sigtran_tx_reset(const struct bsc_msc_data *msc);
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index c2c05affb..d37b3e044 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -100,9 +100,6 @@ static int bssmap_handle_reset(struct bsc_msc_data *msc,
* close all active channels on the BTS side as well */
osmo_bsc_sigtran_reset(msc);
- /* Drop all ongoing paging requests that this MSC has created on any BTS */
- paging_flush_network(msc->network, msc);
-
update_msc_osmux_support(msc, msg, length);
/* Inform the MSC that we have received the reset request and
diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c
index 75b3b58cc..c2df17ed6 100644
--- a/src/osmo-bsc/osmo_bsc_sigtran.c
+++ b/src/osmo-bsc/osmo_bsc_sigtran.c
@@ -35,6 +35,7 @@
#include <osmocom/bsc/bsc_subscr_conn_fsm.h>
#include <osmocom/bsc/gsm_data.h>
#include <osmocom/bsc/bts.h>
+#include <osmocom/bsc/paging.h>
#include <osmocom/mgcp_client/mgcp_common.h>
/* A pointer to a list with all involved MSCs
@@ -415,11 +416,14 @@ int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *m
}
/* Close all open sigtran connections and channels */
-void osmo_bsc_sigtran_reset(const struct bsc_msc_data *msc)
+void osmo_bsc_sigtran_reset(struct bsc_msc_data *msc)
{
struct gsm_subscriber_connection *conn, *conn_temp;
OSMO_ASSERT(msc);
+ /* Drop all ongoing paging requests that this MSC has created on any BTS */
+ paging_flush_network(msc->network, msc);
+
/* Close all open connections */
llist_for_each_entry_safe(conn, conn_temp, &bsc_gsmnet->subscr_conns, entry) {