laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33368 )
Change subject: gsm48_cc_tx_setup: set trans->bearer_cap.transfer early
......................................................................
gsm48_cc_tx_setup: set trans->bearer_cap.transfer early
Prepare to use trans->bearer_cap.transfer in trans_cc_filter_run() to
differentiate between speech and data (CSD).
Related: OS#4394
Change-Id: Id0476a4882bcb27413d033f2de2c5288954f0b95
---
M src/libmsc/gsm_04_08_cc.c
1 file changed, 15 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 4fbf929..4bc87af 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -806,6 +806,8 @@
trans_cc_filter_init(trans);
trans_cc_filter_set_ran(trans, trans->msc_a->c.ran->type);
trans_cc_filter_set_bss(trans, trans->msc_a);
+ if (setup->fields & MNCC_F_BEARER_CAP)
+ trans->bearer_cap.transfer = setup->bearer_cap.transfer;
/* sdp.remote: if SDP is included in the MNCC, take that as definitive list of remote audio codecs. */
rx_mncc_sdp(trans, setup->msg_type, setup->sdp);
/* sdp.remote: if there is no SDP information or we failed to parse it, try using the Bearer Capability from
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33368
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Id0476a4882bcb27413d033f2de2c5288954f0b95
Gerrit-Change-Number: 33368
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33360 )
Change subject: Cosmetic: gsm48_cc_tx_setup: remove TODO comment
......................................................................
Cosmetic: gsm48_cc_tx_setup: remove TODO comment
Remove the comment as trans->bearer_cap will be used in CSD code to
differentiate between speech and data.
Related: OS#4394
Change-Id: I0539632f464bc44945599bec52dc2a4df2f0115f
---
M src/libmsc/gsm_04_08_cc.c
1 file changed, 13 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 9670db0..773ee3d 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -840,8 +840,6 @@
return rc;
}
/* Create a copy of the bearer capability in the transaction struct, so we can use this information later */
- /* TODO: we should be able to drop trans->bearer_cap, replaced by the codecs filter. Verify this.
- * So far let's just store it there like previous code did. */
trans->bearer_cap = bearer_cap;
/* If no resulting codecs remain, error out. We cannot find a codec that matches both call legs. If the MGW were
* able to transcode, we could use non-identical codecs on each conn of the MGW endpoint, but we are aiming for
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33360
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I0539632f464bc44945599bec52dc2a4df2f0115f
Gerrit-Change-Number: 33360
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33359 )
Change subject: Cosmetic: gsm48_cc_tx_setup: tweak comment
......................................................................
Cosmetic: gsm48_cc_tx_setup: tweak comment
Remove the misleading "We must not pass bearer_cap to
codec_filter_init()" part of the comment. The function doesn't accept a
bearer_cap parameter, it cannot be passed to the function:
void codec_filter_init(struct codec_filter *codec_filter)
{
*codec_filter = (struct codec_filter){};
}
Related: OS#4394
Change-Id: I87a1e371e108d8da514b30f1726aad0f85ea4111
---
M src/libmsc/gsm_04_08_cc.c
1 file changed, 21 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 9d429a0..9670db0 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -802,9 +802,8 @@
/* 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. */
+ * 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);
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33359
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I87a1e371e108d8da514b30f1726aad0f85ea4111
Gerrit-Change-Number: 33359
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33358 )
Change subject: codec_filter_set_ms_from_bc: prepare for CSD
......................................................................
codec_filter_set_ms_from_bc: prepare for CSD
In all the places where codec_filter_ functions get called, for CSD we
will need to filter the bearer services. Add a new
transaction_cc.c file for functions that either combine the
codec_filter_ function with logic for CSD and voice calls or just call
the existing codec_filter function and a new csd_filter function.
Start with moving codec_filter_set_ms_from_bc to this new file, it will
be extended with a case for CSD in a future patch.
Related: OS#4394
Change-Id: If225f2a299ce6bc9ae35a17d6f591d889f49155e
---
M include/osmocom/msc/Makefile.am
M include/osmocom/msc/codec_filter.h
A include/osmocom/msc/transaction_cc.h
M src/libmsc/Makefile.am
M src/libmsc/codec_filter.c
M src/libmsc/gsm_04_08_cc.c
A src/libmsc/transaction_cc.c
7 files changed, 100 insertions(+), 10 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/include/osmocom/msc/Makefile.am b/include/osmocom/msc/Makefile.am
index 34b4902..948021a 100644
--- a/include/osmocom/msc/Makefile.am
+++ b/include/osmocom/msc/Makefile.am
@@ -49,6 +49,7 @@
silent_call.h \
sms_queue.h \
transaction.h \
+ transaction_cc.h \
vlr.h \
vlr_sgs.h \
vty.h \
diff --git a/include/osmocom/msc/codec_filter.h b/include/osmocom/msc/codec_filter.h
index b488e98..c90388d 100644
--- a/include/osmocom/msc/codec_filter.h
+++ b/include/osmocom/msc/codec_filter.h
@@ -54,7 +54,6 @@
void codec_filter_init(struct codec_filter *codec_filter);
void codec_filter_set_ran(struct codec_filter *codec_filter, enum osmo_rat_type ran_type);
-void codec_filter_set_ms_from_bc(struct codec_filter *codec_filter, const struct gsm_mncc_bearer_cap *ms_bearer_cap);
void codec_filter_set_bss(struct codec_filter *codec_filter,
const struct gsm0808_speech_codec_list *codec_list_bss_supported);
int codec_filter_set_remote(struct codec_filter *codec_filter, const char *remote_sdp);
diff --git a/include/osmocom/msc/transaction_cc.h b/include/osmocom/msc/transaction_cc.h
new file mode 100644
index 0000000..df0f9d8
--- /dev/null
+++ b/include/osmocom/msc/transaction_cc.h
@@ -0,0 +1,33 @@
+/* Filter/overlay codec and CSD bearer service selections for voice calls/CSD,
+ * across MS, RAN and CN limitations
+ *
+ * (C) 2023 by sysmocom - s.f.m.c. GmbH <info(a)sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Oliver Smith
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <osmocom/gsm/mncc.h>
+
+#include <osmocom/msc/codec_mapping.h>
+#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/vlr.h>
+
+void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap);
diff --git a/src/libmsc/Makefile.am b/src/libmsc/Makefile.am
index bde70c9..9577475 100644
--- a/src/libmsc/Makefile.am
+++ b/src/libmsc/Makefile.am
@@ -68,6 +68,7 @@
sms_queue.c \
smsc_vty.c \
transaction.c \
+ transaction_cc.c \
msc_net_init.c \
ctrl_commands.c \
sgs_iface.c \
diff --git a/src/libmsc/codec_filter.c b/src/libmsc/codec_filter.c
index 674d564..e93ebaf 100644
--- a/src/libmsc/codec_filter.c
+++ b/src/libmsc/codec_filter.c
@@ -81,13 +81,6 @@
}
}
-void codec_filter_set_ms_from_bc(struct codec_filter *codec_filter, const struct gsm_mncc_bearer_cap *ms_bearer_cap)
-{
- codec_filter->ms = (struct sdp_audio_codecs){0};
- if (ms_bearer_cap)
- sdp_audio_codecs_from_bearer_cap(&codec_filter->ms, ms_bearer_cap);
-}
-
void codec_filter_set_bss(struct codec_filter *codec_filter,
const struct gsm0808_speech_codec_list *codec_list_bss_supported)
{
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 083e2d8..9d429a0 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -43,6 +43,7 @@
#include <osmocom/msc/gsm_09_11.h>
#include <osmocom/msc/signal.h>
#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/transaction_cc.h>
#include <osmocom/msc/silent_call.h>
#include <osmocom/msc/mncc_int.h>
#include <osmocom/abis/e1_input.h>
@@ -674,7 +675,7 @@
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);
if (setup.fields & MNCC_F_BEARER_CAP)
- codec_filter_set_ms_from_bc(&trans->cc.codecs, &trans->bearer_cap);
+ trans_cc_filter_set_ms_from_bc(trans, &trans->bearer_cap);
codec_filter_run(&trans->cc.codecs);
LOG_TRANS(trans, setup.emergency ? LOGL_NOTICE : LOGL_INFO, "%sSETUP to %s\n",
@@ -926,7 +927,7 @@
/* This is the MT call leg's Call Conf, containing the MS Bearer Capabilities of the MT MS.
* Store in codecs filter. */
- codec_filter_set_ms_from_bc(&trans->cc.codecs, &call_conf.bearer_cap);
+ trans_cc_filter_set_ms_from_bc(trans, &call_conf.bearer_cap);
}
/* cause */
diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c
new file mode 100644
index 0000000..3a0db2c
--- /dev/null
+++ b/src/libmsc/transaction_cc.c
@@ -0,0 +1,43 @@
+/* Filter/overlay codec and CSD bearer service selections for voice calls/CSD,
+ * across MS, RAN and CN limitations
+ *
+ * (C) 2023 by sysmocom - s.f.m.c. GmbH <info(a)sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Oliver Smith
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <osmocom/msc/transaction_cc.h>
+
+void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap)
+{
+ trans->cc.codecs.ms = (struct sdp_audio_codecs){0};
+
+ if (!bcap)
+ return;
+
+ switch (bcap->transfer) {
+ case GSM48_BCAP_ITCAP_SPEECH:
+ sdp_audio_codecs_from_bearer_cap(&trans->cc.codecs.ms, bcap);
+ break;
+ default:
+ LOG_TRANS(trans, LOGL_ERROR, "Handling of information transfer capability %d not implemented\n",
+ bcap->transfer);
+ break;
+ }
+}
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33358
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: If225f2a299ce6bc9ae35a17d6f591d889f49155e
Gerrit-Change-Number: 33358
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: osmith.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33368 )
Change subject: gsm48_cc_tx_setup: set trans->bearer_cap.transfer early
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33368
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Id0476a4882bcb27413d033f2de2c5288954f0b95
Gerrit-Change-Number: 33368
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 20 Jun 2023 12:51:08 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment