Change in osmo-bsc[master]: lchan_rtp_fsm: use E1 endpoints if the BTS is not ipaccess type

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/.

laforge gerrit-no-reply at lists.osmocom.org
Thu Aug 6 15:52:36 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/19528 )

Change subject: lchan_rtp_fsm: use E1 endpoints if the BTS is not ipaccess type
......................................................................

lchan_rtp_fsm: use E1 endpoints if the BTS is not ipaccess type

When the BTS is is not an ipaccess BTS, the BTS can only be an E1 bts.
In that case E1 endpoints must be used and there will be no RTP stream
setup towards the BTS.

Change-Id: I4f1f39bf90b0a7c9ea448dab255daf99cd36bb4a
Related: OS#2547
---
M include/osmocom/bsc/bsc_subscr_conn_fsm.h
M src/osmo-bsc/bsc_subscr_conn_fsm.c
M src/osmo-bsc/lchan_rtp_fsm.c
3 files changed, 32 insertions(+), 8 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/bsc/bsc_subscr_conn_fsm.h b/include/osmocom/bsc/bsc_subscr_conn_fsm.h
index 1a827d9..7893735 100644
--- a/include/osmocom/bsc/bsc_subscr_conn_fsm.h
+++ b/include/osmocom/bsc/bsc_subscr_conn_fsm.h
@@ -65,7 +65,7 @@
 int gscon_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg);
 
 struct osmo_mgcpc_ep *gscon_ensure_mgw_endpoint(struct gsm_subscriber_connection *conn,
-						uint16_t msc_assigned_cic);
+						uint16_t msc_assigned_cic, struct gsm_lchan *for_lchan);
 bool gscon_connect_mgw_to_msc(struct gsm_subscriber_connection *conn,
 			      struct gsm_lchan *for_lchan,
 			      const char *addr, uint16_t port,
diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 9b1fb3f..0faf3b2 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -471,8 +471,10 @@
  * SCCPlite, pass in msc_assigned_cic the CIC received upon BSSMAP Assignment Command or BSSMAP Handover
  * Request form the MSC (which is only stored in conn->user_plane after success). Ignored for AoIP. */
 struct osmo_mgcpc_ep *gscon_ensure_mgw_endpoint(struct gsm_subscriber_connection *conn,
-						uint16_t msc_assigned_cic)
+						uint16_t msc_assigned_cic, struct gsm_lchan *for_lchan)
 {
+	const char *epname;
+
 	if (conn->user_plane.mgw_endpoint)
 		return conn->user_plane.mgw_endpoint;
 
@@ -489,13 +491,19 @@
 			 msc_assigned_cic, osmo_mgcpc_ep_name(conn->user_plane.mgw_endpoint));
 
 	} else if (gscon_is_aoip(conn)) {
-		/* use dynamic RTPBRIDGE endpoint allocation in MGW */
+
+		if (is_ipaccess_bts(for_lchan->ts->trx->bts))
+			/* use dynamic RTPBRIDGE endpoint allocation in MGW */
+			epname = mgcp_client_rtpbridge_wildcard(conn->network->mgw.client);
+		else
+			epname = mgcp_client_e1_epname(conn, conn->network->mgw.client, 1, for_lchan->ts->e1_link.e1_ts, 16, for_lchan->ts->e1_link.e1_ts_ss*2);
+
 		conn->user_plane.mgw_endpoint =
 			osmo_mgcpc_ep_alloc(conn->fi, GSCON_EV_FORGET_MGW_ENDPOINT,
 					    conn->network->mgw.client,
 					    conn->network->mgw.tdefs,
 					    conn->fi->id,
-					    "%s", mgcp_client_rtpbridge_wildcard(conn->network->mgw.client));
+					    "%s", epname);
 	} else {
 		LOGPFSML(conn->fi, LOGL_ERROR, "Conn is neither SCCPlite nor AoIP!?\n");
 		return NULL;
@@ -570,7 +578,7 @@
 	} else
 		verb = MGCP_VERB_CRCX;
 
