From 3166b6353e7e2c5eff29730f4a08184118825d91 Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Mon, 16 Nov 2020 12:39:43 +0100 Subject: [PATCH] enb: add QAM64 support for UL * add new UE feature * enable in srsue.conf.templ * add new table for maximum rates * add config scenario to enable SIB option for QAM64 Change-Id: I6ac2c9989a761e91b93d76c2507f55f0140b202d --- src/osmo_gsm_tester/core/schema.py | 2 +- src/osmo_gsm_tester/obj/enb_srs.py | 25 +++++++++++++------ .../templates/srsenb_sib.conf.tmpl | 2 +- src/osmo_gsm_tester/templates/srsue.conf.tmpl | 5 ++-- .../scenarios/cfg-enb-enable-ul-qam64.conf | 3 +++ 5 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 sysmocom/scenarios/cfg-enb-enable-ul-qam64.conf diff --git a/src/osmo_gsm_tester/core/schema.py b/src/osmo_gsm_tester/core/schema.py index 9d26b0f9..d56d6ec9 100644 --- a/src/osmo_gsm_tester/core/schema.py +++ b/src/osmo_gsm_tester/core/schema.py @@ -111,7 +111,7 @@ def cipher(val): raise ValueError('Unknown Cipher value: %r' % val) def modem_feature(val): - if val in ('sms', 'gprs', 'voice', 'ussd', 'sim', '2g', '3g', '4g', 'dl_qam256'): + if val in ('sms', 'gprs', 'voice', 'ussd', 'sim', '2g', '3g', '4g', 'dl_qam256', 'ul_qam64'): return True raise ValueError('Unknown Modem Feature: %r' % val) diff --git a/src/osmo_gsm_tester/obj/enb_srs.py b/src/osmo_gsm_tester/obj/enb_srs.py index 8319ba4e..7fde7190 100644 --- a/src/osmo_gsm_tester/obj/enb_srs.py +++ b/src/osmo_gsm_tester/obj/enb_srs.py @@ -31,6 +31,7 @@ from ..core import schema def on_register_schemas(): config_schema = { 'enable_pcap': schema.BOOL_STR, + 'enable_ul_qam64': schema.BOOL_STR, 'log_all_level': schema.STR, } schema.register_config_schema('enb', config_schema) @@ -191,6 +192,7 @@ class srsENB(enb.eNodeB, srslte_common): self.enable_pcap = util.str2bool(values['enb'].get('enable_pcap', 'false')) config.overlay(values, dict(enb={'enable_pcap': self.enable_pcap})) + config.overlay(values, dict(enb={'enable_ul_qam64': util.str2bool(values['enb'].get('enable_ul_qam64', 'false'))})) config.overlay(values, dict(enb={'enable_dl_awgn': util.str2bool(values['enb'].get('enable_dl_awgn', 'false'))})) config.overlay(values, dict(enb={'rf_dev_sync': values['enb'].get('rf_dev_sync', None)})) @@ -269,8 +271,6 @@ class srsENB(enb.eNodeB, srslte_common): return rfemu_obj def ue_max_rate(self, downlink=True, num_carriers=1): - - # The max rate for a single UE per PRB configuration in TM1 with MCS 28 if 'dl_qam256' in self.ue.features(): max_phy_rate_tm1_dl = {6: 5.9e6, @@ -286,12 +286,21 @@ class srsENB(enb.eNodeB, srslte_common): 50: 36e6, 75: 55e6, 100: 75e6} - max_phy_rate_tm1_ul = { 6 : 1.7e6, - 15 : 4.7e6, - 25 : 10e6, - 50 : 23e6, - 75 : 34e6, - 100 : 51e6 } + + if 'ul_qam64' in self.ue.features(): + max_phy_rate_tm1_ul = { 6 : 2.7e6, + 15 : 6.5e6, + 25 : 14e6, + 50 : 32e6, + 75 : 34e6, + 100 : 70e6 } + else: + max_phy_rate_tm1_ul = { 6 : 1.7e6, + 15 : 4.7e6, + 25 : 10e6, + 50 : 23e6, + 75 : 34e6, + 100 : 51e6 } if downlink: max_rate = max_phy_rate_tm1_dl[self.num_prb()] diff --git a/src/osmo_gsm_tester/templates/srsenb_sib.conf.tmpl b/src/osmo_gsm_tester/templates/srsenb_sib.conf.tmpl index 6d178c64..c7384809 100644 --- a/src/osmo_gsm_tester/templates/srsenb_sib.conf.tmpl +++ b/src/osmo_gsm_tester/templates/srsenb_sib.conf.tmpl @@ -66,7 +66,7 @@ sib2 = n_sb = 1; hopping_mode = "inter-subframe"; pusch_hopping_offset = 2; - enable_64_qam = false; // 64QAM PUSCH is not currently enabled + enable_64_qam = ${enb.enable_ul_qam64}; ul_rs = { cyclic_shift = 0; diff --git a/src/osmo_gsm_tester/templates/srsue.conf.tmpl b/src/osmo_gsm_tester/templates/srsue.conf.tmpl index 31642cd0..120b9389 100644 --- a/src/osmo_gsm_tester/templates/srsue.conf.tmpl +++ b/src/osmo_gsm_tester/templates/srsue.conf.tmpl @@ -150,10 +150,11 @@ imei = 353490069873319 % if int(ue.num_carriers) > 1: ue_category = 7 release = 10 -% elif "dl_qam256" in ue.features: -ue_category = 7 +% elif "dl_qam256" in ue.features or "ul_qam64" in ue.features: +ue_category = 8 release = 13 ue_category_dl = 14 +ue_category_ul = 5 % else: #ue_category = 4 #release = 8 diff --git a/sysmocom/scenarios/cfg-enb-enable-ul-qam64.conf b/sysmocom/scenarios/cfg-enb-enable-ul-qam64.conf new file mode 100644 index 00000000..446c9662 --- /dev/null +++ b/sysmocom/scenarios/cfg-enb-enable-ul-qam64.conf @@ -0,0 +1,3 @@ +config: + enb: + enable_ul_qam64: true \ No newline at end of file