Change in osmo-bsc[master]: RSL link: explicitly select rsl_link based on lchan

neels gerrit-no-reply at lists.osmocom.org
Tue Jun 1 17:29:44 UTC 2021


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

Change subject: RSL link: explicitly select rsl_link based on lchan
......................................................................

RSL link: explicitly select rsl_link based on lchan

Prepare for VAMOS, where there will be secondary "shadow" lchans serving
secondary MS on the same timeslots. For those, RSL messages will need to
reflect a different stream ID aka TEI, via an rsl_link_vamos.

Make sure that every code path that sends an RSL message for a specific
lchan selects the RSL link via the new function rsl_chan_link(). When
VAMOS is implemented, this function can select the proper RSL stream.

Rename gsm_bts_trx.rsl_link to rsl_link_primary. This makes sure I'm not
missing any uses of the RSL link, and clarifies the code.

Related: SYS#5315 OS#4940
Change-Id: Ifbf16bb296e91f151d19e15e39f5c953ad77ff17
---
M include/osmocom/bsc/abis_rsl.h
M include/osmocom/bsc/bts_trx.h
M src/ipaccess/ipaccess-config.c
M src/osmo-bsc/abis_nm.c
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/acc.c
M src/osmo-bsc/bsc_subscr_conn_fsm.c
M src/osmo-bsc/bsc_vty.c
M src/osmo-bsc/bts_ipaccess_nanobts.c
M src/osmo-bsc/bts_siemens_bs11.c
M src/osmo-bsc/e1_config.c
M src/osmo-bsc/gsm_04_08_rr.c
M src/osmo-bsc/nm_bb_transc_fsm.c
M tests/gsm0408/gsm0408_test.c
M tests/handover/handover_test.c
15 files changed, 69 insertions(+), 62 deletions(-)

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



diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h
index 158f7fb..dcae348 100644
--- a/include/osmocom/bsc/abis_rsl.h
+++ b/include/osmocom/bsc/abis_rsl.h
@@ -44,6 +44,8 @@
 
 const char *ip_to_a(uint32_t ip);
 
+struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan);
+
 int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len);
 int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type,
 		      const uint8_t *data, int len);
diff --git a/include/osmocom/bsc/bts_trx.h b/include/osmocom/bsc/bts_trx.h
index e42e1e4..4d705d0 100644
--- a/include/osmocom/bsc/bts_trx.h
+++ b/include/osmocom/bsc/bts_trx.h
@@ -33,8 +33,8 @@
 	uint8_t nr;
 	/* how do we talk RSL with this TRX? */
 	struct gsm_e1_subslot rsl_e1_link;
-	uint8_t rsl_tei;
-	struct e1inp_sign_link *rsl_link;
+	uint8_t rsl_tei_primary;
+	struct e1inp_sign_link *rsl_link_primary;
 
 	/* Timeout for initiating the RSL connection. */
 	struct osmo_timer_list rsl_connect_timeout;
diff --git a/src/ipaccess/ipaccess-config.c b/src/ipaccess/ipaccess-config.c
index cf649bd..02501bd 100644
--- a/src/ipaccess/ipaccess-config.c
+++ b/src/ipaccess/ipaccess-config.c
@@ -159,7 +159,7 @@
 
 	/* create back-links from bts/trx */
 	bts->oml_link = oml_link;
-	bts->c0->rsl_link = rsl_link;
+	bts->c0->rsl_link_primary = rsl_link;
 
 	/* default port at BTS for incoming connections is 3006 */
 	if (sin->sin_port == 0)
@@ -1122,7 +1122,7 @@
 	}
 
 	bts->oml_link->ts->sign.delay = 10;
