diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/BALANCED/qos.json.j2 b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/BALANCED/qos.json.j2 index 040da33dd7..74059a27d2 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/BALANCED/qos.json.j2 +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/BALANCED/qos.json.j2 @@ -1,4 +1,6 @@ {% if 'subtype' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['subtype'] == 'DualToR' %} +{% set different_dscp_to_tc_map = true %} +{% set different_tc_to_queue_map = true %} {%- macro generate_dscp_to_tc_map() %} "DSCP_TO_TC_MAP": { "AZURE": { @@ -67,7 +69,73 @@ "62": "1", "63": "1" }, - "AZURE_TUNNEL": { + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, + "AZURE_TUNNEL": { "0" : "1", "1" : "1", "2" : "1", @@ -174,6 +242,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/BALANCED/qos.json.j2 b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/BALANCED/qos.json.j2 index 040da33dd7..74059a27d2 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/BALANCED/qos.json.j2 +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/BALANCED/qos.json.j2 @@ -1,4 +1,6 @@ {% if 'subtype' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['subtype'] == 'DualToR' %} +{% set different_dscp_to_tc_map = true %} +{% set different_tc_to_queue_map = true %} {%- macro generate_dscp_to_tc_map() %} "DSCP_TO_TC_MAP": { "AZURE": { @@ -67,7 +69,73 @@ "62": "1", "63": "1" }, - "AZURE_TUNNEL": { + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, + "AZURE_TUNNEL": { "0" : "1", "1" : "1", "2" : "1", @@ -174,6 +242,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", diff --git a/device/common/profiles/th2/7260/BALANCED/qos.json.j2 b/device/common/profiles/th2/7260/BALANCED/qos.json.j2 index 750d0fb0ea..743002c4f0 100644 --- a/device/common/profiles/th2/7260/BALANCED/qos.json.j2 +++ b/device/common/profiles/th2/7260/BALANCED/qos.json.j2 @@ -151,6 +151,8 @@ }, {%- endmacro %} {% elif ('subtype' in DEVICE_METADATA['localhost'] and DEVICE_METADATA['localhost']['subtype'] == 'DualToR') %} +{% set different_dscp_to_tc_map = true %} +{% set different_tc_to_queue_map = true %} {%- macro generate_dscp_to_tc_map() %} "DSCP_TO_TC_MAP": { "AZURE": { @@ -219,6 +221,72 @@ "62": "1", "63": "1" }, + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, "AZURE_TUNNEL": { "0" : "1", "1" : "1", @@ -326,6 +394,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", diff --git a/device/common/profiles/th2/7260/RDMA-CENTRIC/qos.json.j2 b/device/common/profiles/th2/7260/RDMA-CENTRIC/qos.json.j2 index 771b8305f8..260b3ec87f 100644 --- a/device/common/profiles/th2/7260/RDMA-CENTRIC/qos.json.j2 +++ b/device/common/profiles/th2/7260/RDMA-CENTRIC/qos.json.j2 @@ -218,6 +218,72 @@ "62": "1", "63": "1" }, + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, "AZURE_TUNNEL": { "0" : "1", "1" : "1", @@ -325,6 +391,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", diff --git a/files/build_templates/qos_config.j2 b/files/build_templates/qos_config.j2 index aeba03f595..4695b51459 100644 --- a/files/build_templates/qos_config.j2 +++ b/files/build_templates/qos_config.j2 @@ -240,13 +240,25 @@ {% 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' %} "dot1p_to_tc_map" : "AZURE", {% else %} -{% if different_dscp_to_tc_map and port not in port_names_list_extra_queues and tunnel_qos_remap_enable %} +{# Apply separated DSCP_TO_TC_MAP to uplink ports on ToR and Leaf #} +{% if different_dscp_to_tc_map and tunnel_qos_remap_enable %} +{% if ('type' in DEVICE_METADATA['localhost']) and (DEVICE_METADATA['localhost']['type'] == 'LeafRouter') and (port not in port_names_list_extra_queues) %} + "dscp_to_tc_map" : "AZURE_UPLINK", +{% elif ('subtype' in DEVICE_METADATA['localhost']) and (DEVICE_METADATA['localhost']['subtype'] == 'DualToR') and (port in port_names_list_extra_queues) %} "dscp_to_tc_map" : "AZURE_UPLINK", {% else %} "dscp_to_tc_map" : "AZURE", {% endif %} +{% else %} + "dscp_to_tc_map" : "AZURE", {% endif %} +{% endif %} +{# Apply separated TC_TO_QUEUE_MAP to uplink ports on ToR #} +{% if different_tc_to_queue_map and tunnel_qos_remap_enable and port in port_names_list_extra_queues %} + "tc_to_queue_map" : "AZURE_UPLINK", +{% else %} "tc_to_queue_map" : "AZURE", +{% endif %} "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", {% if asic_type in pfc_to_pg_map_supported_asics %} diff --git a/src/sonic-config-engine/tests/sample_output/py3/qos-arista7050cx3-dualtor.json b/src/sonic-config-engine/tests/sample_output/py3/qos-arista7050cx3-dualtor.json index afe1e9946e..842a84274c 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/qos-arista7050cx3-dualtor.json +++ b/src/sonic-config-engine/tests/sample_output/py3/qos-arista7050cx3-dualtor.json @@ -15,7 +15,7 @@ "AZURE": { "0": "0", "1": "1", - "2": "1", + "2": "1", "3": "3", "4": "4", "5": "5", @@ -23,6 +23,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", @@ -102,6 +113,72 @@ "62": "1", "63": "1" }, + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, "AZURE_TUNNEL": { "0" : "1", "1" : "1", @@ -269,32 +346,32 @@ "pfcwd_sw_enable" : "3,4" }, "Ethernet24": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet28": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet32": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet36": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", @@ -397,32 +474,32 @@ "pfcwd_sw_enable" : "3,4" }, "Ethernet88": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet92": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet96": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet100": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", diff --git a/src/sonic-config-engine/tests/sample_output/py3/qos-arista7260-dualtor.json b/src/sonic-config-engine/tests/sample_output/py3/qos-arista7260-dualtor.json index b4f5b5f42e..40768edc93 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/qos-arista7260-dualtor.json +++ b/src/sonic-config-engine/tests/sample_output/py3/qos-arista7260-dualtor.json @@ -23,6 +23,17 @@ "7": "7", "8": "1" }, + "AZURE_UPLINK": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "1" + }, "AZURE_TUNNEL": { "0": "0", "1": "1", @@ -102,6 +113,72 @@ "62": "1", "63": "1" }, + "AZURE_UPLINK": { + "0" : "1", + "1" : "1", + "2" : "2", + "3" : "3", + "4" : "4", + "5" : "1", + "6" : "6", + "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": "8", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "7", + "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" + }, "AZURE_TUNNEL": { "0" : "1", "1" : "1", @@ -317,64 +394,64 @@ "pfcwd_sw_enable" : "3,4" }, "Ethernet48": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet52": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet56": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet60": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet64": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet68": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet72": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6", "pfcwd_sw_enable" : "3,4" }, "Ethernet76": { - "dscp_to_tc_map" : "AZURE", - "tc_to_queue_map" : "AZURE", + "dscp_to_tc_map" : "AZURE_UPLINK", + "tc_to_queue_map" : "AZURE_UPLINK", "tc_to_pg_map" : "AZURE", "pfc_to_queue_map": "AZURE", "pfc_enable" : "2,3,4,6",