Skip to content

Commit

Permalink
[Mellanox] Update dscp remapping cases for Nvidia platforms (sonic-ne…
Browse files Browse the repository at this point in the history
…t#8317)

This PR contains the fix for two test cases in DSCP remapping test: test_tunnel_decap_dscp_to_pg_mapping and test_xoff_for_pcbb.
The reason that we need this fix:

Nvidia's implementation for DSCP remapping is different from Community. We need some additional mapping and the tunnel mode is pipe. For details please check the PR: [Mellanox] Support DSCP remapping in dual ToR topo on T0 switch sonic-buildimage#12605.
Nvidia's cell size is 144.
Need to stop packet aging in buffer.
Need to add qos parameters for pcbb xoff test case.
  • Loading branch information
congh-nvidia authored and parmarkj committed Oct 3, 2023
1 parent a5c4a84 commit b52e3bf
Show file tree
Hide file tree
Showing 6 changed files with 382 additions and 29 deletions.
2 changes: 2 additions & 0 deletions tests/common/devices/sonic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1663,6 +1663,8 @@ def get_asic_name(self):
asic = "th3"
elif "Cisco Systems Inc Device a001" in output:
asic = "gb"
elif "Mellanox Technologies" in output:
asic = "spc"

return asic

Expand Down
35 changes: 35 additions & 0 deletions tests/qos/files/qos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,41 @@
# xoff_1 for 50G
# xoff_2 for 100G
qos_params:
# This block is only for dualtor pcbb xoff test on Nvidia platforms
spc3:
topo-dualtor:
100000_40m:
pkts_num_leak_out: 0
pcbb_xoff_1:
dscp: 3
ecn: 1
pg: 3
pkts_num_trig_pfc: 176064
pkts_num_trig_ingr_drp: 177916
pkts_num_margin: 4
pcbb_xoff_2:
dscp: 4
ecn: 1
pg: 4
pkts_num_trig_pfc: 176064
pkts_num_trig_ingr_drp: 177916
pkts_num_margin: 4
pcbb_xoff_3:
outer_dscp: 2
dscp: 3
ecn: 1
pg: 2
pkts_num_trig_pfc: 176064
pkts_num_trig_ingr_drp: 177916
pkts_num_margin: 4
pcbb_xoff_4:
outer_dscp: 6
dscp: 4
ecn: 1
pg: 6
pkts_num_trig_pfc: 176064
pkts_num_trig_ingr_drp: 177916
pkts_num_margin: 4
mellanox:
topo-any:
profile:
Expand Down
263 changes: 263 additions & 0 deletions tests/qos/files/tunnel_qos_map_nvidia.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
{
"DSCP_TO_TC_MAP": {
"AZURE": {
"0": "1",
"1": "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"2": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"3": "3",
"30": "1",
"31": "1",
"32": "1",
"33": "8",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"4": "4",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "7",
"49": "1",
"5": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"6": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1",
"7": "1",
"8": "0",
"9": "1"
},
"AZURE_TUNNEL": {
"0": "1",
"1": "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"2": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"3": "3",
"30": "1",
"31": "1",
"32": "1",
"33": "8",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"4": "4",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "7",
"49": "1",
"5": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"6": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1",
"7": "1",
"8": "0",
"9": "1"
},
"AZURE_UPLINK": {
"0": "1",
"1": "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"2": "2",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"3": "3",
"30": "1",
"31": "1",
"32": "1",
"33": "8",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"4": "4",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "7",
"49": "1",
"5": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"6": "6",
"60": "1",
"61": "1",
"62": "1",
"63": "1",
"7": "1",
"8": "0",
"9": "1"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
"0": "0",
"1": "0",
"2": "2",
"3": "3",
"4": "4",
"5": "0",
"6": "6",
"7": "0",
"8": "0"
},
"AZURE_TUNNEL": {
"0": "0",
"1": "0",
"2": "0",
"3": "2",
"4": "6",
"5": "0",
"6": "0",
"7": "0",
"8": "0"
}
},
"TC_TO_DSCP_MAP": {
"AZURE_TUNNEL": {
"0": "8",
"1": "0",
"2": "2",
"3": "2",
"4": "6",
"5": "46",
"6": "6",
"7": "48",
"8": "33"
}
},
"TC_TO_QUEUE_MAP": {
"AZURE": {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "1"
},
"AZURE_TUNNEL": {
"0": "0",
"1": "1",
"2": "2",
"3": "2",
"4": "6",
"5": "5",
"6": "6",
"7": "7",
"8": "1"
}
}
}
9 changes: 7 additions & 2 deletions tests/qos/test_tunnel_qos_remap.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
from .tunnel_qos_remap_base import build_testing_packet, check_queue_counter,\
dut_config, qos_config, load_tunnel_qos_map, run_ptf_test, toggle_mux_to_host,\
setup_module, update_docker_services, swap_syncd, counter_poll_config # noqa F401
from .tunnel_qos_remap_base import leaf_fanout_peer_info, start_pfc_storm, stop_pfc_storm, get_queue_counter
from tunnel_qos_remap_base import leaf_fanout_peer_info, start_pfc_storm, \
stop_pfc_storm, get_queue_counter, disable_packet_aging # noqa F401
from ptf import testutils
from ptf.testutils import simple_tcp_packet
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts # noqa F401
Expand Down Expand Up @@ -502,10 +503,12 @@ def test_tunnel_decap_dscp_to_pg_mapping(rand_selected_dut, ptfhost, dut_config,
# TODO: Get the cell size for other ASIC
if asic == 'th2':
cell_size = 208
elif 'spc' in asic:
cell_size = 144
else:
cell_size = 256

tunnel_qos_map = load_tunnel_qos_map()
tunnel_qos_map = load_tunnel_qos_map(asic_name=asic)
test_params = dict()
test_params.update({
"src_port_id": dut_config["lag_port_ptf_id"],
Expand Down Expand Up @@ -559,6 +562,8 @@ def test_xoff_for_pcbb(rand_selected_dut, ptfhost, dut_config, qos_config, xoff_
"platform_asic": dut_config["platform_asic"],
"sonic_asic_type": dut_config["asic_type"],
})
if dut_config["asic_type"] == 'mellanox':
test_params.update({'cell_size': 144, 'packet_size': 300})
# Update qos config into test_params
test_params.update(qos_config[xoff_profile])
# Run test on ptfhost
Expand Down
Loading

0 comments on commit b52e3bf

Please sign in to comment.