From 4f7a0b4705727093da6533f08aaa28686150539d Mon Sep 17 00:00:00 2001
From: bingwang-ms <66248323+bingwang-ms@users.noreply.github.com>
Date: Tue, 22 Nov 2022 03:42:28 +0800
Subject: [PATCH] Apply separated DSCP_TO_TC_MAP and TC_TO_QUEUE_MAP to uplink
 ports on dualtor (#12730)

Why I did it
The PR is to apply separated DSCP_TO_TC_MAP and TC_TO_QUEUE_MAP to uplink ports on dualtor.
The traffic with DSCP 2 and DSCP 6 from T1 is treated as lossless traffic.

DSCP    TC    Queue
2      2     2
6      6     6
Traffic with DSCP 2 or DSCP 6 from downlink is still treated as lossy traffic as before.

How I did it
Define DSCP_TO_TC_MAP|AZURE_UPLINK and TC_TO_QUEUE_MAP|AZURE_UPLINK.

How to verify it
Verified by UT
Verified by coping the new template to a testbed, and rendering a config_db.json
---
 .../BALANCED/qos.json.j2                      |  81 ++++++++++++-
 .../BALANCED/qos.json.j2                      |  81 ++++++++++++-
 .../profiles/th2/7260/BALANCED/qos.json.j2    |  79 +++++++++++++
 .../th2/7260/RDMA-CENTRIC/qos.json.j2         |  77 ++++++++++++
 files/build_templates/qos_config.j2           |  14 ++-
 .../py3/qos-arista7050cx3-dualtor.json        | 111 +++++++++++++++---
 .../py3/qos-arista7260-dualtor.json           | 109 ++++++++++++++---
 7 files changed, 516 insertions(+), 36 deletions(-)

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 040da33dd79f..74059a27d24b 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 040da33dd79f..74059a27d24b 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 750d0fb0ea77..743002c4f022 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 771b8305f8f0..260b3ec87fae 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 aeba03f595cf..4695b51459cc 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 afe1e9946eb6..842a84274c66 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 b4f5b5f42e77..40768edc934d 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",