-	gscon_ensure_mgw_endpoint(conn, for_lchan->activate.info.msc_assigned_cic);
+	gscon_ensure_mgw_endpoint(conn, for_lchan->activate.info.msc_assigned_cic, for_lchan);
 
 	if (!conn->user_plane.mgw_endpoint) {
 		LOGPFSML(conn->fi, LOGL_ERROR, "Unable to allocate endpoint info\n");
diff --git a/src/osmo-bsc/lchan_rtp_fsm.c b/src/osmo-bsc/lchan_rtp_fsm.c
index 24a7147..1fe5452 100644
--- a/src/osmo-bsc/lchan_rtp_fsm.c
+++ b/src/osmo-bsc/lchan_rtp_fsm.c
@@ -141,6 +141,12 @@
 	struct osmo_mgcpc_ep_ci *use_mgwep_ci = lchan_use_mgw_endpoint_ci_bts(lchan);
 	struct mgcp_conn_peer crcx_info = {};
 
+	if (!is_ipaccess_bts(lchan->ts->trx->bts)) {
+		LOG_LCHAN_RTP(lchan, LOGL_DEBUG, "Audio link to-BTS via E1, skipping IPACC\n");
+		lchan_rtp_fsm_state_chg(LCHAN_RTP_ST_WAIT_LCHAN_READY);
+		return;
+	}
+
 	if (use_mgwep_ci) {
 		LOG_LCHAN_RTP(lchan, LOGL_DEBUG, "MGW endpoint already available: %s\n",
 			      osmo_mgcpc_ep_ci_name(use_mgwep_ci));
@@ -148,7 +154,7 @@
 		return;
 	}
 
-	mgwep = gscon_ensure_mgw_endpoint(lchan->conn, lchan->activate.info.msc_assigned_cic);
+	mgwep = gscon_ensure_mgw_endpoint(lchan->conn, lchan->activate.info.msc_assigned_cic, lchan);
 	if (!mgwep) {
 		lchan_rtp_fail("Internal error: cannot obtain MGW endpoint handle for conn");
 		return;
@@ -248,7 +254,7 @@
 	if (is_ipaccess_bts(lchan->ts->trx->bts))
 		lchan_rtp_fsm_state_chg(LCHAN_RTP_ST_WAIT_IPACC_CRCX_ACK);
 	else
-		lchan_rtp_fsm_switch_rtp(fi);
+		lchan_rtp_fsm_state_chg(LCHAN_RTP_ST_WAIT_MGW_ENDPOINT_CONFIGURED);
 }
 
 static void lchan_rtp_fsm_wait_ipacc_crcx_ack_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
@@ -445,6 +451,12 @@
 		return;
 	}
 
+	if (!is_ipaccess_bts(lchan->ts->trx->bts)) {
+		LOG_LCHAN_RTP(lchan, LOGL_DEBUG, "Audio link to-BTS via E1, skipping IPACC\n");
+		lchan_rtp_fsm_state_chg(LCHAN_RTP_ST_READY);
+		return;
+	}
+
 	/* At this point, we are taking over an old lchan's MGW endpoint (if any). */
 	if (!lchan->mgw_endpoint_ci_bts && old_lchan) {
 		/* The old lchan shall forget the endpoint now. We might put it back upon ROLLBACK */
@@ -521,7 +533,11 @@
 		osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, 0);
 		return;
 	}
-	connect_mgw_endpoint_to_lchan(fi, lchan->mgw_endpoint_ci_bts, old_lchan);
+
+	if (is_ipaccess_bts(lchan->ts->trx->bts))
+		connect_mgw_endpoint_to_lchan(fi, lchan->mgw_endpoint_ci_bts, old_lchan);
+	else
+		osmo_fsm_inst_dispatch(fi, LCHAN_RTP_EV_MGW_ENDPOINT_CONFIGURED, 0);
 }
 
 static void lchan_rtp_fsm_rollback(struct osmo_fsm_inst *fi, uint32_t event, void *data)

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/19528
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I4f1f39bf90b0a7c9ea448dab255daf99cd36bb4a
Gerrit-Change-Number: 19528
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-CC: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200806/add40330/attachment.htm>


More information about the gerrit-log mailing list