-	bts->c0->rsl_link->ts->sign.delay = 10;
+	bts->c0->rsl_link_primary->ts->sign.delay = 10;
 	while (1) {
 		rc = osmo_select_main(0);
 		if (rc < 0)
diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c
index 4fba55c..c98d225 100644
--- a/src/osmo-bsc/abis_nm.c
+++ b/src/osmo-bsc/abis_nm.c
@@ -893,7 +893,7 @@
 	}
 
 	llist_for_each_entry(trx, &bts->trx_list, list) {
-		if (!trx->rsl_link)
+		if (!trx->rsl_link_primary)
 			return false;
 
 		if (!trx_is_usable(trx))
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index 4c108d0..1c2b1cd 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -251,7 +251,7 @@
 			msgb_tlv_put(msg, RSL_IE_FULL_BCCH_INFO, len, data);
 	}
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -270,7 +270,7 @@
 	if (data)
 		msgb_tl16v_put(msg, RSL_IE_L3_INFO, len, data);
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -290,7 +290,7 @@
 	if (data)
 		msgb_tl16v_put(msg, RSL_IE_L3_INFO, len, data);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -320,7 +320,7 @@
 	/* BS Power Control Parameters (if supported by BTS model) */
 	add_power_control_params(msg, RSL_IE_BS_POWER_PARAM, lchan);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -345,7 +345,7 @@
 	/* MS Power Control Parameters (if supported by BTS model) */
 	add_power_control_params(msg, RSL_IE_MS_POWER_PARAM, lchan);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -605,7 +605,7 @@
 
 	rep_acch_cap_for_bts(lchan, msg);
 
-	msg->dst = trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_CTR_CHAN_ACT_TOTAL]);
 	switch (lchan->type) {
@@ -665,7 +665,7 @@
 
         rep_acch_cap_for_bts(lchan, msg);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -697,7 +697,7 @@
 	init_dchan_hdr(dh, RSL_MT_ENCR_CMD);
 	dh->chan_nr = chan_nr;
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -713,7 +713,7 @@
 	dh->chan_nr = gsm_lchan2chan_nr(lchan);
 
 	msg->lchan = lchan;
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	DEBUGP(DRSL, "%s DEACTivate SACCH CMD\n", gsm_lchan_name(lchan));
 
@@ -732,7 +732,7 @@
 	dh->chan_nr = gsm_lchan2chan_nr(lchan);
 
 	msg->lchan = lchan;
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -767,7 +767,7 @@
 	if (bts->type == GSM_BTS_TYPE_RBS2000 && is_gprs)
 		msgb_tv_put(msg, RSL_IE_ERIC_PACKET_PAG_IND, 0);
 
-	msg->dst = bts->c0->rsl_link;
+	msg->dst = bts->c0->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -827,7 +827,7 @@
 		break;
 	}
 
-	msg->dst = bts->c0->rsl_link;
+	msg->dst = bts->c0->rsl_link_primary;
 	return msg;
 }
 
@@ -870,7 +870,7 @@
 	DEBUGP(DRSL, "%s TX Siemens MRPCI 0x%02x\n",
 		gsm_lchan_name(lchan), *(uint8_t *)mrpci);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -888,7 +888,7 @@
 	rsl_rll_push_l3(msg, RSL_MT_DATA_REQ, gsm_lchan2chan_nr(msg->lchan),
 			link_id, 1);
 
-	msg->dst = msg->lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(msg->lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -901,7 +901,7 @@
 
 	msg = rsl_rll_simple(RSL_MT_EST_REQ, gsm_lchan2chan_nr(lchan),
 			     link_id, 0);
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	DEBUGP(DRLL, "%s RSL RLL ESTABLISH REQ (link_id=0x%02x)\n",
 		gsm_lchan_name(lchan), link_id);
@@ -925,7 +925,7 @@
 	/* 0 is normal release, 1 is local end */
 	msgb_tv_put(msg, RSL_IE_RELEASE_MODE, release_mode);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	DEBUGP(DRLL, "%s RSL RLL RELEASE REQ (link_id=0x%02x, reason=%u)\n",
 		gsm_lchan_name(lchan), link_id, release_mode);
@@ -2255,7 +2255,7 @@
 	LOG_LCHAN(lchan, LOGL_DEBUG, "Sending IPACC CRCX to BTS: speech_mode=0x%02x RTP_PAYLOAD=%d\n",
 		  lchan->abis_ip.speech_mode, lchan->abis_ip.rtp_payload);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -2286,7 +2286,7 @@
 	if (lchan->abis_ip.rtp_payload2)
 		msgb_tv_put(msg, RSL_IE_IPAC_RTP_PAYLOAD2, lchan->abis_ip.rtp_payload2);
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 
 	return msg;
 }
