From 6efafb1219fbb6f4e0f7d29a4983ad74561c1a42 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 8 Oct 2020 00:39:13 +0200 Subject: 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 --- include/osmocom/bsc/osmo_bsc_sigtran.h | 2 +- src/osmo-bsc/osmo_bsc_bssap.c | 3 --- 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 #include #include +#include #include /* 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) { -- cgit v1.2.3