{#- Package lte provides helpers for configuring LTE cells. -#} {#- XXX -> nr ? #} {%- macro default_ssb_nr_arfcn(dl_nr_arfcn) %} {#- NOTE: rechecked computations wrt https://tech-academy.amarisoft.com/OutOfBox_UEsim_SA.html#Tips_SSB_Frequency #} {%- set f = nr.get_frequency(nrarfcn=dl_nr_arfcn) %} {%- set gscn = nr.get_gscn_by_frequency(f) %} {%- if nr.get_frequency_by_gscn(gscn) > f %}{# nrarfcn rounds up, amari down #} {%- set gscn = gscn - 1 %} {%- endif %} {%- set fg = nr.get_frequency_by_gscn(gscn) %} {%- set fg_arfcn = nr.get_nrarfcn(fg) %} {{- fg_arfcn }} {%- endmacro %} {#- cell_tdd_config returns tdd_config for an LTE cell. #} {%- macro cell_tdd_config(cell) %} {%- set _ = {'[Configuration 2] 5ms 2UL 6DL (default)': 2, '[Configuration 6] 5ms 5UL 3DL (maximum uplink)': 6} %} {{- _[cell.tdd_ul_dl_config] }} {%- endmacro -%} {#- XXX doc, naming ok ? #} {%- macro nr_cell_tdd_config(cell) %} {%- set _ = {'5ms 2UL 7DL 4/6 (default)': 1, '2.5ms 1UL 3DL 2/10': 2, '5ms 8UL 3DL 2/10 (maximum uplink)': 3} %} {{- _[cell.tdd_ul_dl_config] }} {%- endmacro -%} {#- cell_n_rb_dl returns n_rb_dl for an LTE cell. #} {%- macro cell_n_rb_dl(cell) %} {%- set _ = {'1.4 MHz': 6, '3 MHz': 15, '5 MHz': 25, '10 MHz': 50, '15 MHz': 75, '20 MHz': 100} %} {{- _[cell.bandwidth] }} {%- endmacro -%} {#- cell_drb_config returns drb_config section for an LTE cell. DRB configuration varies in beteen FDD and TDD modes. #} {%- macro cell_drb_config(cell) %} {%- if cell.rf_mode == 'tdd' %} {%- set T_REORDERING = 65 %} {%- else %} {%- set T_REORDERING = 35 %} {%- endif %} [ { qci: 1, ims_dedicated_bearer: true, pdcp_config: { discardTimer: 100, pdcp_SN_Size: 7, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 12, pdcp_SN_SizeDL: 12, statusReportRequired: false, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 5, }, dl_um: { sn_FieldLength: 5, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 7, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 2, ims_dedicated_bearer: true, pdcp_config: { discardTimer: 150, pdcp_SN_Size: 12, }, nr_pdcp_config: { discardTimer: 150, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 10, }, dl_um: { sn_FieldLength: 10, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 9, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 3, pdcp_config: { discardTimer: 100, pdcp_SN_Size: 12, }, nr_pdcp_config: { discardTimer: 100, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 10, }, dl_um: { sn_FieldLength: 10, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 8, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 4, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 10, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 65, ims_dedicated_bearer: true, pdcp_config: { discardTimer: 100, pdcp_SN_Size: 7, }, nr_pdcp_config: { discardTimer: 100, pdcp_SN_SizeUL: 12, pdcp_SN_SizeDL: 12, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 5, }, dl_um: { sn_FieldLength: 5, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 5, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 66, ims_dedicated_bearer: true, pdcp_config: { discardTimer: 150, pdcp_SN_Size: 12, }, nr_pdcp_config: { discardTimer: 150, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 10, }, dl_um: { sn_FieldLength: 10, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 7, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 67, ims_dedicated_bearer: true, pdcp_config: { discardTimer: 100, pdcp_SN_Size: 12, }, nr_pdcp_config: { discardTimer: 100, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 10, }, dl_um: { sn_FieldLength: 10, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 6, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 5, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 6, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 6, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 12, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 2, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 7, pdcp_config: { discardTimer: 100, pdcp_SN_Size: 12, }, nr_pdcp_config: { discardTimer: 100, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: false, outOfOrderDelivery: false, t_Reordering: 0, restrict_to_ng_enb: true, }, rlc_config: { ul_um: { sn_FieldLength: 10, }, dl_um: { sn_FieldLength: 10, t_Reordering: {{ T_REORDERING }}, }, }, logical_channel_config: { priority: 13, prioritisedBitRate: 0, bucketSizeDuration: 100, logicalChannelGroup: 2, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 8, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 14, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 2, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 9, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, }, en_dc_split: { type: "scg", ul_data_threshold: 0 }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 15, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 3, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 69, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 4, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 1, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, { qci: 70, pdcp_config: { discardTimer: 0, statusReportRequired: true, }, nr_pdcp_config: { discardTimer: 0, pdcp_SN_SizeUL: 18, pdcp_SN_SizeDL: 18, statusReportRequired: true, outOfOrderDelivery: false, restrict_to_ng_enb: true, }, rlc_config: { ul_am: { t_PollRetransmit: 80, pollPDU: 64, pollByte: 125, maxRetxThreshold: 32, }, dl_am: { t_Reordering: {{ T_REORDERING }}, t_StatusProhibit: 10, }, }, logical_channel_config: { priority: 11, prioritisedBitRate: 8, bucketSizeDuration: 100, logicalChannelGroup: 2, logicalChannelSR_Mask: false, logicalChannelSR_Prohibit: false, }, }, ] {%- endmacro %}