@@ -2483,7 +2483,7 @@
 		}
 	}
 
-	msg->dst = ts->trx->rsl_link;
+	msg->dst = ts->trx->rsl_link_primary;
 	return abis_rsl_sendmsg(msg);
 }
 
@@ -2498,7 +2498,7 @@
 	dh->c.msg_discr = ABIS_RSL_MDISC_DED_CHAN;
 	dh->chan_nr = gsm_pchan2chan_nr(GSM_PCHAN_TCH_F, ts->nr, 0);
 
-	msg->dst = ts->trx->rsl_link;
+	msg->dst = ts->trx->rsl_link_primary;
 	return abis_rsl_sendmsg(msg);
 }
 
@@ -2603,7 +2603,7 @@
 
 	msgb_tlv_put(msg, RSL_IE_SMSCB_MSG, len, data);
 
-	msg->dst = bts->c0->rsl_link;
+	msg->dst = bts->c0->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -2629,7 +2629,7 @@
 	if (use_extended_cbch)
 		msgb_tv_put(cb_cmd, RSL_IE_SMSCB_CHAN_INDICATOR, 0x01);
 
-	cb_cmd->dst = bts->c0->rsl_link;
+	cb_cmd->dst = bts->c0->rsl_link_primary;
 
 	return abis_rsl_sendmsg(cb_cmd);
 }
@@ -2643,7 +2643,7 @@
 	ch->msg_discr = ABIS_RSL_MDISC_TRX;
 	ch->msg_type = 0x40; /* Nokia SI Begin */
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -2659,7 +2659,7 @@
 
 	msgb_tv_put(msg, 0xFD, 0x00); /* Nokia Pagemode Info, No paging reorganisation required */
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
@@ -2676,7 +2676,12 @@
 	msgb_tv_put(msg, RSL_IE_CHAN_NR, channel);
 	msgb_tv_put(msg, RSL_IE_BS_POWER, reduction); /* reduction in 2dB steps */
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
+
+struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan)
+{
+	return lchan->ts->trx->rsl_link_primary;
+}
diff --git a/src/osmo-bsc/acc.c b/src/osmo-bsc/acc.c
index 06f96c6..9734a28 100644
--- a/src/osmo-bsc/acc.c
+++ b/src/osmo-bsc/acc.c
@@ -439,7 +439,7 @@
 		return 0;
 
 	/* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */
-	if (trx->rsl_link == NULL) {
+	if (trx->rsl_link_primary == NULL) {
 		LOG_TRX(trx, DRSL, LOGL_DEBUG,
 			"ACC RAMP: ignoring state change because RSL link is down\n");
 		return 0;
diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 43804a2..aa9d536 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -1136,7 +1136,6 @@
 
 	sapi = link_id & 0x7;
 	msg->lchan = conn->lchan;
-	msg->dst = msg->lchan->ts->trx->rsl_link;
 
 	/* If we are on a TCH and need to submit a SMS (on SAPI=3) we need to use the SACH */
 	if (allow_sacch && sapi != 0) {
diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c
index 09aec2b..89f8c0e 100644
--- a/src/osmo-bsc/bsc_vty.c
+++ b/src/osmo-bsc/bsc_vty.c
@@ -735,7 +735,7 @@
 	vty_out(vty, "   nominal power %u%s", trx->nominal_power, VTY_NEWLINE);
 	vty_out(vty, "   max_power_red %u%s", trx->max_power_red, VTY_NEWLINE);
 	config_write_e1_link(vty, &trx->rsl_e1_link, "   rsl ");
-	vty_out(vty, "   rsl e1 tei %u%s", trx->rsl_tei, VTY_NEWLINE);
+	vty_out(vty, "   rsl e1 tei %u%s", trx->rsl_tei_primary, VTY_NEWLINE);
 
 	if (trx->bts->model->config_write_trx)
 		trx->bts->model->config_write_trx(vty, trx);
@@ -1326,10 +1326,10 @@
 
 static void trx_dump_vty(struct vty *vty, struct gsm_bts_trx *trx, bool print_rsl, bool show_connected)
 {
-	if (show_connected && !trx->rsl_link)
+	if (show_connected && !trx->rsl_link_primary)
 		return;
 
-	if (!show_connected && trx->rsl_link)
+	if (!show_connected && trx->rsl_link_primary)
 		return;
 
 	vty_out(vty, "TRX %u of BTS %u is on ARFCN %u%s",
@@ -1341,15 +1341,15 @@
 	vty_out(vty, "  Radio Carrier NM State: ");
 	net_dump_nmstate(vty, &trx->mo.nm_state);
 	if (print_rsl)
-		vty_out(vty, "  RSL State: %s%s", trx->rsl_link? "connected" : "disconnected", VTY_NEWLINE);
+		vty_out(vty, "  RSL State: %s%s", trx->rsl_link_primary? "connected" : "disconnected", VTY_NEWLINE);
 	vty_out(vty, "  Baseband Transceiver NM State: ");
 	net_dump_nmstate(vty, &trx->bb_transc.mo.nm_state);
 	if (is_ipaccess_bts(trx->bts)) {
-		vty_out(vty, "  ip.access stream ID: 0x%02x ", trx->rsl_tei);
-		e1isl_dump_vty_tcp(vty, trx->rsl_link);
+		vty_out(vty, "  ip.access stream ID: 0x%02x ", trx->rsl_tei_primary);
+		e1isl_dump_vty_tcp(vty, trx->rsl_link_primary);
 	} else {
 		vty_out(vty, "  E1 Signalling Link:%s", VTY_NEWLINE);
-		e1isl_dump_vty(vty, trx->rsl_link);
+		e1isl_dump_vty(vty, trx->rsl_link_primary);
 	}
 }
 
@@ -5449,7 +5449,7 @@
 {
 	struct gsm_bts_trx *trx = vty->index;
 
-	trx->rsl_tei = atoi(argv[0]);
+	trx->rsl_tei_primary = atoi(argv[0]);
 
 	return CMD_SUCCESS;
 }
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 019c8b8..1e3e9c1 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -525,12 +525,12 @@
 /* These are exported because they are used by the VTY interface. */
 void ipaccess_drop_rsl(struct gsm_bts_trx *trx, const char *reason)
 {
-	if (!trx->rsl_link)
+	if (!trx->rsl_link_primary)
 		return;
 
 	LOG_TRX(trx, DLINP, LOGL_NOTICE, "Dropping RSL link: %s\n", reason);
-	e1inp_sign_link_destroy(trx->rsl_link);
-	trx->rsl_link = NULL;
+	e1inp_sign_link_destroy(trx->rsl_link_primary);
+	trx->rsl_link_primary = NULL;
 	osmo_stat_item_dec(trx->bts->bts_statg->items[BTS_STAT_RSL_CONNECTED], 1);
 
 	if (trx->bts->c0 == trx)
@@ -729,10 +729,10 @@
 		line = bts->oml_link->ts->line;
 		ts = e1inp_line_ipa_rsl_ts(line, dev->trx_id);
 		e1inp_ts_config_sign(ts, line);
-		sign_link = trx->rsl_link =
+		sign_link = trx->rsl_link_primary =
 				e1inp_sign_link_create(ts, E1INP_SIGN_RSL,
-						       trx, trx->rsl_tei, 0);
-		trx->rsl_link->ts->sign.delay = 0;
+						       trx, trx->rsl_tei_primary, 0);
+		trx->rsl_link_primary->ts->sign.delay = 0;
 		if (!(sign_link->trx->bts->ip_access.flags &
 					(RSL_UP << sign_link->trx->nr))) {
 			e1inp_event(sign_link->ts, S_L_INP_TEI_UP,
@@ -947,7 +947,7 @@
 	if (bs_power_ctrl->mode == GSM_PWR_CTRL_MODE_DYN_BTS)
 		add_power_params_ie(msg, RSL_IE_BS_POWER_PARAM, bs_power_ctrl);
 
-	msg->dst = trx->rsl_link;
+	msg->dst = trx->rsl_link_primary;
 
 	return abis_rsl_sendmsg(msg);
 }
diff --git a/src/osmo-bsc/bts_siemens_bs11.c b/src/osmo-bsc/bts_siemens_bs11.c
index 08694ea..0d71ce2 100644
--- a/src/osmo-bsc/bts_siemens_bs11.c
+++ b/src/osmo-bsc/bts_siemens_bs11.c
@@ -434,7 +434,7 @@
 		abis_nm_conn_terr_sign(trx, e1l->e1_nr, e1l->e1_ts,
 					e1l->e1_ts_ss);
 		abis_nm_establish_tei(trx->bts, trx->nr, e1l->e1_nr,
-				      e1l->e1_ts, e1l->e1_ts_ss, trx->rsl_tei);
+				      e1l->e1_ts, e1l->e1_ts_ss, trx->rsl_tei_primary);
 
 		/* Set Radio Attributes */
 		if (trx == trx->bts->c0)
diff --git a/src/osmo-bsc/e1_config.c b/src/osmo-bsc/e1_config.c
index bdf7d1c..db77234 100644
--- a/src/osmo-bsc/e1_config.c
+++ b/src/osmo-bsc/e1_config.c
@@ -90,7 +90,7 @@
 	if (trx->bts->type == GSM_BTS_TYPE_RBS2000) {
 		struct e1inp_sign_link *oml_link;
 		oml_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OML, trx,
-						  trx->rsl_tei, SAPI_OML);
+						  trx->rsl_tei_primary, SAPI_OML);
 		if (!oml_link) {
 			LOG_TRX(trx, DLINP, LOGL_ERROR, "TRX OML link creation failed\n");
 			return -ENOMEM;
@@ -100,14 +100,14 @@
 		trx->oml_link = oml_link;
 	}
 	rsl_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_RSL,
-					  trx, trx->rsl_tei, SAPI_RSL);
+					  trx, trx->rsl_tei_primary, SAPI_RSL);
 	if (!rsl_link) {
 		LOG_TRX(trx, DLINP, LOGL_ERROR, "TRX RSL link creation failed\n");
 		return -ENOMEM;
 	}
-	if (trx->rsl_link)
-		e1inp_sign_link_destroy(trx->rsl_link);
-	trx->rsl_link = rsl_link;
+	if (trx->rsl_link_primary)
+		e1inp_sign_link_destroy(trx->rsl_link_primary);
+	trx->rsl_link_primary = rsl_link;
 
 	for (i = 0; i < TRX_NR_TS; i++)
 		e1_reconfig_ts(&trx->ts[i]);
diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c
index d392c05..302ea33 100644
--- a/src/osmo-bsc/gsm_04_08_rr.c
+++ b/src/osmo-bsc/gsm_04_08_rr.c
@@ -51,7 +51,7 @@
 int gsm48_sendmsg(struct msgb *msg)
 {
 	if (msg->lchan)
-		msg->dst = msg->lchan->ts->trx->rsl_link;
+		msg->dst = rsl_chan_link(msg->lchan);
 
 	msg->l3h = msg->data;
 	return rsl_data_request(msg, 0);
diff --git a/src/osmo-bsc/nm_bb_transc_fsm.c b/src/osmo-bsc/nm_bb_transc_fsm.c
index 2fb52f9..9f2a804 100644
--- a/src/osmo-bsc/nm_bb_transc_fsm.c
+++ b/src/osmo-bsc/nm_bb_transc_fsm.c
@@ -119,7 +119,7 @@
 		abis_nm_opstart(trx->bts, NM_OC_BASEB_TRANSC, trx->bts->bts_nr, trx->nr, 0xff);
 		/* TRX software is active, tell it to initiate RSL Link */
 		abis_nm_ipaccess_rsl_connect(trx, trx->bts->ip_access.rsl_ip,
-					     3003, trx->rsl_tei);
+					     3003, trx->rsl_tei_primary);
 	}
 }
 
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index a1aa5f4..7c92c36 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -992,3 +992,4 @@
 int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }
 int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)
 { return 0; }
+struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan) { return NULL; }
diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c
index b2eb5cc..0859a04 100644
--- a/tests/handover/handover_test.c
+++ b/tests/handover/handover_test.c
@@ -175,7 +175,7 @@
 	mr->bcch_f_nc6_hi = neighbors[5].bcch_f >> 2;
 	mr->bcch_f_nc6_lo = neighbors[5].bcch_f & 3;
 
-	msg->dst = lchan->ts->trx->bts->c0->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)dh;
 	msg->l3h = (unsigned char *)gh;
 
@@ -231,7 +231,7 @@
 
 	rsl_link = talloc_zero(ctx, struct e1inp_sign_link);
 	rsl_link->trx = bts->c0;
-	bts->c0->rsl_link = rsl_link;
+	bts->c0->rsl_link_primary = rsl_link;
 
 	for (trx_i = 0; trx_i < num_trx; trx_i++) {
 		while (!(trx = gsm_bts_trx_num(bts, trx_i)))
@@ -555,7 +555,7 @@
 	dh->ie_chan = RSL_IE_CHAN_NR;
 	dh->chan_nr = gsm_lchan2chan_nr(lchan);
 
-	msg->dst = lchan->ts->trx->bts->c0->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)dh;
 
 	abis_rsl_rcvmsg(msg);
