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
This commit is contained in:
Andre Puschmann 2020-11-16 12:39:43 +01:00
parent 76021babc7
commit 3166b6353e
5 changed files with 25 additions and 12 deletions

View File

@ -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)

View File

@ -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()]

View File

@ -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;

View File

@ -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

View File

@ -0,0 +1,3 @@
config:
enb:
enable_ul_qam64: true