diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2019-03-01 15:10:59 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2019-03-19 13:29:10 +0000 |
commit | 67e39c87a30524d523eca2d01926f01bafd3d4e3 (patch) | |
tree | 1487ec1f7c9d418593fd0f35713bbc93091fefbb | |
parent | 55073613bbd9b6a0f97309bcfb8683f951c4405f (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
-rw-r--r-- | src/osmo-bsc/gsm_data.c | 35 |
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; } |