From 67e39c87a30524d523eca2d01926f01bafd3d4e3 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Fri, 1 Mar 2019 15:10:59 +0100 Subject: 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 --- src/osmo-bsc/gsm_data.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'src/osmo-bsc') 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; } -- cgit v1.2.3