Commit 7d6fbbc3 authored by Joanne Hugé's avatar Joanne Hugé

software/ors-amarisoft: add custom configuration for TOP

Co-Authored-By: Lu Xu's avatarLu Xu <lu.xu@nexedi.com>
parent df6b58d2
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
[template] [template]
filename = instance.cfg filename = instance.cfg
md5sum = acd9dd8dbe613e7101e62930a8380ef0 md5sum = bae57f54df08d48c1f7d2f13654156ed
[template-ors] [template-ors]
filename = instance-ors.cfg filename = instance-ors.cfg
...@@ -24,7 +24,7 @@ md5sum = f5c76c3443b75569eb18503dce38e783 ...@@ -24,7 +24,7 @@ md5sum = f5c76c3443b75569eb18503dce38e783
[slaplte.jinja2] [slaplte.jinja2]
_update_hash_filename_ = slaplte.jinja2 _update_hash_filename_ = slaplte.jinja2
md5sum = 871ade334f445e22d6cb473e4d4e3522 md5sum = 9f93fad31cd1a31e35acfc3b3be5e4ef
[ru_amarisoft-stats.jinja2.py] [ru_amarisoft-stats.jinja2.py]
_update_hash_filename_ = ru/amarisoft-stats.jinja2.py _update_hash_filename_ = ru/amarisoft-stats.jinja2.py
...@@ -36,7 +36,7 @@ md5sum = ab666fdfadbfc7d8a16ace38d295c883 ...@@ -36,7 +36,7 @@ md5sum = ab666fdfadbfc7d8a16ace38d295c883
[ru_libinstance.jinja2.cfg] [ru_libinstance.jinja2.cfg]
_update_hash_filename_ = ru/libinstance.jinja2.cfg _update_hash_filename_ = ru/libinstance.jinja2.cfg
md5sum = 2dda7713832be83d94522c7abb4901f9 md5sum = 18f94a784f28487d3d87584a97814f4a
[ru_sdr_libinstance.jinja2.cfg] [ru_sdr_libinstance.jinja2.cfg]
_update_hash_filename_ = ru/sdr/libinstance.jinja2.cfg _update_hash_filename_ = ru/sdr/libinstance.jinja2.cfg
...@@ -88,7 +88,7 @@ md5sum = 52da9fe3a569199e35ad89ae1a44c30e ...@@ -88,7 +88,7 @@ md5sum = 52da9fe3a569199e35ad89ae1a44c30e
[template-enb] [template-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg _update_hash_filename_ = instance-enb.jinja2.cfg
md5sum = 8b9301f26fc4ffbc7eda9c1ac8da1a46 md5sum = cd3a994ad2db0afab4231935f1d1372d
[template-ors-enb] [template-ors-enb]
_update_hash_filename_ = instance-ors-enb.jinja2.cfg _update_hash_filename_ = instance-ors-enb.jinja2.cfg
...@@ -112,19 +112,39 @@ md5sum = 3b901e8733e6afff8940c6c318da4493 ...@@ -112,19 +112,39 @@ md5sum = 3b901e8733e6afff8940c6c318da4493
[enb.jinja2.cfg] [enb.jinja2.cfg]
filename = config/enb.jinja2.cfg filename = config/enb.jinja2.cfg
md5sum = e1c40827e30d6ddcd98be35ec8569af2 md5sum = 936a89fa76754f613c37400323056001
[drb_lte.jinja2.cfg] [drb_lte.jinja2.cfg]
filename = config/drb_lte.jinja2.cfg filename = config/drb_lte.jinja2.cfg
md5sum = 01eb971e2ff580da52291138495a81ca md5sum = b1dd9773cc46d727cb2c8cc8103801d8
[drb_nr.jinja2.cfg] [drb_nr.jinja2.cfg]
filename = config/drb_nr.jinja2.cfg filename = config/drb_nr.jinja2.cfg
md5sum = 282b11d7b72b01b8325df4632d82b84d md5sum = 282b11d7b72b01b8325df4632d82b84d
[redirect.jinja2.asn]
filename = config/redirect.jinja2.asn
md5sum = 6ffb3702e19194bc9d2b533e0f9899f0
[sib23.jinja2.asn] [sib23.jinja2.asn]
filename = config/sib23.jinja2.asn filename = config/sib23.jinja2.asn
md5sum = 959523597e29b048e45ebf58f7ea4c5b md5sum = 5036b8c8852a96907cc6431ef1c5ead4
[sib4.jinja2.asn]
filename = config/sib4.jinja2.asn
md5sum = 07d28915a58a983ebd7d019ac8196462
[sib5.jinja2.asn]
filename = config/sib5.jinja2.asn
md5sum = d95b64b441e6ef2deaf5582c4c7e0723
[sib6.jinja2.asn]
filename = config/sib6.jinja2.asn
md5sum = 57d6c4cd1ae0adcb61addb3857a8b636
[sib7.jinja2.asn]
filename = config/sib7.jinja2.asn
md5sum = da2102b5ff5bf9317c348e8f97aa5db5
[mme.jinja2.cfg] [mme.jinja2.cfg]
filename = config/mme.jinja2.cfg filename = config/mme.jinja2.cfg
......
...@@ -69,6 +69,6 @@ ...@@ -69,6 +69,6 @@
"$ref": "#/properties/root_sequence_index", "$ref": "#/properties/root_sequence_index",
"description": "Range: 0 to 837. Set the PRACH root sequence index (SIB2.rootSequenceIndex field). It must be different for each neighbour cell operating on the same frequency and sharing the same PRACH configuration.", "description": "Range: 0 to 837. Set the PRACH root sequence index (SIB2.rootSequenceIndex field). It must be different for each neighbour cell operating on the same frequency and sharing the same PRACH configuration.",
"default": 204 "default": 204
} },
} }
} }
...@@ -10,8 +10,13 @@ ...@@ -10,8 +10,13 @@
qci: 1, qci: 1,
ims_dedicated_bearer: true, ims_dedicated_bearer: true,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 300,
pdcp_SN_Size: 12,
{%- else %}
discardTimer: 100, discardTimer: 100,
pdcp_SN_Size: 7, pdcp_SN_Size: 7,
{%- endif %}
}, },
...@@ -21,6 +26,9 @@ ...@@ -21,6 +26,9 @@
pdcp_SN_SizeDL: 12, pdcp_SN_SizeDL: 12,
statusReportRequired: false, statusReportRequired: false,
outOfOrderDelivery: false, outOfOrderDelivery: false,
{%- if cell.custom_config %}
t_Reordering: 0,
{%- endif %}
restrict_to_ng_enb: true, restrict_to_ng_enb: true,
...@@ -48,7 +56,11 @@ ...@@ -48,7 +56,11 @@
qci: 2, qci: 2,
ims_dedicated_bearer: true, ims_dedicated_bearer: true,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
{%- else %}
discardTimer: 150, discardTimer: 150,
{%- endif %}
pdcp_SN_Size: 12, pdcp_SN_Size: 12,
}, },
nr_pdcp_config: { nr_pdcp_config: {
...@@ -81,11 +93,19 @@ ...@@ -81,11 +93,19 @@
{ {
qci: 3, qci: 3,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
{%- else %}
discardTimer: 100, discardTimer: 100,
{%- endif %}
pdcp_SN_Size: 12, pdcp_SN_Size: 12,
}, },
nr_pdcp_config: { nr_pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 300,
{%- else %}
discardTimer: 100, discardTimer: 100,
{%- endif %}
pdcp_SN_SizeUL: 18, pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18, pdcp_SN_SizeDL: 18,
statusReportRequired: false, statusReportRequired: false,
...@@ -146,6 +166,7 @@ ...@@ -146,6 +166,7 @@
logicalChannelSR_Prohibit: false, logicalChannelSR_Prohibit: false,
}, },
}, },
{%- if not cell.custom_config %}
{ {
qci: 65, qci: 65,
ims_dedicated_bearer: true, ims_dedicated_bearer: true,
...@@ -254,6 +275,7 @@ ...@@ -254,6 +275,7 @@
logicalChannelSR_Prohibit: false, logicalChannelSR_Prohibit: false,
}, },
}, },
{%- endif %}
{ {
qci: 5, qci: 5,
...@@ -293,7 +315,11 @@ ...@@ -293,7 +315,11 @@
{ {
qci: 6, qci: 6,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
{%- else %}
discardTimer: 0, discardTimer: 0,
{%- endif %}
statusReportRequired: true, statusReportRequired: true,
}, },
nr_pdcp_config: { nr_pdcp_config: {
...@@ -302,6 +328,9 @@ ...@@ -302,6 +328,9 @@
pdcp_SN_SizeDL: 18, pdcp_SN_SizeDL: 18,
statusReportRequired: true, statusReportRequired: true,
outOfOrderDelivery: false, outOfOrderDelivery: false,
{%- if cell.custom_config %}
t_Reordering: 3000,
{%- endif %}
restrict_to_ng_enb: true, restrict_to_ng_enb: true,
}, },
rlc_config: { rlc_config: {
...@@ -328,8 +357,13 @@ ...@@ -328,8 +357,13 @@
{ {
qci: 7, qci: 7,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
statusReportRequired: true,
{%- else %}
discardTimer: 100, discardTimer: 100,
pdcp_SN_Size: 12, pdcp_SN_Size: 12,
{%- endif %}
}, },
nr_pdcp_config: { nr_pdcp_config: {
discardTimer: 100, discardTimer: 100,
...@@ -341,6 +375,18 @@ ...@@ -341,6 +375,18 @@
restrict_to_ng_enb: true, restrict_to_ng_enb: true,
}, },
rlc_config: { rlc_config: {
{%- if cell.custom_config %}
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
{%- else %}
ul_um: { ul_um: {
sn_FieldLength: 10, sn_FieldLength: 10,
}, },
...@@ -348,6 +394,7 @@ ...@@ -348,6 +394,7 @@
sn_FieldLength: 10, sn_FieldLength: 10,
t_Reordering: {{ T_REORDERING }}, t_Reordering: {{ T_REORDERING }},
}, },
{%- endif %}
}, },
logical_channel_config: { logical_channel_config: {
priority: 13, priority: 13,
...@@ -361,7 +408,11 @@ ...@@ -361,7 +408,11 @@
{ {
qci: 8, qci: 8,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
{%- else %}
discardTimer: 0, discardTimer: 0,
{%- endif %}
statusReportRequired: true, statusReportRequired: true,
}, },
nr_pdcp_config: { nr_pdcp_config: {
...@@ -370,6 +421,9 @@ ...@@ -370,6 +421,9 @@
pdcp_SN_SizeDL: 18, pdcp_SN_SizeDL: 18,
statusReportRequired: true, statusReportRequired: true,
outOfOrderDelivery: false, outOfOrderDelivery: false,
{%- if cell.custom_config %}
t_Reordering: 3000,
{%- endif %}
restrict_to_ng_enb: true, restrict_to_ng_enb: true,
}, },
rlc_config: { rlc_config: {
...@@ -396,7 +450,11 @@ ...@@ -396,7 +450,11 @@
{ {
qci: 9, qci: 9,
pdcp_config: { pdcp_config: {
{%- if cell.custom_config %}
discardTimer: 750,
{%- else %}
discardTimer: 0, discardTimer: 0,
{%- endif %}
statusReportRequired: true, statusReportRequired: true,
}, },
nr_pdcp_config: { nr_pdcp_config: {
...@@ -404,6 +462,9 @@ ...@@ -404,6 +462,9 @@
pdcp_SN_SizeUL: 18, pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18, pdcp_SN_SizeDL: 18,
statusReportRequired: true, statusReportRequired: true,
{%- if cell.custom_config %}
t_Reordering: 3000,
{%- endif %}
outOfOrderDelivery: false, outOfOrderDelivery: false,
}, },
en_dc_split: { en_dc_split: {
...@@ -431,6 +492,7 @@ ...@@ -431,6 +492,7 @@
logicalChannelSR_Prohibit: false, logicalChannelSR_Prohibit: false,
}, },
}, },
{%- if not cell.custom_config %}
{ {
qci: 69, qci: 69,
pdcp_config: { pdcp_config: {
...@@ -501,4 +563,5 @@ ...@@ -501,4 +563,5 @@
logicalChannelSR_Prohibit: false, logicalChannelSR_Prohibit: false,
}, },
}, },
{%- endif %}
] ]
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
{#- for standalone testing via slapos-render-config.py {#- for standalone testing via slapos-render-config.py
NOTE: keep in sync with instance-enb.jinja2.cfg and ru/libinstance.jinja2.cfg #} NOTE: keep in sync with instance-enb.jinja2.cfg and ru/libinstance.jinja2.cfg #}
{%- if _standalone is defined %} {%- if _standalone is defined %}
{%- set iru_dict = {} %} {%- set iru_dict = {} %}
{%- set icell_dict = {} %} {%- set icell_dict = {} %}
{%- set ipeer_dict = {} %} {%- set ipeer_dict = {} %}
{%- set ipeercell_dict = {} %} {%- set ipeercell_dict = {} %}
{%- do slaplte.load_iru_and_icell(iru_dict, icell_dict, icell_kind='enb') %} {%- do slaplte.load_iru_and_icell(iru_dict, icell_dict, icell_kind='enb') %}
{%- do slaplte.load_ipeer(ipeer_dict) %} {%- do slaplte.load_ipeer(ipeer_dict) %}
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
{%- do slaplte.check_loaded_everything() %} {%- do slaplte.check_loaded_everything() %}
{%- endif %} {%- endif %}
{%- set custom_config = slaplte.custom_config %}
{#- do_lte/do_nr indicate whether we have LTE and/or NR cells {#- do_lte/do_nr indicate whether we have LTE and/or NR cells
icell_dict_lte/icell_dict_nr keep LTE/NR parts of icell_dict registry #} icell_dict_lte/icell_dict_nr keep LTE/NR parts of icell_dict registry #}
...@@ -28,17 +29,18 @@ ...@@ -28,17 +29,18 @@
{#- handover_config emits handover configuration for specified cell #} {#- handover_config emits handover configuration for specified cell #}
{%- macro handover_config(cell_ref) %} {%- macro handover_config(cell_ref, custom_config) %}
ncell_list: [ ncell_list: [
// Intra-ENB HO // Intra-ENB HO
{%- for cell2_ref, icell2 in icell_dict|dictsort %} {%- if not custom_config %}
{%- set cell2 = icell2['_'] %} {%- for cell2_ref, icell2 in icell_dict|dictsort %}
{%- if cell2_ref != cell_ref %} {#- NOTE: HO to both LTE and NR #} {%- set cell2 = icell2['_'] %}
{%- set ru2_ref = J(jcell_ru_ref(icell2, icell_dict)) %} {%- if cell2_ref != cell_ref %} {#- NOTE: HO to both LTE and NR #}
{%- set iru2 = iru_dict[ru2_ref] %} {%- set ru2_ref = J(jcell_ru_ref(icell2, icell_dict)) %}
{%- set ru2 = iru2['_'] %} {%- set iru2 = iru_dict[ru2_ref] %}
{%- set ru2 = iru2['_'] %}
{ {
{%- if cell2.cell_type == 'lte' %} {%- if cell2.cell_type == 'lte' %}
rat: "eutra", rat: "eutra",
cell_id: {{ slapparameter_dict.enb_id }}{{ cell2.cell_id.removeprefix('0x') }}, // -> {{ B(cell2_ref) }} cell_id: {{ slapparameter_dict.enb_id }}{{ cell2.cell_id.removeprefix('0x') }}, // -> {{ B(cell2_ref) }}
n_id_cell: {{ cell2.pci }}, n_id_cell: {{ cell2.pci }},
...@@ -46,15 +48,16 @@ ...@@ -46,15 +48,16 @@
tac: {{ cell2.tac }}, tac: {{ cell2.tac }},
allowed_meas_bandwidth: {{ jlte_n_rb_dl(cell2.bandwidth) }}, allowed_meas_bandwidth: {{ jlte_n_rb_dl(cell2.bandwidth) }},
antenna_port_1: {{ (ru2.n_antenna_dl > 1) | tojson }}, antenna_port_1: {{ (ru2.n_antenna_dl > 1) | tojson }},
{%- elif cell2.cell_type == 'nr' %} {%- elif cell2.cell_type == 'nr' %}
rat: "nr", rat: "nr",
cell_id: {{ cell2.cell_id }}, // -> {{ B(cell2_ref) }} cell_id: {{ cell2.cell_id }}, // -> {{ B(cell2_ref) }}
{%- else %} {%- else %}
{%- do bug('unreachable') %} {%- do bug('unreachable') %}
{%- endif %} {%- endif %}
}, },
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{%- endif %}
// Inter-ENB HO // Inter-ENB HO
{#- TODO: add info about peers as shared instances - one instance per peer *ENB*. {#- TODO: add info about peers as shared instances - one instance per peer *ENB*.
...@@ -62,8 +65,9 @@ ...@@ -62,8 +65,9 @@
put them as peers here #} put them as peers here #}
{%- for peercell_ref, ipeercell in ipeercell_dict|dictsort %} {%- for peercell_ref, ipeercell in ipeercell_dict|dictsort %}
{%- set ncell = ipeercell['_'] %} {%- set ncell = ipeercell['_'] %}
{%- if ncell.get('cell_ref', False) and (ncell.cell_ref == cell_ref) %}
{ {
{%- if ncell.cell_type == 'lte' %} {%- if ncell.cell_type == 'lte' %}
rat: "eutra", rat: "eutra",
cell_id: {{ ncell.e_cell_id }}, // -> {{ B(peercell_ref) }} cell_id: {{ ncell.e_cell_id }}, // -> {{ B(peercell_ref) }}
n_id_cell: {{ ncell.pci }}, n_id_cell: {{ ncell.pci }},
...@@ -72,8 +76,14 @@ ...@@ -72,8 +76,14 @@
{#- TODO: consider extending peer/cell/lte with {#- TODO: consider extending peer/cell/lte with
.allowed_meas_bandwidth and .antenna_port_1 #} .allowed_meas_bandwidth and .antenna_port_1 #}
allowed_meas_bandwidth: {{ jlte_n_rb_dl(1.4) }}, // (minimum possible bw) allowed_meas_bandwidth: {{ jlte_n_rb_dl(1.4) }}, // (minimum possible bw)
{%- if custom_config %}
"neigh_cell_config": 1,
"individual_offset": 0,
antenna_port_1: true,
{%- else %}
antenna_port_1: false, // (conservative stub) antenna_port_1: false, // (conservative stub)
{%- elif ncell.cell_type == 'nr' %} {%- endif %}
{%- elif ncell.cell_type == 'nr' %}
rat: "nr", rat: "nr",
nr_cell_id: {{ ncell.nr_cell_id }}, // -> {{ B(peercell_ref) }} nr_cell_id: {{ ncell.nr_cell_id }}, // -> {{ B(peercell_ref) }}
gnb_id_bits: {{ ncell.gnb_id_bits }}, gnb_id_bits: {{ ncell.gnb_id_bits }},
...@@ -87,11 +97,12 @@ ...@@ -87,11 +97,12 @@
ssb_period: 20, ssb_period: 20,
ssb_offset: 0, ssb_offset: 0,
ssb_duration: 1, ssb_duration: 1,
{%- else %} {%- else %}
{%- do bug('unreachable') %} {%- do bug('unreachable') %}
{%- endif %} {%- endif %}
}, },
{%- endfor %} {%- endif %}
{%- endfor %}
], ],
{%- endmacro %} {%- endmacro %}
...@@ -130,7 +141,6 @@ ...@@ -130,7 +141,6 @@
{{- (_.host, _.port) | tojson }} {{- (_.host, _.port) | tojson }}
{%- endmacro -%} {%- endmacro -%}
{#- start of the config -#} {#- start of the config -#}
{ {
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1, log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1,
...@@ -161,6 +171,16 @@ ...@@ -161,6 +171,16 @@
{%- for _, mme in slapparameter_dict.mme_list |dictsort %} {%- for _, mme in slapparameter_dict.mme_list |dictsort %}
{ {
mme_addr: "{{ mme['mme_addr'] }}", mme_addr: "{{ mme['mme_addr'] }}",
{%- if mme.get('qci_dscp_mapping', []) %}
qci_dscp_mapping: [
{%- for qci_dscp in mme.get('qci_dscp_mapping', []) %}
{
qci: {{ qci_dscp['qci'] }},
dscp: {{ qci_dscp['dscp'] }},
},
{%- endfor %}
],
{%- endif %}
}, },
{%- endfor %} {%- endfor %}
], ],
...@@ -246,8 +266,6 @@ ...@@ -246,8 +266,6 @@
// {{ B(cell_ref) }} ({{ B(ru_ref) }}) // {{ B(cell_ref) }} ({{ B(ru_ref) }})
{ {
rf_port: {{ ru._rf_port }}, rf_port: {{ ru._rf_port }},
n_antenna_dl: {{ ru.n_antenna_dl }},
n_antenna_ul: {{ ru.n_antenna_ul }},
cell_id: {{ cell.cell_id }}, cell_id: {{ cell.cell_id }},
tac: {{ cell.tac }}, tac: {{ cell.tac }},
...@@ -256,10 +274,12 @@ ...@@ -256,10 +274,12 @@
ul_earfcn: {{ cell.ul_earfcn }}, ul_earfcn: {{ cell.ul_earfcn }},
root_sequence_index: {{ cell.root_sequence_index }}, root_sequence_index: {{ cell.root_sequence_index }},
inactivity_timer: {{ cell.inactivity_timer }}, inactivity_timer: {{ cell.inactivity_timer }},
n_antenna_dl: {{ ru.n_antenna_dl }},
n_antenna_ul: {{ ru.n_antenna_ul }},
// Handover // Handover
{{- handover_config(cell_ref) }} {{- handover_config(cell_ref, cell.custom_config) }}
// Carrier Aggregation: LTE + LTE // Carrier Aggregation: LTE + LTE
scell_list: [ scell_list: [
...@@ -269,6 +289,9 @@ ...@@ -269,6 +289,9 @@
{ {
cell_id: {{ cell2.cell_id }}, // + {{ B(cell2_ref) }} cell_id: {{ cell2.cell_id }}, // + {{ B(cell2_ref) }}
cross_carrier_scheduling: false, cross_carrier_scheduling: false,
{%- if cell.custom_config %}
"rrc_configuration": "measurement",
{%- endif %}
}, },
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
...@@ -309,13 +332,22 @@ ...@@ -309,13 +332,22 @@
si_coderate: {{ 0.30 if n_rb_dl == 6 else 0.20 }}, si_coderate: {{ 0.30 if n_rb_dl == 6 else 0.20 }},
pdsch_dedicated: { pdsch_dedicated: {
{%- if cell.custom_config %}
p_a: {{ cell.pdsch_dedicated.p_a }},
p_b: {{ cell.pdsch_dedicated.p_b }},
{%- else %}
p_a: {{ {4: -6, 2: -3}.get(ru.n_antenna_dl, 0) }}, p_a: {{ {4: -6, 2: -3}.get(ru.n_antenna_dl, 0) }},
p_b: -1, p_b: -1,
{%- endif %}
}, },
pdcch_format: {{ 1 if n_rb_dl == 6 else 2 }}, pdcch_format: {{ 1 if n_rb_dl == 6 else 2 }},
prach_config_index: {{ 15 if n_rb_dl == 6 else 4 }}, prach_config_index: {{ 15 if n_rb_dl == 6 else 4 }},
{%- if cell.custom_config %}
initial_cqi: {{ cell.initial_cqi }},
{%- else %}
initial_cqi: {{ 5 if n_rb_dl == 6 else 3 }}, initial_cqi: {{ 5 if n_rb_dl == 6 else 3 }},
{%- endif %}
pucch_dedicated: { pucch_dedicated: {
n1_pucch_sr_count: 11, n1_pucch_sr_count: 11,
...@@ -371,6 +403,20 @@ ...@@ -371,6 +403,20 @@
filename: "{{ B('%s-sib23.asn' % cell_ref) }}", filename: "{{ B('%s-sib23.asn' % cell_ref) }}",
si_periodicity: 16, si_periodicity: 16,
}, },
{%- if cell.custom_config %}
{
filename: "{{ B('%s-sib5.asn' % cell_ref) }}",
si_periodicity: 32,
},
{
filename: "{{ B('%s-sib6.asn' % cell_ref) }}",
si_periodicity: 64,
},
{
filename: "{{ B('%s-sib7.asn' % cell_ref) }}",
si_periodicity: 64,
},
{%- endif %}
], ],
}, },
{%- endfor %} {%- endfor %}
......
geran: {
startingARFCN 10,
bandIndicator dcs1800,
followingARFCNs explicitListOfARFCNs: {99, 116, 879, 862, 859, 872, 84, 86, 864, 865, 123, 882, 884, 866, 765, 871, 80, 875, 881, 763, 874, 863, 98, 81, 85}
},
utra-FDD: 10762
...@@ -8,7 +8,14 @@ ...@@ -8,7 +8,14 @@
radioResourceConfigCommon { radioResourceConfigCommon {
rach-ConfigCommon { rach-ConfigCommon {
preambleInfo { preambleInfo {
numberOfRA-Preambles n52 numberOfRA-Preambles n52,
{%- if cell.custom_config %}
preamblesGroupAConfig{
sizeOfRA-PreamblesGroupA n28,
messageSizeGroupA b56,
messagePowerOffsetGroupB dB10
}
{%- endif %}
}, },
powerRampingParameters { powerRampingParameters {
powerRampingStep dB2, powerRampingStep dB2,
...@@ -17,24 +24,40 @@ ...@@ -17,24 +24,40 @@
ra-SupervisionInfo { ra-SupervisionInfo {
preambleTransMax n10, preambleTransMax n10,
ra-ResponseWindowSize sf10, ra-ResponseWindowSize sf10,
mac-ContentionResolutionTimer sf40 {%- if cell.custom_config %}
mac-ContentionResolutionTimer sf64
{%- endif %}
}, },
maxHARQ-Msg3Tx 5 maxHARQ-Msg3Tx 5
}, },
bcch-Config { bcch-Config {
{%- if cell.custom_config %}
modificationPeriodCoeff n2
{%- else %}
modificationPeriodCoeff n4 modificationPeriodCoeff n4
{%- endif %}
}, },
pcch-Config { pcch-Config {
{%- if cell.custom_config %}
defaultPagingCycle rf64,
{%- else %}
defaultPagingCycle rf128, defaultPagingCycle rf128,
{%- endif %}
nB oneT nB oneT
}, },
prach-Config { prach-Config {
rootSequenceIndex 0, /* patched by eNB */ rootSequenceIndex 0, /* patched by eNB */
prach-ConfigInfo { prach-ConfigInfo {
{%- if cell.custom_config %}
prach-ConfigIndex 3, /* patched by eNB */
zeroCorrelationZoneConfig 12,
prach-FreqOffset 17 /* patched by eNB */
{%- else %}
prach-ConfigIndex 4, /* patched by eNB */ prach-ConfigIndex 4, /* patched by eNB */
highSpeedFlag FALSE,
zeroCorrelationZoneConfig 11, zeroCorrelationZoneConfig 11,
prach-FreqOffset 4 /* patched by eNB */ prach-FreqOffset 4 /* patched by eNB */
{%- endif %}
highSpeedFlag FALSE,
} }
}, },
pdsch-ConfigCommon { pdsch-ConfigCommon {
...@@ -90,12 +113,21 @@ ...@@ -90,12 +113,21 @@
ul-CyclicPrefixLength len1 ul-CyclicPrefixLength len1
}, },
ue-TimersAndConstants { ue-TimersAndConstants {
{%- if cell.custom_config %}
t300 ms600,
t301 ms600,
t310 ms2000,
n310 n10,
t311 ms5000,
n311 n1
{%- else %}
t300 ms200, t300 ms200,
t301 ms200, t301 ms200,
t310 ms200, t310 ms200,
n310 n6, n310 n6,
t311 ms10000, t311 ms10000,
n311 n5 n311 n5
{%- endif %}
}, },
freqInfo { freqInfo {
additionalSpectrumEmission 1 additionalSpectrumEmission 1
...@@ -107,14 +139,23 @@ ...@@ -107,14 +139,23 @@
q-Hyst dB2 q-Hyst dB2
}, },
cellReselectionServingFreqInfo { cellReselectionServingFreqInfo {
{%- if cell.custom_config %}
s-NonIntraSearch 21,
threshServingLow 4,
{%- else %}
s-NonIntraSearch 3, s-NonIntraSearch 3,
threshServingLow 2, threshServingLow 2,
{%- endif %}
cellReselectionPriority 6 cellReselectionPriority 6
}, },
intraFreqCellReselectionInfo { intraFreqCellReselectionInfo {
q-RxLevMin -61, q-RxLevMin -61,
p-Max 23, p-Max 23,
{%- if cell.custom_config %}
s-IntraSearch 26,
{%- else %}
s-IntraSearch 5, s-IntraSearch 5,
{%- endif %}
presenceAntennaPort1 TRUE, presenceAntennaPort1 TRUE,
neighCellConfig '01'B, neighCellConfig '01'B,
t-ReselectionEUTRA 1 t-ReselectionEUTRA 1
......
{
message c1: systemInformation: {
criticalExtensions systemInformation-r8: {
sib-TypeAndInfo {
sib4: {
intraFreqNeighCellList {
{
physCellId 100,
q-OffsetCell dB0
}
}
}
}
}
}
}
{%- if cell.custom_config %}
{
message c1: systemInformation: {
criticalExtensions systemInformation-r8: {
sib-TypeAndInfo {
sib5: {
interFreqCarrierFreqList {
{%- for earfcn in [1802, 3200, 6275, 38100, 375] %}
{%- if cell.dl_earfcn != earfcn %}
{
dl-CarrierFreq {{ earfcn }},
q-RxLevMin {{ custom_config[earfcn]['sib5']['q-RxLevMin'] }},
p-Max 23,
t-ReselectionEUTRA {{ custom_config[earfcn]['sib5']['t-ReselectionEUTRA'] }},
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High {{ custom_config[earfcn]['sib5']['threshX-High'] }},
threshX-Low {{ custom_config[earfcn]['sib5']['threshX-Low'] }},
allowedMeasBandwidth {{ custom_config[earfcn]['sib5']['allowedMeasBandwidth'] }},
presenceAntennaPort1 TRUE,
cellReselectionPriority {{ custom_config[earfcn]['sib5']['cellReselectionPriority'] }},
neighCellConfig '01'B,
q-OffsetFreq {{ custom_config[earfcn]['sib5']['q-OffsetFreq'] }}
},
{%- endif %}
{%- endfor %}
}
}
}
}
}
}
{%- endif %}
{
message c1: systemInformation: {
criticalExtensions systemInformation-r8: {
sib-TypeAndInfo {
sib5: {
interFreqCarrierFreqList {
{
dl-CarrierFreq 6275,
q-RxLevMin -61,
p-Max 23,
t-ReselectionEUTRA 2,
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High 0,
threshX-Low 13,
allowedMeasBandwidth mbw25,
presenceAntennaPort1 TRUE,
cellReselectionPriority 2,
neighCellConfig '01'B,
q-OffsetFreq dB0
},
{
dl-CarrierFreq 3200,
q-RxLevMin -61,
p-Max 23,
t-ReselectionEUTRA 1,
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High 6,
threshX-Low 0,
allowedMeasBandwidth mbw50,
presenceAntennaPort1 TRUE,
cellReselectionPriority 5,
neighCellConfig '01'B,
q-OffsetFreq dB0
},
{
dl-CarrierFreq 1802,
q-RxLevMin -61,
p-Max 23,
t-ReselectionEUTRA 1,
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High 6,
threshX-Low 6,
allowedMeasBandwidth mbw100,
presenceAntennaPort1 TRUE,
cellReselectionPriority 5,
neighCellConfig '01'B,
q-OffsetFreq dB0
},
{
dl-CarrierFreq 38100,
q-RxLevMin -53,
p-Max 23,
t-ReselectionEUTRA 1,
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High 6,
threshX-Low 0,
allowedMeasBandwidth mbw100,
presenceAntennaPort1 TRUE,
cellReselectionPriority 5,
neighCellConfig '01'B,
q-OffsetFreq dB-10
},
{
dl-CarrierFreq 375,
q-RxLevMin -61,
p-Max 23,
t-ReselectionEUTRA 1,
t-ReselectionEUTRA-SF {
sf-Medium oDot25,
sf-High oDot25
},
threshX-High 6,
threshX-Low 0,
allowedMeasBandwidth mbw75,
presenceAntennaPort1 TRUE,
cellReselectionPriority 5,
neighCellConfig '01'B,
q-OffsetFreq dB-3
}
}
},
sib6: {
t-ReselectionUTRA 2,
carrierFreqListUTRA-FDD {
{
carrierFreq 10714,
cellReselectionPriority 7,
threshX-High 5,
threshX-Low 5,
q-RxLevMin -53,
p-MaxUTRA 24,
q-QualMin -22
},
{
carrierFreq 10762,
cellReselectionPriority 3,
threshX-High 5,
threshX-Low 5,
q-RxLevMin -53,
p-MaxUTRA 24,
q-QualMin -22
},
{
carrierFreq 10738,
cellReselectionPriority 3,
threshX-High 5,
threshX-Low 5,
q-RxLevMin -53,
p-MaxUTRA 24,
q-QualMin -22
},
{
carrierFreq 10713,
cellReselectionPriority 3,
threshX-High 5,
threshX-Low 5,
q-RxLevMin -53,
p-MaxUTRA 24,
q-QualMin -22
},
{
carrierFreq 2987,
cellReselectionPriority 3,
threshX-High 5,
threshX-Low 5,
q-RxLevMin -53,
p-MaxUTRA 24,
q-QualMin -22
}
}
}
}
}
}
}
{
message c1: systemInformation: {
criticalExtensions systemInformation-r8: {
sib-TypeAndInfo {
sib7: {
t-ReselectionGERAN 1,
carrierFreqsInfoList {
{
carrierFreqs {
startingARFCN 763,
bandIndicator dcs1800,
followingARFCNs explicitListOfARFCNs: {763,765,859,862,863,864,865,866,871,872,874,875,879,881,882,884}
},
commonInfo {
ncc-Permitted '11111111'B,
q-RxLevMin 11,
threshX-High 0,
threshX-Low 2
}
},
{
carrierFreqs {
startingARFCN 80,
bandIndicator dcs1800,
followingARFCNs explicitListOfARFCNs: {80, 81, 84, 85, 86, 98, 99, 116, 123}
},
commonInfo {
ncc-Permitted '11111111'B,
q-RxLevMin 11,
threshX-High 0,
threshX-Low 2
}
}
}
}
}
}
}
}
...@@ -30,6 +30,27 @@ ...@@ -30,6 +30,27 @@
"title": "MME Address", "title": "MME Address",
"description": "IP address (and optional port) of S1AP SCTP connection to the MME. The default port is 36412.", "description": "IP address (and optional port) of S1AP SCTP connection to the MME. The default port is 36412.",
"type": "string" "type": "string"
},
"qci_dscp_mapping":{
"title": "QCI DSCP Mapping",
"description": "Optional array of objects. Allows to define a specific IP differentiated services code point for a given QCI. QCI not explicitly configured use the default DSCP value 0.",
"type": "array",
"items": {
"title": "QCI DSCP Mapping",
"type":"object",
"properties": {
"qci": {
"title": "QCI",
"description": "Integer (range 1 to 254). QCI value.",
"type":"integer"
},
"dscp": {
"title": "DSCP",
"description": "Integer (range 0 to 63). DSCP value.",
"type":"integer"
}
}
}
} }
}, },
"type": "object" "type": "object"
...@@ -37,6 +58,15 @@ ...@@ -37,6 +58,15 @@
}, },
"type": "object" "type": "object"
}, },
"x2_peers": {
"title": "X2 Peers",
"description": "Optional array of strings. IP addresses and optional port of other eNodeBs to establish X2 connections. The default port is 36422.",
"type": "array",
"items": {
"title": "X2 Peers",
"type": "string"
}
},
"plmn_list": { "plmn_list": {
"title": "PLMN list (4G)", "title": "PLMN list (4G)",
"description": "List of PLMNs broadcasted by the eNodeB, at most 6. (must be set if there are LTE cells)", "description": "List of PLMNs broadcasted by the eNodeB, at most 6. (must be set if there are LTE cells)",
......
...@@ -34,14 +34,14 @@ eggs-directory = {{ eggs_directory }} ...@@ -34,14 +34,14 @@ eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }}
offline = true offline = true
{%- set icell_kind='enb' %} {%- set icell_kind='enb' %}
{%- import 'slaplte.jinja2' as slaplte with context %} {%- import 'slaplte.jinja2' as slaplte with context %}
{%- import 'ru_libinstance.jinja2.cfg' as rulib with context %} {%- import 'ru_libinstance.jinja2.cfg' as rulib with context %}
{%- set ipeer_dict = {} %} {%- set ipeer_dict = {} %}
{%- set ipeercell_dict = {} %} {%- set ipeercell_dict = {} %}
{%- do slaplte.load_ipeer(ipeer_dict) %} {%- do slaplte.load_ipeer(ipeer_dict) %}
{%- do slaplte.load_ipeercell(ipeercell_dict) %} {%- do slaplte.load_ipeercell(ipeercell_dict) %}
{%- do slaplte.check_loaded_everything() %} {%- do slaplte.check_loaded_everything() %}
{{ rulib.buildout() }} {{ rulib.buildout() }}
......
...@@ -155,7 +155,12 @@ extra-context = ...@@ -155,7 +155,12 @@ extra-context =
raw slaplte_template ${slaplte.jinja2:target} raw slaplte_template ${slaplte.jinja2:target}
raw drb_lte_template ${drb_lte.jinja2.cfg:target} raw drb_lte_template ${drb_lte.jinja2.cfg:target}
raw drb_nr_template ${drb_nr.jinja2.cfg:target} raw drb_nr_template ${drb_nr.jinja2.cfg:target}
raw redirect_template ${redirect.jinja2.asn:target}
raw sib23_template ${sib23.jinja2.asn:target} raw sib23_template ${sib23.jinja2.asn:target}
raw sib4_template ${sib4.jinja2.asn:target}
raw sib5_template ${sib5.jinja2.asn:target}
raw sib6_template ${sib6.jinja2.asn:target}
raw sib7_template ${sib7.jinja2.asn:target}
raw ru_amarisoft_stats_template ${ru_amarisoft-stats.jinja2.py:target} raw ru_amarisoft_stats_template ${ru_amarisoft-stats.jinja2.py:target}
raw ru_amarisoft_rf_info_template ${ru_amarisoft-rf-info.jinja2.py:target} raw ru_amarisoft_rf_info_template ${ru_amarisoft-rf-info.jinja2.py:target}
raw ru_lopcomm_stats_template ${ru_lopcomm_stats.jinja2.py:target} raw ru_lopcomm_stats_template ${ru_lopcomm_stats.jinja2.py:target}
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
}, },
"dl_earfcn": { "$ref": "../../../cell/lte/input-schema.json#/properties/dl_earfcn" }, "dl_earfcn": { "$ref": "../../../cell/lte/input-schema.json#/properties/dl_earfcn" },
"pci": { "$ref": "../../../cell/lte/input-schema.json#/properties/pci" }, "pci": { "$ref": "../../../cell/lte/input-schema.json#/properties/pci" },
"tac": { "$ref": "../../../cell/lte/input-schema.json#/properties/tac" } "tac": { "$ref": "../../../cell/lte/input-schema.json#/properties/tac" },
"allowed_meas_bandwidth": { "$ref": "../../../cell/lte/input-schema.json#/properties/bandwidth" }
} }
} }
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
#} #}
{%- set iru_dict = {} %} {%- set iru_dict = {} %}
{%- set icell_dict = {} %} {%- set icell_dict = {} %}
{%- set custom_config = slaplte.custom_defaults %}
{%- do slaplte.load_iru_and_icell(iru_dict, icell_dict, icell_kind) %} {%- do slaplte.load_iru_and_icell(iru_dict, icell_dict, icell_kind) %}
{%- macro buildout() %} {%- macro buildout() %}
{%- set root = slap_configuration['instance-title'] %} {%- set root = slap_configuration['instance-title'] %}
{%- set testing = slapparameter_dict.get("testing", False) %} {%- set testing = slapparameter_dict.get("testing", False) %}
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
[{{ B(name) }}] [{{ B(name) }}]
{%- endmacro %} {%- endmacro %}
{#- promise emits new buildout section for a promise #} {#- promise emits new buildout section for a promise #}
{%- macro promise(name) %} {%- macro promise(name) %}
{#- show in monitor RU1-... instead of COMP-ENB/RU1- #} {#- show in monitor RU1-... instead of COMP-ENB/RU1- #}
...@@ -291,6 +292,65 @@ cell_ref = {{ dumps(cell_ref) }} ...@@ -291,6 +292,65 @@ cell_ref = {{ dumps(cell_ref) }}
cell = {{ dumps(cell ) }} cell = {{ dumps(cell ) }}
ru_ref = {{ dumps(ru_ref ) }} ru_ref = {{ dumps(ru_ref ) }}
ru = {{ dumps(ru ) }} ru = {{ dumps(ru ) }}
{#- generate CELL-sib4.asn, CELL-sib5.asn, CELL-sib6.asn and CELL-sib7.asn #}
{{ part('sib4-config-%s' % cell_ref) }}
<= config-base
url = {{ sib4_template }}
output = ${directory:etc}/{{B('%s-sib4.asn' % cell_ref)}}
extra-context =
key cell_ref :cell_ref
key cell :cell
key ru_ref :ru_ref
key ru :ru
cell_ref = {{ dumps(cell_ref) }}
cell = {{ dumps(cell ) }}
ru_ref = {{ dumps(ru_ref ) }}
ru = {{ dumps(ru ) }}
{{ part('sib5-config-%s' % cell_ref) }}
<= config-base
url = {{ sib5_template }}
output = ${directory:etc}/{{B('%s-sib5.asn' % cell_ref)}}
extra-context =
key cell_ref :cell_ref
key cell :cell
key ru_ref :ru_ref
key ru :ru
key custom_config :custom_config
cell_ref = {{ dumps(cell_ref) }}
cell = {{ dumps(cell ) }}
ru_ref = {{ dumps(ru_ref ) }}
ru = {{ dumps(ru ) }}
custom_config = {{ dumps(custom_config) }}
{{ part('sib6-config-%s' % cell_ref) }}
<= config-base
url = {{ sib6_template }}
output = ${directory:etc}/{{B('%s-sib6.asn' % cell_ref)}}
extra-context =
key cell_ref :cell_ref
key cell :cell
key ru_ref :ru_ref
key ru :ru
cell_ref = {{ dumps(cell_ref) }}
cell = {{ dumps(cell ) }}
ru_ref = {{ dumps(ru_ref ) }}
ru = {{ dumps(ru ) }}
{{ part('sib7-config-%s' % cell_ref) }}
<= config-base
url = {{ sib7_template }}
output = ${directory:etc}/{{B('%s-sib7.asn' % cell_ref)}}
extra-context =
key cell_ref :cell_ref
key cell :cell
key ru_ref :ru_ref
key ru :ru
cell_ref = {{ dumps(cell_ref) }}
cell = {{ dumps(cell ) }}
ru_ref = {{ dumps(ru_ref ) }}
ru = {{ dumps(ru ) }}
{%- endif %} {%- endif %}
{#- publish information about the cell (skipping synthetic) #} {#- publish information about the cell (skipping synthetic) #}
......
...@@ -88,6 +88,144 @@ ...@@ -88,6 +88,144 @@
} }
%} %}
{#- Custom configuration request by one of our clients #}
{%- set custom_defaults = {
3200: {
'ru/lopcomm': {
'n_antenna_dl': 4,
'n_antenna_ul': 4,
},
'cell/lte': {
'pdsch_dedicated': {
'p_a': -6,
'p_b': -1,
},
'bandwidth': 10,
'initial_cqi': 1,
},
'cell/lte/sib_sched_list': {
'sib5_filename': 'sib5_3200.asn',
},
'sib5': {
'q-RxLevMin': -61,
't-ReselectionEUTRA': 1,
'threshX-High': 6,
'threshX-Low': 0,
'allowedMeasBandwidth': 'mbw50',
'cellReselectionPriority': 5,
'q-OffsetFreq': 'dB0',
},
},
6275: {
'ru/lopcomm': {
'n_antenna_dl': 2,
'n_antenna_ul': 2,
},
'cell/lte': {
'pdsch_dedicated': {
'p_a': -3,
'p_b': -1,
},
'bandwidth': 5,
'initial_cqi': 3,
},
'cell/lte/sib_sched_list': {
'sib5_filename': 'sib5_6275.asn',
},
'sib5': {
'q-RxLevMin': -61,
't-ReselectionEUTRA': 2,
'threshX-High': 0,
'threshX-Low': 13,
'allowedMeasBandwidth': 'mbw25',
'cellReselectionPriority': 2,
'q-OffsetFreq': 'dB0',
},
},
1802: {
'ru/lopcomm': {
'n_antenna_dl': 4,
'n_antenna_ul': 4,
},
'cell/lte': {
'n_antenna_dl': 4,
'n_antenna_ul': 4,
'pdsch_dedicated': {
'p_a': -6,
'p_b': -1,
},
'bandwidth': 20,
'initial_cqi': 1,
},
'cell/lte/sib_sched_list': {
'sib5_filename': 'sib5_1802.asn',
},
'sib5': {
'q-RxLevMin': -61,
't-ReselectionEUTRA': 1,
'threshX-High': 6,
'threshX-Low': 6,
'allowedMeasBandwidth': 'mbw100',
'cellReselectionPriority': 5,
'q-OffsetFreq': 'dB0',
},
},
38100: {
'ru/lopcomm': {
'n_antenna_dl': 0,
'n_antenna_ul': 0,
},
'cell/lte': {
'pdsch_dedicated': {
'p_a': 0,
'p_b': 0,
},
'bandwidth': 0,
'initial_cqi': 0,
},
'cell/lte/sib_sched_list': {
'sib5_filename': 'xxx',
},
'sib5': {
'q-RxLevMin': -53,
't-ReselectionEUTRA': 1,
'threshX-High': 6,
'threshX-Low': 0,
'allowedMeasBandwidth': 'mbw100',
'cellReselectionPriority': 5,
'q-OffsetFreq': 'dB-10',
},
},
375: {
'ru/lopcomm': {
'n_antenna_dl': 0,
'n_antenna_ul': 0,
},
'cell/lte': {
'pdsch_dedicated': {
'p_a': 0,
'p_b': 0,
},
'bandwidth': 0,
'initial_cqi': 0,
},
'cell/lte/sib_sched_list': {
'sib5_filename': 'xxx',
},
'sib5': {
'q-RxLevMin': -61,
't-ReselectionEUTRA': 1,
'threshX-High': 6,
'threshX-Low': 0,
'allowedMeasBandwidth': 'mbw75',
'cellReselectionPriority': 5,
'q-OffsetFreq': 'dB-3',
},
},
}
%}
{#- B(name) escapes name to be safe to use in buildout code. {#- B(name) escapes name to be safe to use in buildout code.
...@@ -207,6 +345,9 @@ ...@@ -207,6 +345,9 @@
{%- do ishared.update({'_': J(ishared['_'])}) %} {%- do ishared.update({'_': J(ishared['_'])}) %}
{%- endfor %} {%- endfor %}
{%- macro load_custom_config(cc) %}
{%- do cc.update(custom_config) %}
{%- endmacro %}
{#- load_iru_and_icell initializes RU and cell registries. {#- load_iru_and_icell initializes RU and cell registries.
...@@ -230,6 +371,7 @@ ...@@ -230,6 +371,7 @@
{%- set icell = ishared %} {%- set icell = ishared %}
{%- do _cell_set_defaults(_, icell_kind, icell_dict) %} {%- do _cell_set_defaults(_, icell_kind, icell_dict) %}
{%- do icell_dict.update({ref: icell}) %} {%- do icell_dict.update({ref: icell}) %}
{%- do _cell_set_custom_defaults(_, icell_kind) %}
{%- set ru = _['ru'] %} {%- set ru = _['ru'] %}
{%- if ru.ru_type not in ('ru_ref', 'ruincell_ref') %} {%- if ru.ru_type not in ('ru_ref', 'ruincell_ref') %}
{#- embedded ru definition -> expose it as synthethic `_<cell_ref>_ru` #} {#- embedded ru definition -> expose it as synthethic `_<cell_ref>_ru` #}
...@@ -244,6 +386,9 @@ ...@@ -244,6 +386,9 @@
{%- do qother.append(ishared) %} {%- do qother.append(ishared) %}
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{%- for ref, iru in iru_dict|dictsort %}
{%- do _ru_set_custom_defaults(ref, iru, icell_dict) %}
{%- endfor %}
{%- do qshared_instance_list.clear() %} {%- do qshared_instance_list.clear() %}
{%- do qshared_instance_list.extend(qother) %} {%- do qshared_instance_list.extend(qother) %}
...@@ -331,6 +476,35 @@ ...@@ -331,6 +476,35 @@
{%- endif %} {%- endif %}
{%- endmacro %} {%- endmacro %}
{%- macro _cell_set_custom_defaults(cell, icell_kind) %}
{%- do cell.setdefault('custom_config', False) %}
{%- if icell_kind == 'enb' %}
{%- if cell.custom_config %}
{%- if cell.dl_earfcn in custom_defaults %}
{%- for k, v in custom_defaults[cell.dl_earfcn]['cell/%s' % (cell.cell_type,)].items() %}
{%- do cell.setdefault(k, v) %}
{%- endfor %}
{%- do cell.setdefault('sib5_filename', custom_defaults[cell.dl_earfcn]['cell/lte/sib_sched_list']['sib5_filename']) %}
{%- do cell.setdefault('sib5', {}) %}
{%- for k, v in custom_defaults[cell.dl_earfcn]['sib5'].items() %}
{%- do cell['sib5'].setdefault(k, v) %}
{%- endfor %}
{%- endif %}
{%- endif %}
{%- endif %}
{%- endmacro %}
{%- macro _ru_set_custom_defaults(ru_ref, ru, icell_dict) %}
{%- set earfcn = {'_': 0} %}
{%- for _, icell in icell_dict|dictsort %}
{%- if icell['_'].ru.ru_ref == ru_ref %}
{%- do earfcn.update({'_': icell['_'].dl_earfcn}) %}
{%- endif %}
{%- endfor %}
{%- for k, v in custom_defaults[earfcn['_']]['ru/lopcomm'].items() %}
{%- do ru['_'].update({k: v}) %}
{%- endfor %}
{%- endmacro %}
{#- jcell_ru_ref returns RU reference linked from a cell. {#- jcell_ru_ref returns RU reference linked from a cell.
if the cell embeds RU definition, its reference comes as `_<cell_ref>_ru`. #} if the cell embeds RU definition, its reference comes as `_<cell_ref>_ru`. #}
......
...@@ -482,6 +482,10 @@ def _do_enb_with(iru_icell_func): ...@@ -482,6 +482,10 @@ def _do_enb_with(iru_icell_func):
json_params = """{ json_params = """{
%(jextra)s %(jextra)s
"sib23_file": "sib2_3.asn", "sib23_file": "sib2_3.asn",
"sib4_file": "sib4.asn",
"sib5_file": "sib5.asn",
"sib6_file": "sib6.asn",
"sib7_file": "sib7.asn",
"slap_configuration": { "slap_configuration": {
"tap-name": "slaptap9", "tap-name": "slaptap9",
"slap-computer-partition-id": "slappart9", "slap-computer-partition-id": "slappart9",
...@@ -492,6 +496,7 @@ def _do_enb_with(iru_icell_func): ...@@ -492,6 +496,7 @@ def _do_enb_with(iru_icell_func):
"etc": "etc", "etc": "etc",
"var": "var" "var": "var"
}, },
"custom_config": "False",
"slapparameter_dict": { "slapparameter_dict": {
"enb_id": "0x1A2D0", "enb_id": "0x1A2D0",
"gnb_id": "0x12345", "gnb_id": "0x12345",
...@@ -514,6 +519,7 @@ def _do_enb_with(iru_icell_func): ...@@ -514,6 +519,7 @@ def _do_enb_with(iru_icell_func):
icell_dict = {} icell_dict = {}
ipeer_dict = {} ipeer_dict = {}
ipeercell_dict = {} ipeercell_dict = {}
custom_config = False
for ishared in ienb.shared_instance_list: for ishared in ienb.shared_instance_list:
ref = ref_of_shared(ishared) ref = ref_of_shared(ishared)
_ = json.loads(ishared['_']) _ = json.loads(ishared['_'])
...@@ -547,6 +553,7 @@ def _do_enb_with(iru_icell_func): ...@@ -547,6 +553,7 @@ def _do_enb_with(iru_icell_func):
'cell': cell, 'cell': cell,
'ru_ref': ru_ref, 'ru_ref': ru_ref,
'ru': ru, 'ru': ru,
'custom_config': custom_config,
}) })
j2render('drb_%s.jinja2.cfg' % cell['cell_type'], j2render('drb_%s.jinja2.cfg' % cell['cell_type'],
'%s/%s-drb.cfg' % (out, B(cell_ref)), '%s/%s-drb.cfg' % (out, B(cell_ref)),
...@@ -556,6 +563,23 @@ def _do_enb_with(iru_icell_func): ...@@ -556,6 +563,23 @@ def _do_enb_with(iru_icell_func):
'%s/%s-sib23.asn' % (out, B(cell_ref)), '%s/%s-sib23.asn' % (out, B(cell_ref)),
jctx) jctx)
if custom_config:
j2render('sib4.jinja2.asn',
'%s/%s-sib4.asn' % (out, B(cell_ref)),
jctx)
j2render('sib5.jinja2.asn',
'%s/%s-sib5.asn' % (out, B(cell_ref)),
jctx)
j2render('sib6.jinja2.asn',
'%s/%s-sib6.asn' % (out, B(cell_ref)),
jctx)
j2render('sib7.jinja2.asn',
'%s/%s-sib7.asn' % (out, B(cell_ref)),
jctx)
# ---- UE ---- # ---- UE ----
......
...@@ -34,7 +34,12 @@ parts += ...@@ -34,7 +34,12 @@ parts +=
ue.jinja2.cfg ue.jinja2.cfg
drb_lte.jinja2.cfg drb_lte.jinja2.cfg
drb_nr.jinja2.cfg drb_nr.jinja2.cfg
redirect.jinja2.asn
sib23.jinja2.asn sib23.jinja2.asn
sib4.jinja2.asn
sib5.jinja2.asn
sib6.jinja2.asn
sib7.jinja2.asn
monitor-httpd-extra-conf monitor-httpd-extra-conf
# copy all gadget file # copy all gadget file
gadget gadget
...@@ -111,9 +116,23 @@ filename = enb.jinja2.cfg ...@@ -111,9 +116,23 @@ filename = enb.jinja2.cfg
<= copy-config-to-instance <= copy-config-to-instance
[drb_nr.jinja2.cfg] [drb_nr.jinja2.cfg]
<= copy-config-to-instance <= copy-config-to-instance
[redirect.jinja2.asn]
<= copy-config-to-instance
[sib23.jinja2.asn] [sib23.jinja2.asn]
<= copy-config-to-instance <= copy-config-to-instance
filename = sib23.jinja2.asn filename = sib23.jinja2.asn
[sib4.jinja2.asn]
<= copy-config-to-instance
filename = sib4.jinja2.asn
[sib5.jinja2.asn]
<= copy-config-to-instance
filename = sib5.jinja2.asn
[sib6.jinja2.asn]
<= copy-config-to-instance
filename = sib6.jinja2.asn
[sib7.jinja2.asn]
<= copy-config-to-instance
filename = sib7.jinja2.asn
[ue_db.jinja2.cfg] [ue_db.jinja2.cfg]
<= copy-config-to-instance <= copy-config-to-instance
filename = ue_db.jinja2.cfg filename = ue_db.jinja2.cfg
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment