fixeria has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-sgsn/+/40822?usp=email )
Change subject: VTY: make max-sdu-size for GPRS SM QoS configurable
......................................................................
VTY: make max-sdu-size for GPRS SM QoS configurable
Change-Id: I0819da18dafecf322f8902643dae8dbcaa5dc98b
---
M src/sgsn/gprs_sm.c
M src/sgsn/sgsn_vty.c
2 files changed, 72 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/22/40822/1
diff --git a/src/sgsn/gprs_sm.c b/src/sgsn/gprs_sm.c
index bcf2923..c292505 100644
--- a/src/sgsn/gprs_sm.c
+++ b/src/sgsn/gprs_sm.c
@@ -63,7 +63,7 @@
},
};
-static struct gsm48_qos default_qos = {
+struct gsm48_qos gprs_sm_default_qos = {
.delay_class = 4, /* best effort */
.reliab_class = GSM48_QOS_RC_LLC_UN_RLC_ACK_DATA_PROT,
.peak_tput = GSM48_QOS_PEAK_TPUT_32000bps,
@@ -206,7 +206,7 @@
/* FIXME: copy QoS parameters from original request */
//msgb_lv_put(msg, pdp->lib->qos_neg.l, pdp->lib->qos_neg.v);
- msgb_lv_put(msg, sizeof(default_qos), (uint8_t *)&default_qos);
+ msgb_lv_put(msg, sizeof(gprs_sm_default_qos), (uint8_t *)&gprs_sm_default_qos);
/* Radio priority 10.5.7.2 */
msgb_v_put(msg, pdp->lib->radio_pri);
diff --git a/src/sgsn/sgsn_vty.c b/src/sgsn/sgsn_vty.c
index 7279167..37d966f 100644
--- a/src/sgsn/sgsn_vty.c
+++ b/src/sgsn/sgsn_vty.c
@@ -66,6 +66,8 @@
#include <osmocom/ranap/iu_client.h>
#endif
+extern struct gsm48_qos gprs_sm_default_qos;
+
static struct sgsn_config *g_cfg = NULL;
const struct value_string sgsn_auth_pol_strs[] = {
@@ -382,6 +384,28 @@
} else
vty_out(vty, " no compression v42bis%s", VTY_NEWLINE);
+#define QOS_SM_DEFAULT_CMD "qos-sm default"
+#define QOS_SM_DEFAULT_CMD_DOC \
+ "QoS (Quality of Service) configuration for the GPRS SM layer\n" \
+ "Default QoS parameters\n"
+
+ /* QoS defaults */
+ switch (gprs_sm_default_qos.max_sdu_size) {
+ case GSM48_QOS_MAXSDU_1502:
+ vty_out(vty, " " QOS_SM_DEFAULT_CMD " max-sdu-size 1502%s",
VTY_NEWLINE);
+ break;
+ case GSM48_QOS_MAXSDU_1510:
+ vty_out(vty, " " QOS_SM_DEFAULT_CMD " max-sdu-size 1510%s",
VTY_NEWLINE);
+ break;
+ case GSM48_QOS_MAXSDU_1520:
+ vty_out(vty, " " QOS_SM_DEFAULT_CMD " max-sdu-size 1520%s",
VTY_NEWLINE);
+ break;
+ default:
+ vty_out(vty, " " QOS_SM_DEFAULT_CMD " max-sdu-size %u%s",
+ gprs_sm_default_qos.max_sdu_size * 10, VTY_NEWLINE);
+ break;
+ }
+
llist_for_each_entry(mme, &sgsn->mme_list, list) {
config_write_mme(vty, mme, " ");
}
@@ -1621,6 +1645,49 @@
return CMD_SUCCESS;
}
+DEFUN(cfg_qos_sm_default_max_sdu_size,
+ cfg_qos_sm_default_max_sdu_size_cmd,
+ QOS_SM_DEFAULT_CMD " max-sdu-size (<10-1500>)",
+ QOS_SM_DEFAULT_CMD_DOC
+ "Maximum SDU (Service Data Unit) size\n"
+ "SDU size (must be a multiple of 10)\n")
+{
+ int size = atoi(argv[0]);
+
+ switch (size) {
+ case 1502:
+ gprs_sm_default_qos.max_sdu_size = GSM48_QOS_MAXSDU_1502;
+ break;
+ case 1510:
+ gprs_sm_default_qos.max_sdu_size = GSM48_QOS_MAXSDU_1510;
+ break;
+ case 1520:
+ gprs_sm_default_qos.max_sdu_size = GSM48_QOS_MAXSDU_1520;
+ break;
+ default:
+ if (size < 1 || size > 1500)
+ return CMD_WARNING;
+ if (size % 10 != 0) {
+ vty_out(vty, "%% SDU size in range 1..1500 "
+ "must be a multiple of 10%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ gprs_sm_default_qos.max_sdu_size = size / 10;
+ break;
+ }
+
+ return CMD_SUCCESS;
+}
+
+ALIAS(cfg_qos_sm_default_max_sdu_size,
+ cfg_qos_sm_default_max_sdu_size_15xx_cmd,
+ QOS_SM_DEFAULT_CMD " max-sdu-size (1502|1510|1520)",
+ QOS_SM_DEFAULT_CMD_DOC
+ "Maximum SDU (Service Data Unit) size\n"
+ "1502 octets\n"
+ "1510 octets\n"
+ "1520 octets\n");
+
#if BUILD_IU
DEFUN(cfg_sgsn_cs7_instance_iu,
cfg_sgsn_cs7_instance_iu_cmd,
@@ -1895,6 +1962,9 @@
install_element(SGSN_NODE, &cfg_comp_v42bis_cmd);
install_element(SGSN_NODE, &cfg_comp_v42bisp_cmd);
+ install_element(SGSN_NODE, &cfg_qos_sm_default_max_sdu_size_cmd);
+ install_element(SGSN_NODE, &cfg_qos_sm_default_max_sdu_size_15xx_cmd);
+
install_element(SGSN_NODE, &cfg_sgsn_mme_cmd);
install_element(SGSN_NODE, &cfg_sgsn_no_mme_cmd);
install_node(&mme_node, NULL);
--
To view, visit
https://gerrit.osmocom.org/c/osmo-sgsn/+/40822?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I0819da18dafecf322f8902643dae8dbcaa5dc98b
Gerrit-Change-Number: 40822
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>