@@ -592,7 +592,7 @@
 	gh->proto_discr = GSM48_PDISC_RR;
 	gh->msg_type = GSM48_MT_RR_ASS_COMPL;
 
-	msg->dst = lchan->ts->trx->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)rh;
 	msg->l3h = (unsigned char *)gh;
 
@@ -616,7 +616,7 @@
 	rh->ie_link_id = RSL_IE_LINK_IDENT;
 	rh->link_id = 0x00;
 
-	msg->dst = lchan->ts->trx->bts->c0->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)rh;
 
 	abis_rsl_rcvmsg(msg);
@@ -638,7 +638,7 @@
 	rh->ie_link_id = RSL_IE_LINK_IDENT;
 	rh->link_id = 0x00;
 
-	msg->dst = lchan->ts->trx->bts->c0->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)rh;
 
 	abis_rsl_rcvmsg(msg);
@@ -682,7 +682,7 @@
 	gh->msg_type =
 		success ? GSM48_MT_RR_HANDO_COMPL : GSM48_MT_RR_HANDO_FAIL;
 
-	msg->dst = lchan->ts->trx->bts->c0->rsl_link;
+	msg->dst = rsl_chan_link(lchan);
 	msg->l2h = (unsigned char *)rh;
 	msg->l3h = (unsigned char *)gh;
 

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

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ifbf16bb296e91f151d19e15e39f5c953ad77ff17
Gerrit-Change-Number: 24365
Gerrit-PatchSet: 7
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210601/e10b213a/attachment.htm>


More information about the gerrit-log mailing list