[MERGED] osmo-bts[master]: Close TRX session before opening new one

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Tue Jun 14 10:18:43 UTC 2016


Harald Welte has submitted this change and it was merged.

Change subject: Close TRX session before opening new one
......................................................................


Close TRX session before opening new one

This fixes the unstable behavior (BTS loosing subscribers after some
time) in case previous run of osmo-bts was interrupted (with ctrl+c for
example).

Change-Id: Ie2119b0b566d01f0e70b38c8a149fecb47def38d
---
M src/osmo-bts-octphy/l1_oml.c
1 file changed, 43 insertions(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c
index 18bd8c0..401201a 100644
--- a/src/osmo-bts-octphy/l1_oml.c
+++ b/src/osmo-bts-octphy/l1_oml.c
@@ -1097,6 +1097,23 @@
 	return 0;
 }
 
+static int disable_events_compl_cb(struct octphy_hdl *fl1, struct msgb *resp, void *data)
+{
+	tOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_RSP *mser =
+		(tOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_RSP *) resp->l2h;
+
+	/* in a completion call-back, we take msgb ownership and must
+	 * release it before returning */
+
+	mOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_RSP_SWAP(mser);
+
+	LOGP(DL1C, LOGL_INFO, "Rx DISABLE-EVT-REC.resp\n");
+
+	msgb_free(resp);
+
+	return 0;
+}
+
 int l1if_enable_events(struct gsm_bts_trx *trx)
 {
 	struct phy_instance *pinst = trx_phy_instance(trx);
@@ -1116,7 +1133,29 @@
 
 	LOGP(DL1C, LOGL_INFO, "Tx ENABLE-EVT-REC.req\n");
 
-	return l1if_req_compl(fl1h, msg, enable_events_compl_cb, 0);
+	return l1if_req_compl(fl1h, msg, disable_events_compl_cb, 0);
+}
+
+int l1if_disable_events(struct gsm_bts_trx *trx)
+{
+	struct phy_instance *pinst = trx_phy_instance(trx);
+	struct octphy_hdl *fl1h = pinst->phy_link->u.octphy.hdl;
+	struct msgb *msg = l1p_msgb_alloc();
+	tOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_CMD *mse;
+
+	mse = (tOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_CMD *)
+					msgb_put(msg, sizeof(*mse));
+	mOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_CMD_DEF(mse);
+
+	l1if_fill_msg_hdr(&mse->Header, msg, fl1h, cOCTVC1_MSG_TYPE_COMMAND,
+			  cOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_CID);
+	mse->ulEvtActiveFlag = cOCT_FALSE;
+
+	mOCTVC1_MAIN_MSG_API_SYSTEM_MODIFY_SESSION_EVT_CMD_SWAP(mse);
+
+	LOGP(DL1C, LOGL_INFO, "Tx DISABLE-EVT-REC.req\n");
+
+	return l1if_req_compl(fl1h, msg, disable_events_compl_cb, 0);
 }
 
 #define talloc_replace(dst, ctx, src)			\
@@ -1483,6 +1522,9 @@
 
 int bts_model_trx_close(struct gsm_bts_trx *trx)
 {
+	/* disable events */
+	l1if_disable_events(trx);
+
 	/* FIXME: close only one TRX */
 	return trx_close(trx);
 }

-- 
To view, visit https://gerrit.osmocom.org/232
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie2119b0b566d01f0e70b38c8a149fecb47def38d
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list