aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2022-01-13 21:40:58 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2023-03-04 23:50:46 +0100
commitcdb752a018658f534924e940cf2712b550698a78 (patch)
tree5727ccc726e13454403e5c71d51760a7faaa53e1
parentd52bb73b07e64517fc028417508ee0a056b56baa (diff)
[codecs filter] MT call: apply BSS codec list
For MT call, initialize the codecs filter and apply the Codec List (BSS Supported) from Compl L3. Related: SYS#5066 Change-Id: I530409a64d11da48518a3dc60aa3a4e47c384663
-rw-r--r--src/libmsc/gsm_04_08_cc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 032d9fe52..5c7ff1fbd 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -674,6 +674,16 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
gsm48_start_cc_timer(trans, 0x303, GSM48_T303);
+ /* MT call leg is starting. Gather all codecs information so far known.
+ * (Usually) paging has succeeded, and now we're processing the MNCC Setup from the remote MO call leg.
+ * Initialize the codecs filter with this side's BSS' codec list, received at Complete Layer 3.
+ * We must not pass bearer_cap to codec_filter_init(), because we haven't received the MT MS's Bearer
+ * Capabilities yet; the Bearer Capabilities handled here are actually the remote call leg's Bearer
+ * Capabilities. */
+ codec_filter_init(&trans->cc.codecs);
+ codec_filter_set_ran(&trans->cc.codecs, trans->msc_a->c.ran->type);
+ codec_filter_set_bss(&trans->cc.codecs, &trans->msc_a->cc.compl_l3_codec_list_bss_supported);
+
/* bearer capability */
if (setup->fields & MNCC_F_BEARER_CAP) {
/* Create a copy of the bearer capability in the transaction struct, so we