[MERGED] osmo-bsc[master]: HO: store speech codec list from BSSMAP Assignment in conn

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
Fri Feb 16 15:37:12 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: HO: store speech codec list from BSSMAP Assignment in conn
......................................................................


HO: store speech codec list from BSSMAP Assignment in conn

On BSSMAP Assignment Request received from the MSC, store the Speech Codec List
in the subscr conn, so that we may evaluate available codecs during handover
decision. (Will be used, e.g., by handover_decision_2.)

Change-Id: I8222d73085eb777696e365c94214c05d56e6d129
---
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/osmo_bsc_bssap.c
2 files changed, 15 insertions(+), 3 deletions(-)

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



diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index b8f8f81..c730d96 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -12,6 +12,7 @@
 #include <osmocom/core/select.h>
 #include <osmocom/core/stats.h>
 #include <osmocom/core/stat_item.h>
+#include <osmocom/gsm/protocol/gsm_08_08.h>
 
 #include <osmocom/crypt/auth.h>
 
@@ -111,6 +112,15 @@
 	unsigned int ho_dtap_cache_len;
 
 	struct penalty_timers *ho_penalty_timers;
+
+	/* "Codec List (MSC Preferred)" as received by the BSSAP Assignment Request. 3GPP 48.008
+	 * 3.2.2.103 says:
+	 *         The "Codec List (MSC Preferred)" shall not include codecs
+	 *         that are not supported by the MS.
+	 * i.e. by heeding the "Codec list (MSC Preferred)", we inherently heed the MS bearer
+	 * capabilities, which the MSC is required to translate into the codec list. */
+	struct gsm0808_speech_codec_list codec_list;
+	bool codec_list_present;
 };
 
 
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 9bd3fe9..0adc001 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -741,7 +741,6 @@
 	bool aoip = false;
 	struct sockaddr_storage rtp_addr;
 	struct gsm0808_channel_type ct;
-	struct gsm0808_speech_codec_list scl;
 	struct gsm0808_speech_codec_list *scl_ptr = NULL;
 	int rc;
 
@@ -800,6 +799,7 @@
 	}
 
 	/* Decode speech codec list (AoIP) */
+	conn->conn->codec_list_present = false;
 	if (aoip) {
 		/* Check for speech codec list element */
 		if (!TLVP_PRESENT(&tp, GSM0808_IE_SPEECH_CODEC_LIST)) {
@@ -809,14 +809,16 @@
 		}
 
 		/* Decode Speech Codec list */
-		rc = gsm0808_dec_speech_codec_list(&scl, TLVP_VAL(&tp, GSM0808_IE_SPEECH_CODEC_LIST),
+		rc = gsm0808_dec_speech_codec_list(&conn->conn->codec_list,
+						   TLVP_VAL(&tp, GSM0808_IE_SPEECH_CODEC_LIST),
 						   TLVP_LEN(&tp, GSM0808_IE_SPEECH_CODEC_LIST));
 		if (rc < 0) {
 			LOGP(DMSC, LOGL_ERROR,
 			     "Unable to decode speech codec list\n");
 			goto reject;
 		}
-		scl_ptr = &scl;
+		conn->conn->codec_list_present = true;
+		scl_ptr = &conn->conn->codec_list;
 	}
 
 	/* Match codec information from the assignment command against the

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8222d73085eb777696e365c94214c05d56e6d129
Gerrit-PatchSet: 3
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list