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:
parent
76021babc7
commit
3166b6353e
|
@ -111,7 +111,7 @@ def cipher(val):
|
||||||
raise ValueError('Unknown Cipher value: %r' % val)
|
raise ValueError('Unknown Cipher value: %r' % val)
|
||||||
|
|
||||||
def modem_feature(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
|
return True
|
||||||
raise ValueError('Unknown Modem Feature: %r' % val)
|
raise ValueError('Unknown Modem Feature: %r' % val)
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ from ..core import schema
|
||||||
def on_register_schemas():
|
def on_register_schemas():
|
||||||
config_schema = {
|
config_schema = {
|
||||||
'enable_pcap': schema.BOOL_STR,
|
'enable_pcap': schema.BOOL_STR,
|
||||||
|
'enable_ul_qam64': schema.BOOL_STR,
|
||||||
'log_all_level': schema.STR,
|
'log_all_level': schema.STR,
|
||||||
}
|
}
|
||||||
schema.register_config_schema('enb', config_schema)
|
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'))
|
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_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={'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)}))
|
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
|
return rfemu_obj
|
||||||
|
|
||||||
def ue_max_rate(self, downlink=True, num_carriers=1):
|
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
|
# The max rate for a single UE per PRB configuration in TM1 with MCS 28
|
||||||
if 'dl_qam256' in self.ue.features():
|
if 'dl_qam256' in self.ue.features():
|
||||||
max_phy_rate_tm1_dl = {6: 5.9e6,
|
max_phy_rate_tm1_dl = {6: 5.9e6,
|
||||||
|
@ -286,12 +286,21 @@ class srsENB(enb.eNodeB, srslte_common):
|
||||||
50: 36e6,
|
50: 36e6,
|
||||||
75: 55e6,
|
75: 55e6,
|
||||||
100: 75e6}
|
100: 75e6}
|
||||||
max_phy_rate_tm1_ul = { 6 : 1.7e6,
|
|
||||||
15 : 4.7e6,
|
if 'ul_qam64' in self.ue.features():
|
||||||
25 : 10e6,
|
max_phy_rate_tm1_ul = { 6 : 2.7e6,
|
||||||
50 : 23e6,
|
15 : 6.5e6,
|
||||||
75 : 34e6,
|
25 : 14e6,
|
||||||
100 : 51e6 }
|
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:
|
if downlink:
|
||||||
max_rate = max_phy_rate_tm1_dl[self.num_prb()]
|
max_rate = max_phy_rate_tm1_dl[self.num_prb()]
|
||||||
|
|
|
@ -66,7 +66,7 @@ sib2 =
|
||||||
n_sb = 1;
|
n_sb = 1;
|
||||||
hopping_mode = "inter-subframe";
|
hopping_mode = "inter-subframe";
|
||||||
pusch_hopping_offset = 2;
|
pusch_hopping_offset = 2;
|
||||||
enable_64_qam = false; // 64QAM PUSCH is not currently enabled
|
enable_64_qam = ${enb.enable_ul_qam64};
|
||||||
ul_rs =
|
ul_rs =
|
||||||
{
|
{
|
||||||
cyclic_shift = 0;
|
cyclic_shift = 0;
|
||||||
|
|
|
@ -150,10 +150,11 @@ imei = 353490069873319
|
||||||
% if int(ue.num_carriers) > 1:
|
% if int(ue.num_carriers) > 1:
|
||||||
ue_category = 7
|
ue_category = 7
|
||||||
release = 10
|
release = 10
|
||||||
% elif "dl_qam256" in ue.features:
|
% elif "dl_qam256" in ue.features or "ul_qam64" in ue.features:
|
||||||
ue_category = 7
|
ue_category = 8
|
||||||
release = 13
|
release = 13
|
||||||
ue_category_dl = 14
|
ue_category_dl = 14
|
||||||
|
ue_category_ul = 5
|
||||||
% else:
|
% else:
|
||||||
#ue_category = 4
|
#ue_category = 4
|
||||||
#release = 8
|
#release = 8
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
config:
|
||||||
|
enb:
|
||||||
|
enable_ul_qam64: true
|
Loading…
Reference in New Issue