diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2020-10-08 00:39:13 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2020-10-15 05:28:44 +0200 |
commit | 6efafb1219fbb6f4e0f7d29a4983ad74561c1a42 (patch) | |
tree | 6a8b7d401f1055c23e3313434378eb7b22ea3be7 | |
parent | c27ae2da550efbd35cccbcd9ea620d1bca8aa926 (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.h | 2 | ||||
-rw-r--r-- | src/osmo-bsc/osmo_bsc_bssap.c | 3 | ||||
-rw-r--r-- | src/osmo-bsc/osmo_bsc_sigtran.c | 6 |
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) { |