Change in osmo-bsc[master]: AMR: Signal usage of octet-aligned or bandwith-efficient mode to MSC

dexter gerrit-no-reply at lists.osmocom.org
Mon Mar 11 09:37:08 UTC 2019


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/13199


Change subject: AMR: Signal usage of octet-aligned or bandwith-efficient mode to MSC
......................................................................

AMR: Signal usage of octet-aligned or bandwith-efficient mode to MSC

MGCP/SDP provides fmtp parameters in order to signal which of the two
available AMR framing modes (octet-aligned or bandwith-efficient) should
be used on the link between BSS and core network. osmo-bsc currently
does not set up this mode which means that the RTP packets from the BTS
are forwared without inspection/modification, which may lead to
malfunction when a BTS is using a framing mode that is not supported by
the other end.

- Add VTY option to setup the framing mode
- Generate related fmtp parameters in SDP

Depends: osmo-mgw I622c01874b25f5049d4f59eb8157e0ea3cbe16ba
Change-Id: If6d40b2407b87aad2227ea7f15533ef01a3771b3
Related OS#3807
---
M include/osmocom/bsc/bsc_msc_data.h
M src/osmo-bsc/mgw_endpoint_fsm.c
M src/osmo-bsc/osmo_bsc_vty.c
3 files changed, 43 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/99/13199/1

diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h
index 0c2094e..65a0dd3 100644
--- a/include/osmocom/bsc/bsc_msc_data.h
+++ b/include/osmocom/bsc/bsc_msc_data.h
@@ -91,6 +91,7 @@
 
 	/* audio codecs */
 	struct gsm48_multi_rate_conf amr_conf;
+	bool amr_octet_aligned;
 	struct gsm_audio_support **audio_support;
 	int audio_length;
 	enum bsc_lcls_mode lcls_mode;
diff --git a/src/osmo-bsc/mgw_endpoint_fsm.c b/src/osmo-bsc/mgw_endpoint_fsm.c
index fc49886..5462914 100644
--- a/src/osmo-bsc/mgw_endpoint_fsm.c
+++ b/src/osmo-bsc/mgw_endpoint_fsm.c
@@ -34,6 +34,7 @@
 #include <osmocom/bsc/mgw_endpoint_fsm.h>
 #include <osmocom/bsc/lchan_fsm.h>
 #include <osmocom/bsc/gsm_data.h>
+#include <osmocom/bsc/bsc_msc_data.h>
 
 #define LOG_CI(ci, level, fmt, args...) do { \
 	if (!ci || !ci->mgwep) \
@@ -774,4 +775,22 @@
 	        verb_info->ptmap[0].pt = custom_pt;
 	        verb_info->ptmap_len = 1;
 	}
+
+	/* AMR requires additional parameters to be set up (framing mode) */
+	if (verb_info->codecs[0] == CODEC_AMR_8000_1) {
+		verb_info->param_present = true;
+		verb_info->param.amr_octet_aligned_present = true;
+	}
+
+	if (bss_side && verb_info->codecs[0] == CODEC_AMR_8000_1) {
+		/* FIXME: At the moment all BTSs we support are using the
+		 * octet-aligned payload format. However, in the future
+		 * we may support BTSs that are using bandwith-efficient
+		 * format. In this case we will have to add functionality
+		 * that distinguishes by the BTS model which mode to use. */
+		verb_info->param.amr_octet_aligned = true;
+	}
+	else if (!bss_side && verb_info->codecs[0] == CODEC_AMR_8000_1) {
+		verb_info->param.amr_octet_aligned = lchan->conn->sccp.msc->amr_octet_aligned;
+	}
 }
diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c
index 6e3d1c1..78196cf 100644
--- a/src/osmo-bsc/osmo_bsc_vty.c
+++ b/src/osmo-bsc/osmo_bsc_vty.c
@@ -100,6 +100,11 @@
 	WRITE_AMR(vty, msc, "5_15k", m5_15);
 	WRITE_AMR(vty, msc, "4_75k", m4_75);
 #undef WRITE_AMR
+
+	if (msc->amr_octet_aligned)
+		vty_out(vty, " amr-payload octet-aligned%s", VTY_NEWLINE);
+	else
+		vty_out(vty, " amr-payload bandwith-efficient%s", VTY_NEWLINE);
 }
 
 static void write_msc(struct vty *vty, struct bsc_msc_data *msc)
@@ -952,6 +957,23 @@
 ALIAS_DEPRECATED(cfg_net_msc_dest, cfg_net_msc_no_dest_cmd,
       "no dest A.B.C.D <1-65000> <0-255>", NO_STR LEGACY_STR "-\n" "-\n" "-\n");
 
+DEFUN(cfg_net_msc_amr_octet_align,
+      cfg_net_msc_amr_octet_align_cmd,
+      "amr-payload (octet-aligned|bandwith-efficient",
+      "Set AMR payload framing mode\n"
+      "payload fields aligned on octet boundaries\n"
+      "payload fields packed (AoIP)\n")
+{
+	struct bsc_msc_data *data = bsc_msc_data(vty);
+
+	if (strcmp(argv[0], "octet-aligned") == 0)
+		data->amr_octet_aligned = true;
+	else if (strcmp(argv[0], "bandwith-efficient") == 0)
+		data->amr_octet_aligned = false;
+
+	return CMD_SUCCESS;
+}
+
 int bsc_vty_init_extra(void)
 {
 	struct gsm_network *net = bsc_gsmnet;
@@ -996,6 +1018,7 @@
 	install_element(MSC_NODE, &cfg_net_msc_amr_5_90_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_amr_5_15_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_amr_4_75_cmd);
+	install_element(MSC_NODE, &cfg_net_msc_amr_octet_align_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_lcls_mode_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_lcls_mismtch_cmd);
 	install_element(MSC_NODE, &cfg_msc_acc_lst_name_cmd);

-- 
To view, visit https://gerrit.osmocom.org/13199
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: If6d40b2407b87aad2227ea7f15533ef01a3771b3
Gerrit-Change-Number: 13199
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190311/9165dd6b/attachment.html>


More information about the gerrit-log mailing list