aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2019-03-01 15:10:59 +0100
committerHarald Welte <laforge@gnumonks.org>2019-03-19 13:29:10 +0000
commit67e39c87a30524d523eca2d01926f01bafd3d4e3 (patch)
tree1487ec1f7c9d418593fd0f35713bbc93091fefbb /src/osmo-bsc
parent55073613bbd9b6a0f97309bcfb8683f951c4405f (diff)
osmo_bsc_msc: Use meaningful amr rate configuration on BTS level
The current configuration for permitted AMR rates on BTS level has been choosen arbitrarily. Lets choose the possible rates so that they match the "Config-NB-Code = 1" as defined in 3GPP TS 28.062 Table 7.11.3.1.3-2. (The current default behavior is not changed since the MSC level configuration only permits 5.90k by default.) Change-Id: I916953e3fdb54168671dd13b359e78662fa31059 Related: SYS#4470
Diffstat (limited to 'src/osmo-bsc')
-rw-r--r--src/osmo-bsc/gsm_data.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index a12821699..509f805ae 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -888,26 +888,25 @@ struct gsm_bts *gsm_bts_alloc(struct gsm_network *net, uint8_t bts_num)
};
/* Set reasonable defaults for AMR-FR and AMR-HR rate configuration.
- * It is possible to set up to 4 codecs per active set, while 5,15K must
- * be selected. */
+ * (see also 3GPP TS 28.062, Table 7.11.3.1.3-2) */
mr_cfg = (struct gsm48_multi_rate_conf) {
- .m4_75 = 0,
- .m5_15 = 1,
+ .m4_75 = 1,
+ .m5_15 = 0,
.m5_90 = 1,
.m6_70 = 0,
- .m7_40 = 0,
+ .m7_40 = 1,
.m7_95 = 0,
- .m10_2 = 1,
+ .m10_2 = 0,
.m12_2 = 1
};
memcpy(bts->mr_full.gsm48_ie, &mr_cfg, sizeof(bts->mr_full.gsm48_ie));
- bts->mr_full.ms_mode[0].mode = 1;
+ bts->mr_full.ms_mode[0].mode = 0;
bts->mr_full.ms_mode[1].mode = 2;
- bts->mr_full.ms_mode[2].mode = 6;
+ bts->mr_full.ms_mode[2].mode = 4;
bts->mr_full.ms_mode[3].mode = 7;
- bts->mr_full.bts_mode[0].mode = 1;
+ bts->mr_full.bts_mode[0].mode = 0;
bts->mr_full.bts_mode[1].mode = 2;
- bts->mr_full.bts_mode[2].mode = 6;
+ bts->mr_full.bts_mode[2].mode = 4;
bts->mr_full.bts_mode[3].mode = 7;
for (i = 0; i < 3; i++) {
bts->mr_full.ms_mode[i].hysteresis = 8;
@@ -918,31 +917,31 @@ struct gsm_bts *gsm_bts_alloc(struct gsm_network *net, uint8_t bts_num)
bts->mr_full.num_modes = 4;
mr_cfg = (struct gsm48_multi_rate_conf) {
- .m4_75 = 0,
- .m5_15 = 1,
+ .m4_75 = 1,
+ .m5_15 = 0,
.m5_90 = 1,
.m6_70 = 0,
.m7_40 = 1,
- .m7_95 = 1,
+ .m7_95 = 0,
.m10_2 = 0,
.m12_2 = 0
};
memcpy(bts->mr_half.gsm48_ie, &mr_cfg, sizeof(bts->mr_half.gsm48_ie));
- bts->mr_half.ms_mode[0].mode = 1;
+ bts->mr_half.ms_mode[0].mode = 0;
bts->mr_half.ms_mode[1].mode = 2;
bts->mr_half.ms_mode[2].mode = 4;
- bts->mr_half.ms_mode[3].mode = 5;
- bts->mr_half.bts_mode[0].mode = 1;
+ bts->mr_half.ms_mode[3].mode = 7;
+ bts->mr_half.bts_mode[0].mode = 0;
bts->mr_half.bts_mode[1].mode = 2;
bts->mr_half.bts_mode[2].mode = 4;
- bts->mr_half.bts_mode[3].mode = 5;
+ bts->mr_half.bts_mode[3].mode = 7;
for (i = 0; i < 3; i++) {
bts->mr_half.ms_mode[i].hysteresis = 8;
bts->mr_half.ms_mode[i].threshold = 32;
bts->mr_half.bts_mode[i].hysteresis = 8;
bts->mr_half.bts_mode[i].threshold = 32;
}
- bts->mr_half.num_modes = 4;
+ bts->mr_half.num_modes = 3;
return bts;
}