aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2019-03-01 15:10:59 +0100
committerPhilipp Maier <pmaier@sysmocom.de>2019-03-13 14:30:12 +0100
commit8981a721960151c72a1ab53ca1c46eec23cade67 (patch)
tree52b1d1da7afcc9ccbb150241d8cdc6d9e4c09eda
parenteda6bfab6b86891e074905af8b7e5dbe0ac18762 (diff)
osmo_bsc_msc: Use meaningful amr rate configuration on BTS levelpmaier/sbits
The current configuration for permittet AMR rates on BTS level are very limited. Lets extend 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
-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 5d667bb..2bb22eb 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -896,26 +896,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;
@@ -926,31 +925,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;
}