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)
|
||||
|
||||
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)
|
||||
|
||||
|
|
|
@ -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()]
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
config:
|
||||
enb:
|
||||
enable_ul_qam64: true
|
Loading…
Reference in New Issue