2018-10-17 16:10:34 -05:00
{%- set PORT_ALL = [] %}
{%- for port in PORT %}
{%- if PORT_ALL.append(port) %}{% endif %}
{%- endfor %}
{%- if PORT_ALL | sort_by_port_index %}{% endif %}
{%- set port_names_list_all = [] %}
{%- for port in PORT_ALL %}
{%- if port_names_list_all.append(port) %}{% endif %}
{%- endfor %}
{%- set port_names_all = port_names_list_all | join(',') -%}
{%- set PORT_ACTIVE = [] %}
{%- if DEVICE_NEIGHBOR is not defined %}
{%- set PORT_ACTIVE = PORT_ALL %}
{%- else %}
{%- for port in DEVICE_NEIGHBOR.keys() %}
{%- if PORT_ACTIVE.append(port) %}{%- endif %}
{%- endfor %}
{%- endif %}
{%- if PORT_ACTIVE | sort_by_port_index %}{% endif %}
{%- set port_names_list_active = [] %}
{%- for port in PORT_ACTIVE %}
{%- if port_names_list_active.append(port) %}{%- endif %}
{%- endfor %}
{%- set port_names_active = port_names_list_active | join(',') -%}
2022-06-02 03:29:25 -05:00
{%- set tunnel_qos_remap_enable = false %}
{%- if ((SYSTEM_DEFAULTS is defined) and ('tunnel_qos_remap' in SYSTEM_DEFAULTS) and (SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled')) %}
{%- set tunnel_qos_remap_enable = true %}
{%- endif %}
{%- set port_names_list_extra_queues = [] %}
{%- for port in PORT_ACTIVE %}
{% if ((generate_dscp_to_tc_map is defined) and tunnel_qos_remap_enable) and
(('type' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['type'] == 'LeafRouter' and DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR[port].name in DEVICE_NEIGHBOR_METADATA and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[port].name].type == 'ToRRouter') or
('subtype' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['subtype'] == 'DualToR' and DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR[port].name in DEVICE_NEIGHBOR_METADATA and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[port].name].type == 'LeafRouter')) %}
{%- if port_names_list_extra_queues.append(port) %}{%- endif %}
{%- endif %}
{%- endfor %}
2018-10-17 16:10:34 -05:00
{%- set pfc_to_pg_map_supported_asics = ['mellanox', 'barefoot', 'marvell'] -%}
2019-09-13 13:28:25 -05:00
{%- set backend_device_types = ['BackEndToRRouter', 'BackEndLeafRouter'] -%}
2022-02-15 18:15:20 -06:00
{%- set apollo_resource_types = ['DL-NPU-Apollo'] -%}
2018-10-17 16:10:34 -05:00
{
2022-06-02 03:29:25 -05:00
{% if (generate_tc_to_pg_map is defined) and tunnel_qos_remap_enable %}
2018-10-17 16:10:34 -05:00
{{- generate_tc_to_pg_map() }}
{% else %}
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
"0": "0",
2019-03-08 04:23:32 -06:00
"1": "0",
"2": "0",
2018-10-17 16:10:34 -05:00
"3": "3",
"4": "4",
2019-03-08 04:23:32 -06:00
"5": "0",
"6": "0",
2018-10-17 16:10:34 -05:00
"7": "7"
}
},
{% endif %}
"MAP_PFC_PRIORITY_TO_QUEUE": {
"AZURE": {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7"
}
},
2022-06-02 03:29:25 -05:00
{% if (generate_tc_to_queue_map is defined) and tunnel_qos_remap_enable %}
{{- generate_tc_to_queue_map() }}
{% else %}
2018-10-17 16:10:34 -05:00
"TC_TO_QUEUE_MAP": {
"AZURE": {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7"
}
},
2022-06-02 03:29:25 -05:00
{% endif %}
2020-11-10 17:06:35 -06:00
{% if 'type' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['type'] in backend_device_types and 'storage_device' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['storage_device'] == 'true' %}
2019-09-13 13:28:25 -05:00
"DOT1P_TO_TC_MAP": {
"AZURE": {
2021-05-20 12:36:39 -05:00
"0": "1",
"1": "0",
2019-09-13 13:28:25 -05:00
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7"
}
},
2022-06-02 03:29:25 -05:00
{% elif (generate_dscp_to_tc_map is defined) and tunnel_qos_remap_enable %}
{{- generate_dscp_to_tc_map() }}
2019-09-13 13:28:25 -05:00
{% else %}
2018-10-17 16:10:34 -05:00
"DSCP_TO_TC_MAP": {
"AZURE": {
2019-01-30 21:00:13 -06:00
"0" : "1",
"1" : "1",
"2" : "1",
2018-10-17 16:10:34 -05:00
"3" : "3",
"4" : "4",
2019-01-30 21:00:13 -06:00
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
2018-12-04 22:51:55 -06:00
"46": "5",
2019-01-30 21:00:13 -06:00
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
2018-10-17 16:10:34 -05:00
}
},
2019-09-13 13:28:25 -05:00
{% endif %}
2022-06-02 03:29:25 -05:00
{% if (generate_tc_to_dscp_map is defined) and tunnel_qos_remap_enable %}
{{- generate_tc_to_dscp_map() }}
{% endif %}
2022-02-15 18:15:20 -06:00
{% if 'resource_type' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['resource_type'] in apollo_resource_types %}
"SCHEDULER": {
"scheduler.0": {
"type" : "DWRR",
"weight": "1"
},
"scheduler.1": {
"type" : "DWRR",
"weight": "1"
},
"scheduler.2": {
"type" : "DWRR",
"weight": "100"
}
},
{% else %}
2018-10-17 16:10:34 -05:00
"SCHEDULER": {
"scheduler.0": {
"type" : "DWRR",
2019-01-30 21:00:13 -06:00
"weight": "14"
},
"scheduler.1": {
"type" : "DWRR",
"weight": "15"
2018-10-17 16:10:34 -05:00
}
},
2022-02-15 18:15:20 -06:00
{% endif %}
2018-10-17 16:10:34 -05:00
{% if asic_type in pfc_to_pg_map_supported_asics %}
"PFC_PRIORITY_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
"3": "3",
"4": "4"
}
},
{% endif %}
"PORT_QOS_MAP": {
2022-06-17 07:49:56 -05:00
{% if generate_global_dscp_to_tc_map is defined %}
{{- generate_global_dscp_to_tc_map() }}
{% else %}
"global": {
"dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]"
}{% if PORT_ACTIVE %},{% endif %}
{% endif %}
2019-10-02 15:01:16 -05:00
{% for port in PORT_ACTIVE %}
"{{ port }}": {
2020-11-10 17:06:35 -06:00
{% if 'type' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['type'] in backend_device_types and 'storage_device' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['storage_device'] == 'true' %}
2019-09-13 13:28:25 -05:00
"dot1p_to_tc_map" : "[DOT1P_TO_TC_MAP|AZURE]",
{% else %}
2018-10-17 16:10:34 -05:00
"dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
2019-09-13 13:28:25 -05:00
{% endif %}
2018-10-17 16:10:34 -05:00
"tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
"tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
"pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
{% if asic_type in pfc_to_pg_map_supported_asics %}
"pfc_to_pg_map" : "[PFC_PRIORITY_TO_PRIORITY_GROUP_MAP|AZURE]",
{% endif %}
2022-06-02 03:29:25 -05:00
{% if port in port_names_list_extra_queues %}
"pfc_enable" : "2,3,4,6",
{% else %}
"pfc_enable" : "3,4",
{% endif %}
"pfcwd_sw_enable" : "3,4"
2019-10-02 15:01:16 -05:00
}{% if not loop.last %},{% endif %}
{% endfor %}
2018-10-17 16:10:34 -05:00
},
2020-05-09 13:21:18 -05:00
{% if generate_wred_profiles is defined %}
{{- generate_wred_profiles() }}
{% else %}
2018-10-17 16:10:34 -05:00
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
2018-12-04 22:51:55 -06:00
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
2018-10-17 16:10:34 -05:00
}
},
2020-05-09 13:21:18 -05:00
{% endif %}
2018-10-17 16:10:34 -05:00
"QUEUE": {
{% for port in PORT_ACTIVE %}
"{{ port }}|3": {
2019-01-30 21:00:13 -06:00
"scheduler" : "[SCHEDULER|scheduler.1]",
2018-12-04 22:51:55 -06:00
"wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
2018-10-17 16:10:34 -05:00
},
{% endfor %}
2022-02-15 18:15:20 -06:00
{% if 'resource_type' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['resource_type'] in apollo_resource_types %}
{% for port in PORT_ACTIVE %}
"{{ port }}|4": {
"scheduler" : "[SCHEDULER|scheduler.2]",
"wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
},
{% endfor %}
{% else %}
2018-10-17 16:10:34 -05:00
{% for port in PORT_ACTIVE %}
"{{ port }}|4": {
2019-01-30 21:00:13 -06:00
"scheduler" : "[SCHEDULER|scheduler.1]",
2018-12-04 22:51:55 -06:00
"wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
2018-10-17 16:10:34 -05:00
},
{% endfor %}
2022-02-15 18:15:20 -06:00
{% endif %}
2018-10-17 16:10:34 -05:00
{% for port in PORT_ACTIVE %}
"{{ port }}|0": {
2018-12-04 22:51:55 -06:00
"scheduler": "[SCHEDULER|scheduler.0]"
2018-10-17 16:10:34 -05:00
},
{% endfor %}
{% for port in PORT_ACTIVE %}
"{{ port }}|1": {
2018-12-04 22:51:55 -06:00
"scheduler": "[SCHEDULER|scheduler.0]"
},
{% endfor %}
2019-01-30 21:00:13 -06:00
{% for port in PORT_ACTIVE %}
"{{ port }}|2": {
2022-06-02 03:29:25 -05:00
{% if port in port_names_list_extra_queues %}
"scheduler" : "[SCHEDULER|scheduler.1]",
"wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
{% else %}
2019-01-30 21:00:13 -06:00
"scheduler": "[SCHEDULER|scheduler.0]"
2022-06-02 03:29:25 -05:00
{% endif %}
2019-01-30 21:00:13 -06:00
},
{% endfor %}
2018-12-04 22:51:55 -06:00
{% for port in PORT_ACTIVE %}
"{{ port }}|5": {
"scheduler": "[SCHEDULER|scheduler.0]"
2019-01-30 21:00:13 -06:00
},
{% endfor %}
{% for port in PORT_ACTIVE %}
"{{ port }}|6": {
2022-06-02 03:29:25 -05:00
{% if port in port_names_list_extra_queues %}
"scheduler" : "[SCHEDULER|scheduler.1]",
"wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
{% else %}
2019-01-30 21:00:13 -06:00
"scheduler": "[SCHEDULER|scheduler.0]"
2022-06-02 03:29:25 -05:00
{% endif %}
2018-10-17 16:10:34 -05:00
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}