diff --git a/.azure-pipelines/run-test-scheduler-template.yml b/.azure-pipelines/run-test-scheduler-template.yml
index f43ce59d8a57..575ea243c80f 100644
--- a/.azure-pipelines/run-test-scheduler-template.yml
+++ b/.azure-pipelines/run-test-scheduler-template.yml
@@ -11,12 +11,12 @@ parameters:
default: 36000
- name: MIN_WORKER
- type: number
+ type: string
default: 1
- name: MAX_WORKER
- type: number
- default: 2
+ type: string
+ default: 1
- name: TEST_SET
type: string
diff --git a/.github/workflows/automerge_scan.yml b/.github/workflows/automerge_scan.yml
new file mode 100644
index 000000000000..d2c970a159dc
--- /dev/null
+++ b/.github/workflows/automerge_scan.yml
@@ -0,0 +1,59 @@
+name: AutoMergeScan
+on:
+ schedule:
+ - cron: '31 */2 * * *'
+ workflow_dispatch:
+
+jobs:
+ automerge_scan:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Debug
+ env:
+ TOKEN: ${{ secrets.TOKEN }}
+ run: |
+ set -e
+
+ echo ${TOKEN} | gh auth login --with-token
+ gh pr list -R sonic-net/sonic-buildimage -A mssonicbld --json additions,assignees,author,baseRefName,body,changedFiles,closed,closedAt,comments,commits,createdAt,deletions,files,headRefName,headRepository,headRepositoryOwner,id,isCrossRepository,isDraft,labels,latestReviews,maintainerCanModify,mergeCommit,mergeStateStatus,mergeable,mergedAt,mergedBy,milestone,number,potentialMergeCommit,projectCards,reactionGroups,reviewDecision,reviewRequests,reviews,state,statusCheckRollup,title,updatedAt,url > prs.log
+ cat prs.log | jq
+ - name: Main
+ run: |
+ set -e
+
+ count=$(cat prs.log | jq 'length')
+ for ((i=0;i<$count;i++))
+ do
+ url=$(cat prs.log | jq -r ".[$i].url")
+ created_at=$(cat prs.log | jq -r ".[$i].createdAt")
+ echo PR: $(($i+1))/$count, URL: $url, createdAt: $created_at, now: $(date -u +"%FT%TZ")
+ [[ "$url" == "" ]] && continue
+ [[ $created_at > $(date --date "1 hour ago" -u +"%FT%TZ") ]] && continue
+ checks=$(cat prs.log | jq ".[$i].statusCheckRollup")
+ checks_count=$(echo $checks | jq 'length')
+ echo Checks count: $checks_count
+ for ((j=0;j<$checks_count;j++))
+ do
+ check=$(echo $checks | jq ".[$j]")
+ state=$(echo $check | jq -r '.state')
+ conclusion=$(echo $check | jq -r '.conclusion')
+
+ # EasyCLA success flag: state=SUCCESS
+ # Others success flag: conclusion in SUCCESS,NEUTRAL
+ if [[ "$state" == "SUCCESS" ]];then
+ # check pass
+ continue
+ elif [[ "$conclusion" == "SUCCESS" ]] || [[ "$conclusion" == "NEUTRAL" ]];then
+ # check pass
+ continue
+ else
+ echo "$url Check failed!!!"
+ echo $check | jq
+ continue 2
+ fi
+ done
+ # merge the PR
+ echo ========Merging PR========
+ gh pr merge --rebase --admin -R sonic-net/sonic-buildimage $url || true
+ echo ========Finished PR========
+ done
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 48ec41a0306e..66c2af6fc9e7 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -184,8 +184,8 @@ stages:
- template: .azure-pipelines/run-test-scheduler-template.yml
parameters:
TOPOLOGY: t0
- MIN_WORKER: 2
- MAX_WORKER: 3
+ MIN_WORKER: $(T0_INSTANCE_NUM)
+ MAX_WORKER: $(T0_INSTANCE_NUM)
- job: t0_2vlans_testbedv2
pool:
@@ -199,7 +199,8 @@ stages:
parameters:
TOPOLOGY: t0
TEST_SET: t0-2vlans
- MAX_WORKER: 1
+ MIN_WORKER: $(T0_2VLANS_INSTANCE_NUM)
+ MAX_WORKER: $(T0_2VLANS_INSTANCE_NUM)
DEPLOY_MG_EXTRA_PARAMS: "-e vlan_config=two_vlan_a"
- job:
@@ -261,8 +262,8 @@ stages:
- template: .azure-pipelines/run-test-scheduler-template.yml
parameters:
TOPOLOGY: t1-lag
- MIN_WORKER: 2
- MAX_WORKER: 3
+ MIN_WORKER: $(T1_LAG_INSTANCE_NUM)
+ MAX_WORKER: $(T1_LAG_INSTANCE_NUM)
- job:
pool:
@@ -328,8 +329,8 @@ stages:
parameters:
TOPOLOGY: t1-8-lag
TEST_SET: multi-asic-t1-lag
- MIN_WORKER: 1
- MAX_WORKER: 1
+ MIN_WORKER: $(MULTI_ASIC_INSTANCE_NUM)
+ MAX_WORKER: $(MULTI_ASIC_INSTANCE_NUM)
NUM_ASIC: 4
- job: dualtor_testbedv2
@@ -343,8 +344,8 @@ stages:
- template: .azure-pipelines/run-test-scheduler-template.yml
parameters:
TOPOLOGY: dualtor
- MIN_WORKER: 1
- MAX_WORKER: 1
+ MIN_WORKER: $(T0_DUALTOR_INSTANCE_NUM)
+ MAX_WORKER: $(T0_DUALTOR_INSTANCE_NUM)
COMMON_EXTRA_PARAMS: "--disable_loganalyzer "
- job: sonic_t0_testbedv2
@@ -358,8 +359,8 @@ stages:
- template: .azure-pipelines/run-test-scheduler-template.yml
parameters:
TOPOLOGY: t0-64-32
- MIN_WORKER: 1
- MAX_WORKER: 2
+ MIN_WORKER: $(T0_SONIC_INSTANCE_NUM)
+ MAX_WORKER: $(T0_SONIC_INSTANCE_NUM)
TEST_SET: t0-sonic
COMMON_EXTRA_PARAMS: "--neighbor_type=sonic --enable_macsec --macsec_profile=128_SCI,256_XPN_SCI"
VM_TYPE: vsonic
@@ -376,6 +377,6 @@ stages:
- template: .azure-pipelines/run-test-scheduler-template.yml
parameters:
TOPOLOGY: wan-pub
- MIN_WORKER: 1
- MAX_WORKER: 1
+ MIN_WORKER: $(WAN_INSTANCE_NUM)
+ MAX_WORKER: $(WAN_INSTANCE_NUM)
COMMON_EXTRA_PARAMS: "--skip_sanity "
diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
index 4463e687e695..500bdda8f2d6 100644
--- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
+++ b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
@@ -1,17 +1,13 @@
try:
import os
import time
- import sys
import re
+ import subprocess
from sonic_sfp.sfputilbase import SfpUtilBase
+ from sonic_py_common.general import getstatusoutput_noshell
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
-
smbus_present = 1
try:
@@ -31,9 +27,10 @@ class SfpUtil(SfpUtilBase):
_qsfp_ports = list(range(_port_start, ports_in_block + 1))
def __init__(self):
- os.system("modprobe i2c-dev")
+ subprocess.call(["modprobe", "i2c-dev"])
if not os.path.exists("/sys/bus/i2c/devices/0-0050"):
- os.system("echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-0/new_device")
+ with open("/sys/bus/i2c/devices/i2c-0/new_device", 'w') as file:
+ file.write("optoe2 0x50")
eeprom_path = '/sys/bus/i2c/devices/0-0050/eeprom'
# for x in range(self.port _start, self.port_end +1):
@@ -74,8 +71,8 @@ def get_low_power_mode(self, port_num):
def i2c_get(self, device_addr, offset):
status = 0
if smbus_present == 0:
- x = "i2cget -y 0 " + hex(device_addr) + " " + hex(offset)
- cmdstatus, status = commands.getstatusoutput(x)
+ x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)]
+ cmdstatus, status = getstatusoutput_noshell(x)
if cmdstatus != 0:
return cmdstatus
status = int(status, 16)
@@ -86,8 +83,8 @@ def i2c_get(self, device_addr, offset):
def i2c_set(self, device_addr, offset, value):
if smbus_present == 0:
- cmd = "i2cset -y 0 " + hex(device_addr) + " " + hex(offset) + " " + hex(value)
- os.system(cmd)
+ cmd = ["i2cset", "-y", "0", hex(device_addr), hex(offset), hex(value)]
+ subprocess.call(cmd)
else:
bus = smbus.SMBus(0)
bus.write_byte_data(device_addr, offset, value)
diff --git a/device/marvell/arm64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py b/device/marvell/arm64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
index b3d1ea371454..280593c60be1 100644
--- a/device/marvell/arm64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
+++ b/device/marvell/arm64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
@@ -1,17 +1,13 @@
try:
import os
import time
- import sys
import re
+ import subprocess
from sonic_sfp.sfputilbase import SfpUtilBase
+ from sonic_py_common.general import getstatusoutput_noshell
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
-
smbus_present = 1
try:
@@ -31,9 +27,10 @@ class SfpUtil(SfpUtilBase):
_qsfp_ports = list(range(_port_start, ports_in_block + 1))
def __init__(self):
- os.system("modprobe i2c-dev")
+ subprocess.call(["modprobe", "i2c-dev"])
if not os.path.exists("/sys/bus/i2c/devices/0-0050"):
- os.system("echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-0/new_device")
+ with open("/sys/bus/i2c/devices/i2c-0/new_device", 'w') as file:
+ file.write("optoe2 0x50")
eeprom_path = '/sys/bus/i2c/devices/0-0050/eeprom'
# for x in range(self.port _start, self.port_end +1):
@@ -74,8 +71,8 @@ def get_low_power_mode(self, port_num):
def i2c_get(self, device_addr, offset):
status = 0
if smbus_present == 0:
- x = "i2cget -y 0 " + hex(device_addr) + " " + hex(offset)
- cmdstatus, status = commands.getstatusoutput(x)
+ x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)]
+ cmdstatus, status = getstatusoutput_noshell(x)
if cmdstatus != 0:
return cmdstatus
status = int(status, 16)
@@ -86,8 +83,8 @@ def i2c_get(self, device_addr, offset):
def i2c_set(self, device_addr, offset, value):
if smbus_present == 0:
- cmd = "i2cset -y 0 " + hex(device_addr) + " " + hex(offset) + " " + hex(value)
- os.system(cmd)
+ cmd = ["i2cset", "-y", "0", hex(device_addr), hex(offset), hex(value)]
+ subprocess.call(cmd)
else:
bus = smbus.SMBus(0)
bus.write_byte_data(device_addr, offset, value)
diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py
index ab6aeff2b20b..a75832ee4d2d 100755
--- a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py
+++ b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py
@@ -1,9 +1,4 @@
-import sys
-import os.path
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
+from sonic_py_common.general import getstatusoutput_noshell
smbus_present = 1
try:
@@ -32,8 +27,7 @@ def get_psu_status(self, index):
if index is None:
return False
if smbus_present == 0:
- cmdstatus, psustatus = commands.getstatusoutput(
- 'i2cget -y 0 0x41 0xa') # need to verify the cpld register logic
+ cmdstatus, psustatus = getstatusoutput_noshell(["i2cget", "-y", "0", "0x41", "0xa"])
psustatus = int(psustatus, 16)
else:
bus = smbus.SMBus(0)
@@ -56,8 +50,7 @@ def get_psu_presence(self, index):
return False
if smbus_present == 0:
- cmdstatus, psustatus = commands.getstatusoutput(
- 'i2cget -y 0 0x41 0xa') # need to verify the cpld register logic
+ cmdstatus, psustatus = getstatusoutput_noshell(["i2cget", "-y", "0", "0x41", "0xa"])
psustatus = int(psustatus, 16)
else:
bus = smbus.SMBus(0)
diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py
index 39d5db4ce7f4..a160becb6fef 100755
--- a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py
+++ b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py
@@ -2,17 +2,13 @@
import os
import time
import re
- import sys
import glob
+ import subprocess
from sonic_sfp.sfputilbase import SfpUtilBase
+ from sonic_py_common.general import getstatusoutput_noshell
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
-
smbus_present = 1
try:
@@ -43,7 +39,7 @@ def __init__(self):
# Enable optical SFP Tx
if smbus_present == 0:
- os.system("i2cset -y -m 0x0f 0 0x41 0x5 0x00")
+ subprocess.call(["i2cset", "-y", "-m", "0x0f", "0", "0x41", "0x5", "0x00"])
else:
bus = smbus.SMBus(0)
DEVICE_ADDRESS = 0x41
@@ -66,8 +62,9 @@ def __init__(self):
port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x])
#print port_eeprom_path
if not os.path.exists(port_eeprom_path):
- bus_dev_path = bus_path.format(self.port_to_i2c_mapping[x])
- os.system("echo optoe2 0x50 > " + bus_dev_path + "/new_device")
+ bus_dev_path = bus_path.format(self.port_to_i2c_mapping[x]) + "/new_device"
+ with open(bus_dev_path, 'w') as f:
+ f.write("optoe2 0x50")
self.port_to_eeprom_mapping[x] = port_eeprom_path
self._port_to_eeprom_mapping[x] = port_eeprom_path
SfpUtilBase.__init__(self)
@@ -113,8 +110,7 @@ def get_presence(self, port_num):
pos = [1, 2, 4, 8]
bit_pos = pos[prt]
if smbus_present == 0:
- cmdstatus, sfpstatus = commands.getstatusoutput(
- 'i2cget -y 0 0x41 0x3') # need to verify the cpld register logic
+ cmdstatus, sfpstatus = getstatusoutput_noshell(['i2cget', '-y', '0', '0x41', '0x3'])
sfpstatus = int(sfpstatus, 16)
else:
bus = smbus.SMBus(0)
diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
index 4463e687e695..500bdda8f2d6 100644
--- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
+++ b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py
@@ -1,17 +1,13 @@
try:
import os
import time
- import sys
import re
+ import subprocess
from sonic_sfp.sfputilbase import SfpUtilBase
+ from sonic_py_common.general import getstatusoutput_noshell
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
-
smbus_present = 1
try:
@@ -31,9 +27,10 @@ class SfpUtil(SfpUtilBase):
_qsfp_ports = list(range(_port_start, ports_in_block + 1))
def __init__(self):
- os.system("modprobe i2c-dev")
+ subprocess.call(["modprobe", "i2c-dev"])
if not os.path.exists("/sys/bus/i2c/devices/0-0050"):
- os.system("echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-0/new_device")
+ with open("/sys/bus/i2c/devices/i2c-0/new_device", 'w') as file:
+ file.write("optoe2 0x50")
eeprom_path = '/sys/bus/i2c/devices/0-0050/eeprom'
# for x in range(self.port _start, self.port_end +1):
@@ -74,8 +71,8 @@ def get_low_power_mode(self, port_num):
def i2c_get(self, device_addr, offset):
status = 0
if smbus_present == 0:
- x = "i2cget -y 0 " + hex(device_addr) + " " + hex(offset)
- cmdstatus, status = commands.getstatusoutput(x)
+ x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)]
+ cmdstatus, status = getstatusoutput_noshell(x)
if cmdstatus != 0:
return cmdstatus
status = int(status, 16)
@@ -86,8 +83,8 @@ def i2c_get(self, device_addr, offset):
def i2c_set(self, device_addr, offset, value):
if smbus_present == 0:
- cmd = "i2cset -y 0 " + hex(device_addr) + " " + hex(offset) + " " + hex(value)
- os.system(cmd)
+ cmd = ["i2cset", "-y", "0", hex(device_addr), hex(offset), hex(value)]
+ subprocess.call(cmd)
else:
bus = smbus.SMBus(0)
bus.write_byte_data(device_addr, offset, value)
diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
index b3d1ea371454..280593c60be1 100644
--- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
+++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/plugins/sfputil.py
@@ -1,17 +1,13 @@
try:
import os
import time
- import sys
import re
+ import subprocess
from sonic_sfp.sfputilbase import SfpUtilBase
+ from sonic_py_common.general import getstatusoutput_noshell
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
-if sys.version_info[0] < 3:
- import commands
-else:
- import subprocess as commands
-
smbus_present = 1
try:
@@ -31,9 +27,10 @@ class SfpUtil(SfpUtilBase):
_qsfp_ports = list(range(_port_start, ports_in_block + 1))
def __init__(self):
- os.system("modprobe i2c-dev")
+ subprocess.call(["modprobe", "i2c-dev"])
if not os.path.exists("/sys/bus/i2c/devices/0-0050"):
- os.system("echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-0/new_device")
+ with open("/sys/bus/i2c/devices/i2c-0/new_device", 'w') as file:
+ file.write("optoe2 0x50")
eeprom_path = '/sys/bus/i2c/devices/0-0050/eeprom'
# for x in range(self.port _start, self.port_end +1):
@@ -74,8 +71,8 @@ def get_low_power_mode(self, port_num):
def i2c_get(self, device_addr, offset):
status = 0
if smbus_present == 0:
- x = "i2cget -y 0 " + hex(device_addr) + " " + hex(offset)
- cmdstatus, status = commands.getstatusoutput(x)
+ x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)]
+ cmdstatus, status = getstatusoutput_noshell(x)
if cmdstatus != 0:
return cmdstatus
status = int(status, 16)
@@ -86,8 +83,8 @@ def i2c_get(self, device_addr, offset):
def i2c_set(self, device_addr, offset, value):
if smbus_present == 0:
- cmd = "i2cset -y 0 " + hex(device_addr) + " " + hex(offset) + " " + hex(value)
- os.system(cmd)
+ cmd = ["i2cset", "-y", "0", hex(device_addr), hex(offset), hex(value)]
+ subprocess.call(cmd)
else:
bus = smbus.SMBus(0)
bus.write_byte_data(device_addr, offset, value)
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers.json.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers.json.j2
new file mode 120000
index 000000000000..add8bf8bb7c2
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers.json.j2
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers.json.j2
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_objects.j2
new file mode 120000
index 000000000000..33b6704f9902
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_objects.j2
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers_defaults_objects.j2
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t0.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t0.j2
new file mode 100644
index 000000000000..b03bcf004505
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t0.j2
@@ -0,0 +1,128 @@
+{#
+ Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES.
+ Apache-2.0
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+#}
+{% set default_cable = '5m' %}
+{% set ingress_lossless_pool_size = '67737959' %}
+{% set ingress_lossy_pool_size = '67737959' %}
+{% set egress_lossless_pool_size = '158229504' %}
+{% set egress_lossy_pool_size = '67737959' %}
+
+{%- macro generate_port_lists(PORT_ALL) %}
+ {# Generate list of ports #}
+ {%- for port_idx in range(0, 32) %}
+ {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %}
+ {%- endfor %}
+{%- endmacro %}
+
+{%- macro generate_buffer_pool_and_profiles() %}
+ "BUFFER_POOL": {
+ "ingress_lossless_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ ingress_lossless_pool_size }}",
+ {%- endif %}
+ "type": "ingress",
+ "mode": "dynamic"
+ },
+ "ingress_lossy_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ ingress_lossy_pool_size }}",
+ {%- endif %}
+ "type": "ingress",
+ "mode": "dynamic"
+ },
+ "egress_lossless_pool": {
+ "size": "{{ egress_lossless_pool_size }}",
+ "type": "egress",
+ "mode": "dynamic"
+ },
+ "egress_lossy_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ egress_lossy_pool_size }}",
+ {%- endif %}
+ "type": "egress",
+ "mode": "dynamic"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"ingress_lossless_pool",
+ "size":"0",
+ "dynamic_th":"7"
+ },
+ "ingress_lossy_profile": {
+ "pool":"ingress_lossy_pool",
+ "size":"0",
+ "dynamic_th":"3"
+ },
+ "egress_lossless_profile": {
+ "pool":"egress_lossless_pool",
+ "size":"0",
+ "dynamic_th":"7"
+ },
+ "egress_lossy_profile": {
+ "pool":"egress_lossy_pool",
+ "size":"9216",
+ "dynamic_th":"7"
+ },
+ "q_lossy_profile": {
+ "pool":"egress_lossy_pool",
+ "size":"0",
+ "dynamic_th":"3"
+ }
+ },
+{%- endmacro %}
+
+{%- macro generate_profile_lists(port_names) %}
+ "BUFFER_PORT_INGRESS_PROFILE_LIST": {
+{% for port in port_names.split(',') %}
+ "{{ port }}": {
+ "profile_list" : "ingress_lossless_profile,ingress_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ },
+ "BUFFER_PORT_EGRESS_PROFILE_LIST": {
+{% for port in port_names.split(',') %}
+ "{{ port }}": {
+ "profile_list" : "egress_lossless_profile,egress_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ }
+{%- endmacro %}
+
+{%- macro generate_queue_buffers(port_names) %}
+ "BUFFER_QUEUE": {
+{% for port in port_names.split(',') %}
+ "{{ port }}|3-4": {
+ "profile" : "egress_lossless_profile"
+ },
+{% endfor %}
+{% for port in port_names.split(',') %}
+ "{{ port }}|0-2": {
+ "profile" : "q_lossy_profile"
+ },
+{% endfor %}
+{% for port in port_names.split(',') %}
+ "{{ port }}|5-6": {
+ "profile" : "q_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ }
+{%- endmacro %}
+
+
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t1.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..374c23fd8ddc
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t1.j2
@@ -0,0 +1,128 @@
+{#
+ Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES.
+ Apache-2.0
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+#}
+{% set default_cable = '5m' %}
+{% set ingress_lossless_pool_size = '52161690' %}
+{% set ingress_lossy_pool_size = '52161690' %}
+{% set egress_lossless_pool_size = '158229504' %}
+{% set egress_lossy_pool_size = '52161690' %}
+
+{%- macro generate_port_lists(PORT_ALL) %}
+ {# Generate list of ports #}
+ {%- for port_idx in range(0, 32) %}
+ {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %}
+ {%- endfor %}
+{%- endmacro %}
+
+{%- macro generate_buffer_pool_and_profiles() %}
+ "BUFFER_POOL": {
+ "ingress_lossless_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ ingress_lossless_pool_size }}",
+ {%- endif %}
+ "type": "ingress",
+ "mode": "dynamic"
+ },
+ "ingress_lossy_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ ingress_lossy_pool_size }}",
+ {%- endif %}
+ "type": "ingress",
+ "mode": "dynamic"
+ },
+ "egress_lossless_pool": {
+ "size": "{{ egress_lossless_pool_size }}",
+ "type": "egress",
+ "mode": "dynamic"
+ },
+ "egress_lossy_pool": {
+ {%- if dynamic_mode is not defined %}
+ "size": "{{ egress_lossy_pool_size }}",
+ {%- endif %}
+ "type": "egress",
+ "mode": "dynamic"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"ingress_lossless_pool",
+ "size":"0",
+ "dynamic_th":"7"
+ },
+ "ingress_lossy_profile": {
+ "pool":"ingress_lossy_pool",
+ "size":"0",
+ "dynamic_th":"3"
+ },
+ "egress_lossless_profile": {
+ "pool":"egress_lossless_pool",
+ "size":"0",
+ "dynamic_th":"7"
+ },
+ "egress_lossy_profile": {
+ "pool":"egress_lossy_pool",
+ "size":"9216",
+ "dynamic_th":"7"
+ },
+ "q_lossy_profile": {
+ "pool":"egress_lossy_pool",
+ "size":"0",
+ "dynamic_th":"3"
+ }
+ },
+{%- endmacro %}
+
+{%- macro generate_profile_lists(port_names) %}
+ "BUFFER_PORT_INGRESS_PROFILE_LIST": {
+{% for port in port_names.split(',') %}
+ "{{ port }}": {
+ "profile_list" : "ingress_lossless_profile,ingress_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ },
+ "BUFFER_PORT_EGRESS_PROFILE_LIST": {
+{% for port in port_names.split(',') %}
+ "{{ port }}": {
+ "profile_list" : "egress_lossless_profile,egress_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ }
+{%- endmacro %}
+
+{%- macro generate_queue_buffers(port_names) %}
+ "BUFFER_QUEUE": {
+{% for port in port_names.split(',') %}
+ "{{ port }}|3-4": {
+ "profile" : "egress_lossless_profile"
+ },
+{% endfor %}
+{% for port in port_names.split(',') %}
+ "{{ port }}|0-2": {
+ "profile" : "q_lossy_profile"
+ },
+{% endfor %}
+{% for port in port_names.split(',') %}
+ "{{ port }}|5-6": {
+ "profile" : "q_lossy_profile"
+ }{% if not loop.last %},{% endif %}
+
+{% endfor %}
+ }
+{%- endmacro %}
+
+
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_dynamic.json.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_dynamic.json.j2
new file mode 120000
index 000000000000..8c4117c66214
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_dynamic.json.j2
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers_dynamic.json.j2
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/hwsku.json b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/hwsku.json
new file mode 100644
index 000000000000..3593da62c767
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/hwsku.json
@@ -0,0 +1,199 @@
+{
+ "interfaces": {
+ "Ethernet0": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet8": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet16": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet24": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet32": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet40": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet48": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet56": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet64": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet72": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet80": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet88": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet96": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet104": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet112": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet120": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet128": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet136": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet144": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet152": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet160": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet168": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet176": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet184": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet192": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet200": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet208": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet216": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet224": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet232": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet240": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet248": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet256": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet264": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet272": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet280": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet288": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet296": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet304": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet312": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet320": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet328": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet336": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet344": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet352": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet360": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet368": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet376": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet384": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet392": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet400": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet408": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet416": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet424": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet432": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet440": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet448": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet456": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet464": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet472": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet480": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet488": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet496": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet504": {
+ "default_brkout_mode": "1x800G[400G,200G,100G,50G,40G,25G,10G]"
+ },
+ "Ethernet512": {
+ "default_brkout_mode": "1x25G[10G]"
+ }
+ }
+}
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/pg_profile_lookup.ini b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/pg_profile_lookup.ini
new file mode 100644
index 000000000000..d67d2d7a1691
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/pg_profile_lookup.ini
@@ -0,0 +1,42 @@
+##
+## Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES.
+## Apache-2.0
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+# PG lossless profiles.
+# speed cable size xon xoff threshold
+ 10000 5m 64512 19456 45056 0
+ 25000 5m 67584 19456 48128 0
+ 40000 5m 75776 19456 57344 0
+ 50000 5m 82944 19456 63488 0
+ 100000 5m 133120 19456 113664 0
+ 200000 5m 150528 19456 131072 0
+ 400000 5m 250880 19456 231424 0
+ 800000 5m 304128 38912 257024 0
+ 10000 40m 65536 19456 46080 0
+ 25000 40m 71680 19456 52224 0
+ 40000 40m 81920 19456 62464 0
+ 50000 40m 89088 19456 69632 0
+ 100000 40m 146432 19456 126976 0
+ 200000 40m 177152 19456 157696 0
+ 400000 40m 303104 19456 283648 0
+ 800000 40m 410624 38912 362496 0
+ 10000 300m 75776 19456 56320 0
+ 25000 300m 96256 19456 76800 0
+ 40000 300m 120832 19456 101376 0
+ 50000 300m 138240 19456 118784 0
+ 100000 300m 244736 19456 225280 0
+ 200000 300m 374784 19456 355328 0
+ 400000 300m 697344 19456 677888 0
+ 800000 300m 1198080 38912 1150976 0
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/port_config.ini b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/port_config.ini
new file mode 100644
index 000000000000..a60682342fc1
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/port_config.ini
@@ -0,0 +1,82 @@
+##
+## Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES.
+## Apache-2.0
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+# name lanes alias index
+Ethernet0 0,1,2,3,4,5,6,7 etp1 1
+Ethernet8 8,9,10,11,12,13,14,15 etp2 2
+Ethernet16 16,17,18,19,20,21,22,23 etp3 3
+Ethernet24 24,25,26,27,28,29,30,31 etp4 4
+Ethernet32 32,33,34,35,36,37,38,39 etp5 5
+Ethernet40 40,41,42,43,44,45,46,47 etp6 6
+Ethernet48 48,49,50,51,52,53,54,55 etp7 7
+Ethernet56 56,57,58,59,60,61,62,63 etp8 8
+Ethernet64 64,65,66,67,68,69,70,71 etp9 9
+Ethernet72 72,73,74,75,76,77,78,79 etp10 10
+Ethernet80 80,81,82,83,84,85,86,87 etp11 11
+Ethernet88 88,89,90,91,92,93,94,95 etp12 12
+Ethernet96 96,97,98,99,100,101,102,103 etp13 13
+Ethernet104 104,105,106,107,108,109,110,111 etp14 14
+Ethernet112 112,113,114,115,116,117,118,119 etp15 15
+Ethernet120 120,121,122,123,124,125,126,127 etp16 16
+Ethernet128 128,129,130,131,132,133,134,135 etp17 17
+Ethernet136 136,137,138,139,140,141,142,143 etp18 18
+Ethernet144 144,145,146,147,148,149,150,151 etp19 19
+Ethernet152 152,153,154,155,156,157,158,159 etp20 20
+Ethernet160 160,161,162,163,164,165,166,167 etp21 21
+Ethernet168 168,169,170,171,172,173,174,175 etp22 22
+Ethernet176 176,177,178,179,180,181,182,183 etp23 23
+Ethernet184 184,185,186,187,188,189,190,191 etp24 24
+Ethernet192 192,193,194,195,196,197,198,199 etp25 25
+Ethernet200 200,201,202,203,204,205,206,207 etp26 26
+Ethernet208 208,209,210,211,212,213,214,215 etp27 27
+Ethernet216 216,217,218,219,220,221,222,223 etp28 28
+Ethernet224 224,225,226,227,228,229,230,231 etp29 29
+Ethernet232 232,233,234,235,236,237,238,239 etp30 30
+Ethernet240 240,241,242,243,244,245,246,247 etp31 31
+Ethernet248 248,249,250,251,252,253,254,255 etp32 32
+Ethernet256 256,257,258,259,260,261,262,263 etp33 33
+Ethernet264 264,265,266,267,268,269,270,271 etp34 34
+Ethernet272 272,273,274,275,276,277,278,279 etp35 35
+Ethernet280 280,281,282,283,284,285,286,287 etp36 36
+Ethernet288 288,289,290,291,292,293,294,295 etp37 37
+Ethernet296 296,297,298,299,300,301,302,303 etp38 38
+Ethernet304 304,305,306,307,308,309,310,311 etp39 39
+Ethernet312 312,313,314,315,316,317,318,319 etp40 40
+Ethernet320 320,321,322,323,324,325,326,327 etp41 41
+Ethernet328 328,329,330,331,332,333,334,335 etp42 42
+Ethernet336 336,337,338,339,340,341,342,343 etp43 43
+Ethernet344 344,345,346,347,348,349,350,351 etp44 44
+Ethernet352 352,353,354,355,356,357,358,359 etp45 45
+Ethernet360 360,361,362,363,364,365,366,367 etp46 46
+Ethernet368 368,369,370,371,372,373,374,375 etp47 47
+Ethernet376 376,377,378,379,380,381,382,383 etp48 48
+Ethernet384 384,385,386,387,388,389,390,391 etp49 49
+Ethernet392 392,393,394,395,396,397,398,399 etp50 50
+Ethernet400 400,401,402,403,404,405,406,407 etp51 51
+Ethernet408 408,409,410,411,412,413,414,415 etp52 52
+Ethernet416 416,417,418,419,420,421,422,423 etp53 53
+Ethernet424 424,425,426,427,428,429,430,431 etp54 54
+Ethernet432 432,433,434,435,436,437,438,439 etp55 55
+Ethernet440 440,441,442,443,444,445,446,447 etp56 56
+Ethernet448 448,449,450,451,452,453,454,455 etp57 57
+Ethernet456 456,457,458,459,460,461,462,463 etp58 58
+Ethernet464 464,465,466,467,468,469,470,471 etp59 59
+Ethernet472 472,473,474,475,476,477,478,479 etp60 60
+Ethernet480 480,481,482,483,484,485,486,487 etp61 61
+Ethernet488 488,489,490,491,492,493,494,495 etp62 62
+Ethernet496 496,497,498,499,500,501,502,503 etp63 63
+Ethernet504 504,505,506,507,508,509,510,511 etp64 64
+Ethernet512 512 etp65 65
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/qos.json.j2
new file mode 120000
index 000000000000..eccf286dc879
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/qos.json.j2
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/qos.json.j2
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai.profile b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai.profile
new file mode 100644
index 000000000000..b37ca8c3ed0c
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai.profile
@@ -0,0 +1,3 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/sai_5600.xml
+SAI_DUMP_STORE_PATH=/var/log/mellanox/sdk-dumps
+SAI_DUMP_STORE_AMOUNT=10
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai_5600.xml b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai_5600.xml
new file mode 100644
index 000000000000..6f619a1fc17f
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai_5600.xml
@@ -0,0 +1,502 @@
+
+
+
+
+
+
+ 00:02:03:04:05:00
+
+
+ 1
+
+
+ 65
+
+
+
+
+ 1
+ 8
+ 34
+
+
+ 3
+
+
+ 1536
+
+
+ 5
+ 8
+ 35
+ 3
+ 1536
+
+
+ 9
+ 8
+ 32
+ 3
+ 1536
+
+
+ 13
+ 8
+ 33
+ 3
+ 1536
+
+
+ 17
+ 8
+ 38
+ 3
+ 1536
+
+
+ 21
+ 8
+ 39
+ 3
+ 1536
+
+
+ 25
+ 8
+ 36
+ 3
+ 1536
+
+
+ 29
+ 8
+ 37
+ 3
+ 1536
+
+
+ 33
+ 8
+ 42
+ 3
+ 1536
+
+
+ 37
+ 8
+ 43
+ 3
+ 1536
+
+
+ 41
+ 8
+ 40
+ 3
+ 1536
+
+
+ 45
+ 8
+ 41
+ 3
+ 1536
+
+
+ 49
+ 8
+ 46
+ 3
+ 1536
+
+
+ 53
+ 8
+ 47
+ 3
+ 1536
+
+
+ 57
+ 8
+ 44
+ 3
+ 1536
+
+
+ 61
+ 8
+ 45
+ 3
+ 1536
+
+
+ 65
+ 8
+ 58
+ 3
+ 1536
+
+
+ 69
+ 8
+ 59
+ 3
+ 1536
+
+
+ 73
+ 8
+ 56
+ 3
+ 1536
+
+
+ 77
+ 8
+ 57
+ 3
+ 1536
+
+
+ 81
+ 8
+ 62
+ 3
+ 1536
+
+
+ 85
+ 8
+ 63
+ 3
+ 1536
+
+
+ 89
+ 8
+ 60
+ 3
+ 1536
+
+
+ 93
+ 8
+ 61
+ 3
+ 1536
+
+
+ 97
+ 8
+ 50
+ 3
+ 1536
+
+
+ 101
+ 8
+ 51
+ 3
+ 1536
+
+
+ 105
+ 8
+ 48
+
+
+ 3
+
+
+ 1536
+
+
+ 109
+ 8
+ 49
+ 3
+ 1536
+
+
+ 113
+ 8
+ 54
+ 3
+ 1536
+
+
+ 117
+ 8
+ 55
+ 3
+ 1536
+
+
+ 121
+ 8
+ 52
+ 3
+ 1536
+
+
+ 125
+ 8
+ 53
+ 3
+ 1536
+
+
+ 129
+ 8
+ 28
+ 3
+ 1536
+
+
+ 133
+ 8
+ 29
+ 3
+ 1536
+
+
+ 137
+ 8
+ 30
+ 3
+ 1536
+
+
+ 141
+ 8
+ 31
+ 3
+ 1536
+
+
+ 145
+ 8
+ 24
+ 3
+ 1536
+
+
+ 149
+ 8
+ 25
+ 3
+ 1536
+
+
+ 153
+ 8
+ 26
+ 3
+ 1536
+
+
+ 157
+ 8
+ 27
+ 3
+ 1536
+
+
+ 161
+ 8
+ 20
+ 3
+ 1536
+
+
+ 165
+ 8
+ 21
+ 3
+ 1536
+
+
+ 169
+ 8
+ 22
+ 3
+ 1536
+
+
+ 173
+ 8
+ 23
+ 3
+ 1536
+
+
+ 177
+ 8
+ 16
+ 3
+ 1536
+
+
+ 181
+ 8
+ 17
+ 3
+ 1536
+
+
+ 185
+ 8
+ 18
+ 3
+ 1536
+
+
+ 189
+ 8
+ 19
+ 3
+ 1536
+
+
+ 193
+ 8
+ 4
+ 3
+ 1536
+
+
+ 197
+ 8
+ 5
+ 3
+ 1536
+
+
+ 201
+ 8
+ 6
+ 3
+ 1536
+
+
+ 205
+ 8
+ 7
+ 3
+ 1536
+
+
+ 209
+ 8
+ 0
+ 3
+ 1536
+
+
+ 213
+ 8
+ 1
+ 3
+ 1536
+
+
+ 217
+ 8
+ 2
+ 3
+ 1536
+
+
+ 221
+ 8
+ 3
+ 3
+ 1536
+
+
+ 225
+ 8
+ 12
+ 3
+ 1536
+
+
+ 229
+ 8
+ 13
+ 3
+ 1536
+
+
+ 233
+ 8
+ 14
+
+
+ 3
+
+
+ 1536
+
+
+ 237
+ 8
+ 15
+ 3
+ 1536
+
+
+ 241
+ 8
+ 8
+ 3
+ 1536
+
+
+ 245
+ 8
+ 9
+ 3
+ 1536
+
+
+ 249
+ 8
+ 10
+ 3
+ 1536
+
+
+ 253
+ 8
+ 11
+ 3
+ 1536
+
+
+ 257
+ 1
+ 64
+ 0
+ 64
+
+
+
+
+
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/default_sku b/device/mellanox/x86_64-nvidia_sn5600-r0/default_sku
new file mode 100644
index 000000000000..38a760f3c747
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/default_sku
@@ -0,0 +1 @@
+ACS-SN5600 t1
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/pcie.yaml b/device/mellanox/x86_64-nvidia_sn5600-r0/pcie.yaml
new file mode 100644
index 000000000000..20da81d7dc86
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/pcie.yaml
@@ -0,0 +1,146 @@
+##
+## Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES.
+## Apache-2.0
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+
+- bus: '00'
+ dev: '00'
+ fn: '0'
+ id: 3ec4
+ name: 'Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
+ (rev 07)'
+- bus: '00'
+ dev: '01'
+ fn: '0'
+ id: '1901'
+ name: 'PCI bridge: Intel Corporation 6th-10th Gen Core Processor PCIe Controller
+ (x16) (rev 07)'
+- bus: '00'
+ dev: '01'
+ fn: '1'
+ id: '1905'
+ name: 'PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor
+ PCIe Controller (x8) (rev 07)'
+- bus: '00'
+ dev: 08
+ fn: '0'
+ id: '1911'
+ name: 'System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th
+ Gen Core Processor Gaussian Mixture Model'
+- bus: '00'
+ dev: '12'
+ fn: '0'
+ id: a379
+ name: 'Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller
+ (rev 10)'
+- bus: '00'
+ dev: '14'
+ fn: '0'
+ id: a36d
+ name: 'USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller
+ (rev 10)'
+- bus: '00'
+ dev: '14'
+ fn: '2'
+ id: a36f
+ name: 'RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)'
+- bus: '00'
+ dev: '15'
+ fn: '0'
+ id: a368
+ name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH Serial IO
+ I2C Controller #0 (rev 10)'
+- bus: '00'
+ dev: '16'
+ fn: '0'
+ id: a360
+ name: 'Communication controller: Intel Corporation Cannon Lake PCH HECI Controller
+ (rev 10)'
+- bus: '00'
+ dev: '17'
+ fn: '0'
+ id: a353
+ name: 'SATA controller: Intel Corporation Cannon Lake Mobile PCH SATA AHCI Controller
+ (rev 10)'
+- bus: '00'
+ dev: 1b
+ fn: '0'
+ id: a340
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #17 (rev
+ f0)'
+- bus: '00'
+ dev: 1b
+ fn: '2'
+ id: a342
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #19 (rev
+ f0)'
+- bus: '00'
+ dev: 1b
+ fn: '4'
+ id: a32c
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #21 (rev
+ f0)'
+- bus: '00'
+ dev: 1c
+ fn: '0'
+ id: a33d
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #6 (rev
+ f0)'
+- bus: '00'
+ dev: 1c
+ fn: '6'
+ id: a33e
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #7 (rev
+ f0)'
+- bus: '00'
+ dev: 1c
+ fn: '7'
+ id: a33f
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #8 (rev
+ f0)'
+- bus: '00'
+ dev: 1d
+ fn: '0'
+ id: a334
+ name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #13 (rev
+ f0)'
+- bus: '00'
+ dev: 1e
+ fn: '0'
+ id: a328
+ name: 'Communication controller: Intel Corporation Cannon Lake PCH Serial IO UART
+ Host Controller (rev 10)'
+- bus: '00'
+ dev: 1f
+ fn: '0'
+ id: a30e
+ name: 'ISA bridge: Intel Corporation Cannon Lake LPC Controller (rev 10)'
+- bus: '00'
+ dev: 1f
+ fn: '4'
+ id: a323
+ name: 'SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)'
+- bus: '00'
+ dev: 1f
+ fn: '5'
+ id: a324
+ name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller
+ (rev 10)'
+- bus: '00'
+ dev: 1f
+ fn: '6'
+ id: 15bb
+ name: 'Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev
+ 10)'
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/platform.json b/device/mellanox/x86_64-nvidia_sn5600-r0/platform.json
new file mode 100644
index 000000000000..fe98c37c47d9
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/platform.json
@@ -0,0 +1,1313 @@
+{
+ "chassis": {
+ "name": "SN5600",
+ "components": [
+ {
+ "name": "ONIE"
+ },
+ {
+ "name": "SSD"
+ },
+ {
+ "name": "BIOS"
+ },
+ {
+ "name": "CPLD1"
+ },
+ {
+ "name": "CPLD2"
+ },
+ {
+ "name": "CPLD3"
+ },
+ {
+ "name": "CPLD4"
+ },
+ {
+ "name": "CPLD5"
+ },
+ {
+ "name": "CPLD6"
+ }
+ ],
+ "fans": [],
+ "fan_drawers": [
+ {
+ "name": "drawer1",
+ "fans": [
+ {
+ "name": "fan1"
+ },
+ {
+ "name": "fan2"
+ }
+ ]
+ },
+ {
+ "name": "drawer2",
+ "fans": [
+ {
+ "name": "fan3"
+ },
+ {
+ "name": "fan4"
+ }
+ ]
+ },
+ {
+ "name": "drawer3",
+ "fans": [
+ {
+ "name": "fan5"
+ },
+ {
+ "name": "fan6"
+ }
+ ]
+ },
+ {
+ "name": "drawer4",
+ "fans": [
+ {
+ "name": "fan7"
+ },
+ {
+ "name": "fan8"
+ }
+ ]
+ }
+ ],
+ "psus": [
+ {
+ "name": "PSU 1",
+ "fans": [
+ {
+ "name": "psu1_fan1"
+ }
+ ],
+ "thermals": [
+ {
+ "name": "PSU-1 Temp"
+ }
+ ]
+ },
+ {
+ "name": "PSU 2",
+ "fans": [
+ {
+ "name": "psu2_fan1"
+ }
+ ],
+ "thermals": [
+ {
+ "name": "PSU-2 Temp"
+ }
+ ]
+ }
+ ],
+ "thermals": [
+ {
+ "name": "ASIC"
+ },
+ {
+ "name": "Ambient Fan Side Temp"
+ },
+ {
+ "name": "Ambient Port Side Temp"
+ },
+ {
+ "name": "CPU Core 0 Temp"
+ },
+ {
+ "name": "CPU Core 1 Temp"
+ },
+ {
+ "name": "CPU Core 2 Temp"
+ },
+ {
+ "name": "CPU Core 3 Temp"
+ },
+ {
+ "name": "CPU Core 4 Temp"
+ },
+ {
+ "name": "CPU Core 5 Temp"
+ },
+ {
+ "name": "CPU Pack Temp"
+ },
+ {
+ "name": "SODIMM 1 Temp"
+ },
+ {
+ "name": "SODIMM 2 Temp"
+ },
+ {
+ "name": "PCH Temp"
+ }
+ ],
+ "sfps": [
+ {
+ "name": "sfp1",
+ "thermals": [
+ {
+ "name": "xSFP module 1 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp2",
+ "thermals": [
+ {
+ "name": "xSFP module 2 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp3",
+ "thermals": [
+ {
+ "name": "xSFP module 3 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp4",
+ "thermals": [
+ {
+ "name": "xSFP module 4 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp5",
+ "thermals": [
+ {
+ "name": "xSFP module 5 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp6",
+ "thermals": [
+ {
+ "name": "xSFP module 6 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp7",
+ "thermals": [
+ {
+ "name": "xSFP module 7 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp8",
+ "thermals": [
+ {
+ "name": "xSFP module 8 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp9",
+ "thermals": [
+ {
+ "name": "xSFP module 9 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp10",
+ "thermals": [
+ {
+ "name": "xSFP module 10 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp11",
+ "thermals": [
+ {
+ "name": "xSFP module 11 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp12",
+ "thermals": [
+ {
+ "name": "xSFP module 12 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp13",
+ "thermals": [
+ {
+ "name": "xSFP module 13 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp14",
+ "thermals": [
+ {
+ "name": "xSFP module 14 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp15",
+ "thermals": [
+ {
+ "name": "xSFP module 15 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp16",
+ "thermals": [
+ {
+ "name": "xSFP module 16 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp17",
+ "thermals": [
+ {
+ "name": "xSFP module 17 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp18",
+ "thermals": [
+ {
+ "name": "xSFP module 18 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp19",
+ "thermals": [
+ {
+ "name": "xSFP module 19 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp20",
+ "thermals": [
+ {
+ "name": "xSFP module 20 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp21",
+ "thermals": [
+ {
+ "name": "xSFP module 21 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp22",
+ "thermals": [
+ {
+ "name": "xSFP module 22 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp23",
+ "thermals": [
+ {
+ "name": "xSFP module 23 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp24",
+ "thermals": [
+ {
+ "name": "xSFP module 24 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp25",
+ "thermals": [
+ {
+ "name": "xSFP module 25 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp26",
+ "thermals": [
+ {
+ "name": "xSFP module 26 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp27",
+ "thermals": [
+ {
+ "name": "xSFP module 27 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp28",
+ "thermals": [
+ {
+ "name": "xSFP module 28 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp29",
+ "thermals": [
+ {
+ "name": "xSFP module 29 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp30",
+ "thermals": [
+ {
+ "name": "xSFP module 30 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp31",
+ "thermals": [
+ {
+ "name": "xSFP module 31 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp32",
+ "thermals": [
+ {
+ "name": "xSFP module 32 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp33",
+ "thermals": [
+ {
+ "name": "xSFP module 33 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp34",
+ "thermals": [
+ {
+ "name": "xSFP module 34 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp35",
+ "thermals": [
+ {
+ "name": "xSFP module 35 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp36",
+ "thermals": [
+ {
+ "name": "xSFP module 36 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp37",
+ "thermals": [
+ {
+ "name": "xSFP module 37 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp38",
+ "thermals": [
+ {
+ "name": "xSFP module 38 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp39",
+ "thermals": [
+ {
+ "name": "xSFP module 39 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp40",
+ "thermals": [
+ {
+ "name": "xSFP module 40 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp41",
+ "thermals": [
+ {
+ "name": "xSFP module 41 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp42",
+ "thermals": [
+ {
+ "name": "xSFP module 42 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp43",
+ "thermals": [
+ {
+ "name": "xSFP module 43 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp44",
+ "thermals": [
+ {
+ "name": "xSFP module 44 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp45",
+ "thermals": [
+ {
+ "name": "xSFP module 45 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp46",
+ "thermals": [
+ {
+ "name": "xSFP module 46 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp47",
+ "thermals": [
+ {
+ "name": "xSFP module 47 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp48",
+ "thermals": [
+ {
+ "name": "xSFP module 48 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp49",
+ "thermals": [
+ {
+ "name": "xSFP module 49 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp50",
+ "thermals": [
+ {
+ "name": "xSFP module 50 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp51",
+ "thermals": [
+ {
+ "name": "xSFP module 51 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp52",
+ "thermals": [
+ {
+ "name": "xSFP module 52 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp53",
+ "thermals": [
+ {
+ "name": "xSFP module 53 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp54",
+ "thermals": [
+ {
+ "name": "xSFP module 54 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp55",
+ "thermals": [
+ {
+ "name": "xSFP module 55 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp56",
+ "thermals": [
+ {
+ "name": "xSFP module 56 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp57",
+ "thermals": [
+ {
+ "name": "xSFP module 57 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp58",
+ "thermals": [
+ {
+ "name": "xSFP module 58 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp59",
+ "thermals": [
+ {
+ "name": "xSFP module 59 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp60",
+ "thermals": [
+ {
+ "name": "xSFP module 60 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp61",
+ "thermals": [
+ {
+ "name": "xSFP module 61 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp62",
+ "thermals": [
+ {
+ "name": "xSFP module 62 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp63",
+ "thermals": [
+ {
+ "name": "xSFP module 63 Temp"
+ }
+ ]
+ },
+ {
+ "name": "sfp64",
+ "thermals": [
+ {
+ "name": "xSFP module 64 Temp"
+ }
+ ]
+ }
+ ]
+ },
+ "interfaces": {
+ "Ethernet0": {
+ "index": "1,1,1,1,1,1,1,1",
+ "lanes": "0,1,2,3,4,5,6,7",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp1"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp1a", "etp1b"],
+ "4x200G[100G,50G,25G,10G]": ["etp1a", "etp1b", "etp1c", "etp1d"],
+ "8x100G[50G,25G,10G]": ["etp1a", "etp1b", "etp1c", "etp1d", "etp1e", "etp1f", "etp1g", "etp1h"]
+ }
+ },
+ "Ethernet8": {
+ "index": "2,2,2,2,2,2,2,2",
+ "lanes": "8,9,10,11,12,13,14,15",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp2"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp2a", "etp2b"],
+ "4x200G[100G,50G,25G,10G]": ["etp2a", "etp2b", "etp2c", "etp2d"],
+ "8x100G[50G,25G,10G]": ["etp2a", "etp2b", "etp2c", "etp2d", "etp2e", "etp2f", "etp2g", "etp2h"]
+ }
+ },
+ "Ethernet16": {
+ "index": "3,3,3,3,3,3,3,3",
+ "lanes": "16,17,18,19,20,21,22,23",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp3"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp3a", "etp3b"],
+ "4x200G[100G,50G,25G,10G]": ["etp3a", "etp3b", "etp3c", "etp3d"],
+ "8x100G[50G,25G,10G]": ["etp3a", "etp3b", "etp3c", "etp3d", "etp3e", "etp3f", "etp3g", "etp3h"]
+ }
+ },
+ "Ethernet24": {
+ "index": "4,4,4,4,4,4,4,4",
+ "lanes": "24,25,26,27,28,29,30,31",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp4"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp4a", "etp4b"],
+ "4x200G[100G,50G,25G,10G]": ["etp4a", "etp4b", "etp4c", "etp4d"],
+ "8x100G[50G,25G,10G]": ["etp4a", "etp4b", "etp4c", "etp4d", "etp4e", "etp4f", "etp4g", "etp4h"]
+ }
+ },
+ "Ethernet32": {
+ "index": "5,5,5,5,5,5,5,5",
+ "lanes": "32,33,34,35,36,37,38,39",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp5"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp5a", "etp5b"],
+ "4x200G[100G,50G,25G,10G]": ["etp5a", "etp5b", "etp5c", "etp5d"],
+ "8x100G[50G,25G,10G]": ["etp5a", "etp5b", "etp5c", "etp5d", "etp5e", "etp5f", "etp5g", "etp5h"]
+ }
+ },
+ "Ethernet40": {
+ "index": "6,6,6,6,6,6,6,6",
+ "lanes": "40,41,42,43,44,45,46,47",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp6"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp6a", "etp6b"],
+ "4x200G[100G,50G,25G,10G]": ["etp6a", "etp6b", "etp6c", "etp6d"],
+ "8x100G[50G,25G,10G]": ["etp6a", "etp6b", "etp6c", "etp6d", "etp6e", "etp6f", "etp6g", "etp6h"]
+ }
+ },
+ "Ethernet48": {
+ "index": "7,7,7,7,7,7,7,7",
+ "lanes": "48,49,50,51,52,53,54,55",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp7"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp7a", "etp7b"],
+ "4x200G[100G,50G,25G,10G]": ["etp7a", "etp7b", "etp7c", "etp7d"],
+ "8x100G[50G,25G,10G]": ["etp7a", "etp7b", "etp7c", "etp7d", "etp7e", "etp7f", "etp7g", "etp7h"]
+ }
+ },
+ "Ethernet56": {
+ "index": "8,8,8,8,8,8,8,8",
+ "lanes": "56,57,58,59,60,61,62,63",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp8"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp8a", "etp8b"],
+ "4x200G[100G,50G,25G,10G]": ["etp8a", "etp8b", "etp8c", "etp8d"],
+ "8x100G[50G,25G,10G]": ["etp8a", "etp8b", "etp8c", "etp8d", "etp8e", "etp8f", "etp8g", "etp8h"]
+ }
+ },
+ "Ethernet64": {
+ "index": "9,9,9,9,9,9,9,9",
+ "lanes": "64,65,66,67,68,69,70,71",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp9"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp9a", "etp9b"],
+ "4x200G[100G,50G,25G,10G]": ["etp9a", "etp9b", "etp9c", "etp9d"],
+ "8x100G[50G,25G,10G]": ["etp9a", "etp9b", "etp9c", "etp9d", "etp9e", "etp9f", "etp9g", "etp9h"]
+ }
+ },
+ "Ethernet72": {
+ "index": "10,10,10,10,10,10,10,10",
+ "lanes": "72,73,74,75,76,77,78,79",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp10"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp10a", "etp10b"],
+ "4x200G[100G,50G,25G,10G]": ["etp10a", "etp10b", "etp10c", "etp10d"],
+ "8x100G[50G,25G,10G]": ["etp10a", "etp10b", "etp10c", "etp10d", "etp10e", "etp10f", "etp10g", "etp10h"]
+ }
+ },
+ "Ethernet80": {
+ "index": "11,11,11,11,11,11,11,11",
+ "lanes": "80,81,82,83,84,85,86,87",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp11"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp11a", "etp11b"],
+ "4x200G[100G,50G,25G,10G]": ["etp11a", "etp11b", "etp11c", "etp11d"],
+ "8x100G[50G,25G,10G]": ["etp11a", "etp11b", "etp11c", "etp11d", "etp11e", "etp11f", "etp11g", "etp11h"]
+ }
+ },
+ "Ethernet88": {
+ "index": "12,12,12,12,12,12,12,12",
+ "lanes": "88,89,90,91,92,93,94,95",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp12"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp12a", "etp12b"],
+ "4x200G[100G,50G,25G,10G]": ["etp12a", "etp12b", "etp12c", "etp12d"],
+ "8x100G[50G,25G,10G]": ["etp12a", "etp12b", "etp12c", "etp12d", "etp12e", "etp12f", "etp12g", "etp12h"]
+ }
+ },
+ "Ethernet96": {
+ "index": "13,13,13,13,13,13,13,13",
+ "lanes": "96,97,98,99,100,101,102,103",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp13"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp13a", "etp13b"],
+ "4x200G[100G,50G,25G,10G]": ["etp13a", "etp13b", "etp13c", "etp13d"],
+ "8x100G[50G,25G,10G]": ["etp13a", "etp13b", "etp13c", "etp13d", "etp13e", "etp13f", "etp13g", "etp13h"]
+ }
+ },
+ "Ethernet104": {
+ "index": "14,14,14,14,14,14,14,14",
+ "lanes": "104,105,106,107,108,109,110,111",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp14"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp14a", "etp14b"],
+ "4x200G[100G,50G,25G,10G]": ["etp14a", "etp14b", "etp14c", "etp14d"],
+ "8x100G[50G,25G,10G]": ["etp14a", "etp14b", "etp14c", "etp14d", "etp14e", "etp14f", "etp14g", "etp14h"]
+ }
+ },
+ "Ethernet112": {
+ "index": "15,15,15,15,15,15,15,15",
+ "lanes": "112,113,114,115,116,117,118,119",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp15"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp15a", "etp15b"],
+ "4x200G[100G,50G,25G,10G]": ["etp15a", "etp15b", "etp15c", "etp15d"],
+ "8x100G[50G,25G,10G]": ["etp15a", "etp15b", "etp15c", "etp15d", "etp15e", "etp15f", "etp15g", "etp15h"]
+ }
+ },
+ "Ethernet120": {
+ "index": "16,16,16,16,16,16,16,16",
+ "lanes": "120,121,122,123,124,125,126,127",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp16"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp16a", "etp16b"],
+ "4x200G[100G,50G,25G,10G]": ["etp16a", "etp16b", "etp16c", "etp16d"],
+ "8x100G[50G,25G,10G]": ["etp16a", "etp16b", "etp16c", "etp16d", "etp16e", "etp16f", "etp16g", "etp16h"]
+ }
+ },
+ "Ethernet128": {
+ "index": "17,17,17,17,17,17,17,17",
+ "lanes": "128,129,130,131,132,133,134,135",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp17"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp17a", "etp17b"],
+ "4x200G[100G,50G,25G,10G]": ["etp17a", "etp17b", "etp17c", "etp17d"],
+ "8x100G[50G,25G,10G]": ["etp17a", "etp17b", "etp17c", "etp17d", "etp17e", "etp17f", "etp17g", "etp17h"]
+ }
+ },
+ "Ethernet136": {
+ "index": "18,18,18,18,18,18,18,18",
+ "lanes": "136,137,138,139,140,141,142,143",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp18"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp18a", "etp18b"],
+ "4x200G[100G,50G,25G,10G]": ["etp18a", "etp18b", "etp18c", "etp18d"],
+ "8x100G[50G,25G,10G]": ["etp18a", "etp18b", "etp18c", "etp18d", "etp18e", "etp18f", "etp18g", "etp18h"]
+ }
+ },
+ "Ethernet144": {
+ "index": "19,19,19,19,19,19,19,19",
+ "lanes": "144,145,146,147,148,149,150,151",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp19"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp19a", "etp19b"],
+ "4x200G[100G,50G,25G,10G]": ["etp19a", "etp19b", "etp19c", "etp19d"],
+ "8x100G[50G,25G,10G]": ["etp19a", "etp19b", "etp19c", "etp19d", "etp19e", "etp19f", "etp19g", "etp19h"]
+ }
+ },
+ "Ethernet152": {
+ "index": "20,20,20,20,20,20,20,20",
+ "lanes": "152,153,154,155,156,157,158,159",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp20"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp20a", "etp20b"],
+ "4x200G[100G,50G,25G,10G]": ["etp20a", "etp20b", "etp20c", "etp20d"],
+ "8x100G[50G,25G,10G]": ["etp20a", "etp20b", "etp20c", "etp20d", "etp20e", "etp20f", "etp20g", "etp20h"]
+ }
+ },
+ "Ethernet160": {
+ "index": "21,21,21,21,21,21,21,21",
+ "lanes": "160,161,162,163,164,165,166,167",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp21"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp21a", "etp21b"],
+ "4x200G[100G,50G,25G,10G]": ["etp21a", "etp21b", "etp21c", "etp21d"],
+ "8x100G[50G,25G,10G]": ["etp21a", "etp21b", "etp21c", "etp21d", "etp21e", "etp21f", "etp21g", "etp21h"]
+ }
+ },
+ "Ethernet168": {
+ "index": "22,22,22,22,22,22,22,22",
+ "lanes": "168,169,170,171,172,173,174,175",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp22"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp22a", "etp22b"],
+ "4x200G[100G,50G,25G,10G]": ["etp22a", "etp22b", "etp22c", "etp22d"],
+ "8x100G[50G,25G,10G]": ["etp22a", "etp22b", "etp22c", "etp22d", "etp22e", "etp22f", "etp22g", "etp22h"]
+ }
+ },
+ "Ethernet176": {
+ "index": "23,23,23,23,23,23,23,23",
+ "lanes": "176,177,178,179,180,181,182,183",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp23"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp23a", "etp23b"],
+ "4x200G[100G,50G,25G,10G]": ["etp23a", "etp23b", "etp23c", "etp23d"],
+ "8x100G[50G,25G,10G]": ["etp23a", "etp23b", "etp23c", "etp23d", "etp23e", "etp23f", "etp23g", "etp23h"]
+ }
+ },
+ "Ethernet184": {
+ "index": "24,24,24,24,24,24,24,24",
+ "lanes": "184,185,186,187,188,189,190,191",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp24"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp24a", "etp24b"],
+ "4x200G[100G,50G,25G,10G]": ["etp24a", "etp24b", "etp24c", "etp24d"],
+ "8x100G[50G,25G,10G]": ["etp24a", "etp24b", "etp24c", "etp24d", "etp24e", "etp24f", "etp24g", "etp24h"]
+ }
+ },
+ "Ethernet192": {
+ "index": "25,25,25,25,25,25,25,25",
+ "lanes": "192,193,194,195,196,197,198,199",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp25"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp25a", "etp25b"],
+ "4x200G[100G,50G,25G,10G]": ["etp25a", "etp25b", "etp25c", "etp25d"],
+ "8x100G[50G,25G,10G]": ["etp25a", "etp25b", "etp25c", "etp25d", "etp25e", "etp25f", "etp25g", "etp25h"]
+ }
+ },
+ "Ethernet200": {
+ "index": "26,26,26,26,26,26,26,26",
+ "lanes": "200,201,202,203,204,205,206,207",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp26"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp26a", "etp26b"],
+ "4x200G[100G,50G,25G,10G]": ["etp26a", "etp26b", "etp26c", "etp26d"],
+ "8x100G[50G,25G,10G]": ["etp26a", "etp26b", "etp26c", "etp26d", "etp26e", "etp26f", "etp26g", "etp26h"]
+ }
+ },
+ "Ethernet208": {
+ "index": "27,27,27,27,27,27,27,27",
+ "lanes": "208,209,210,211,212,213,214,215",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp27"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp27a", "etp27b"],
+ "4x200G[100G,50G,25G,10G]": ["etp27a", "etp27b", "etp27c", "etp27d"],
+ "8x100G[50G,25G,10G]": ["etp27a", "etp27b", "etp27c", "etp27d", "etp27e", "etp27f", "etp27g", "etp27h"]
+ }
+ },
+ "Ethernet216": {
+ "index": "28,28,28,28,28,28,28,28",
+ "lanes": "216,217,218,219,220,221,222,223",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp28"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp28a", "etp28b"],
+ "4x200G[100G,50G,25G,10G]": ["etp28a", "etp28b", "etp28c", "etp28d"],
+ "8x100G[50G,25G,10G]": ["etp28a", "etp28b", "etp28c", "etp28d", "etp28e", "etp28f", "etp28g", "etp28h"]
+ }
+ },
+ "Ethernet224": {
+ "index": "29,29,29,29,29,29,29,29",
+ "lanes": "224,225,226,227,228,229,230,231",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp29"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp29a", "etp29b"],
+ "4x200G[100G,50G,25G,10G]": ["etp29a", "etp29b", "etp29c", "etp29d"],
+ "8x100G[50G,25G,10G]": ["etp29a", "etp29b", "etp29c", "etp29d", "etp29e", "etp29f", "etp29g", "etp29h"]
+ }
+ },
+ "Ethernet232": {
+ "index": "30,30,30,30,30,30,30,30",
+ "lanes": "232,233,234,235,236,237,238,239",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp30"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp30a", "etp30b"],
+ "4x200G[100G,50G,25G,10G]": ["etp30a", "etp30b", "etp30c", "etp30d"],
+ "8x100G[50G,25G,10G]": ["etp30a", "etp30b", "etp30c", "etp30d", "etp30e", "etp30f", "etp30g", "etp30h"]
+ }
+ },
+ "Ethernet240": {
+ "index": "31,31,31,31,31,31,31,31",
+ "lanes": "240,241,242,243,244,245,246,247",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp31"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp31a", "etp31b"],
+ "4x200G[100G,50G,25G,10G]": ["etp31a", "etp31b", "etp31c", "etp31d"],
+ "8x100G[50G,25G,10G]": ["etp31a", "etp31b", "etp31c", "etp31d", "etp31e", "etp31f", "etp31g", "etp31h"]
+ }
+ },
+ "Ethernet248": {
+ "index": "32,32,32,32,32,32,32,32",
+ "lanes": "248,249,250,251,252,253,254,255",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp32"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp32a", "etp32b"],
+ "4x200G[100G,50G,25G,10G]": ["etp32a", "etp32b", "etp32c", "etp32d"],
+ "8x100G[50G,25G,10G]": ["etp32a", "etp32b", "etp32c", "etp32d", "etp32e", "etp32f", "etp32g", "etp32h"]
+ }
+ },
+ "Ethernet256": {
+ "index": "33,33,33,33,33,33,33,33",
+ "lanes": "256,257,258,259,260,261,262,263",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp33"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp33a", "etp33b"],
+ "4x200G[100G,50G,25G,10G]": ["etp33a", "etp33b", "etp33c", "etp33d"],
+ "8x100G[50G,25G,10G]": ["etp33a", "etp33b", "etp33c", "etp33d", "etp33e", "etp33f", "etp33g", "etp33h"]
+ }
+ },
+ "Ethernet264": {
+ "index": "34,34,34,34,34,34,34,34",
+ "lanes": "264,265,266,267,268,269,270,271",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp34"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp34a", "etp34b"],
+ "4x200G[100G,50G,25G,10G]": ["etp34a", "etp34b", "etp34c", "etp34d"],
+ "8x100G[50G,25G,10G]": ["etp34a", "etp34b", "etp34c", "etp34d", "etp34e", "etp34f", "etp34g", "etp34h"]
+ }
+ },
+ "Ethernet272": {
+ "index": "35,35,35,35,35,35,35,35",
+ "lanes": "272,273,274,275,276,277,278,279",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp35"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp35a", "etp35b"],
+ "4x200G[100G,50G,25G,10G]": ["etp35a", "etp35b", "etp35c", "etp35d"],
+ "8x100G[50G,25G,10G]": ["etp35a", "etp35b", "etp35c", "etp35d", "etp35e", "etp35f", "etp35g", "etp35h"]
+ }
+ },
+ "Ethernet280": {
+ "index": "36,36,36,36,36,36,36,36",
+ "lanes": "280,281,282,283,284,285,286,287",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp36"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp36a", "etp36b"],
+ "4x200G[100G,50G,25G,10G]": ["etp36a", "etp36b", "etp36c", "etp36d"],
+ "8x100G[50G,25G,10G]": ["etp36a", "etp36b", "etp36c", "etp36d", "etp36e", "etp36f", "etp36g", "etp36h"]
+ }
+ },
+ "Ethernet288": {
+ "index": "37,37,37,37,37,37,37,37",
+ "lanes": "288,289,290,291,292,293,294,295",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp37"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp37a", "etp37b"],
+ "4x200G[100G,50G,25G,10G]": ["etp37a", "etp37b", "etp37c", "etp37d"],
+ "8x100G[50G,25G,10G]": ["etp37a", "etp37b", "etp37c", "etp37d", "etp37e", "etp37f", "etp37g", "etp37h"]
+ }
+ },
+ "Ethernet296": {
+ "index": "38,38,38,38,38,38,38,38",
+ "lanes": "296,297,298,299,300,301,302,303",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp38"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp38a", "etp38b"],
+ "4x200G[100G,50G,25G,10G]": ["etp38a", "etp38b", "etp38c", "etp38d"],
+ "8x100G[50G,25G,10G]": ["etp38a", "etp38b", "etp38c", "etp38d", "etp38e", "etp38f", "etp38g", "etp38h"]
+ }
+ },
+ "Ethernet304": {
+ "index": "39,39,39,39,39,39,39,39",
+ "lanes": "304,305,306,307,308,309,310,311",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp39"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp39a", "etp39b"],
+ "4x200G[100G,50G,25G,10G]": ["etp39a", "etp39b", "etp39c", "etp39d"],
+ "8x100G[50G,25G,10G]": ["etp39a", "etp39b", "etp39c", "etp39d", "etp39e", "etp39f", "etp39g", "etp39h"]
+ }
+ },
+ "Ethernet312": {
+ "index": "40,40,40,40,40,40,40,40",
+ "lanes": "312,313,314,315,316,317,318,319",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp40"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp40a", "etp40b"],
+ "4x200G[100G,50G,25G,10G]": ["etp40a", "etp40b", "etp40c", "etp40d"],
+ "8x100G[50G,25G,10G]": ["etp40a", "etp40b", "etp40c", "etp40d", "etp40e", "etp40f", "etp40g", "etp40h"]
+ }
+ },
+ "Ethernet320": {
+ "index": "41,41,41,41,41,41,41,41",
+ "lanes": "320,321,322,323,324,325,326,327",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp41"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp41a", "etp41b"],
+ "4x200G[100G,50G,25G,10G]": ["etp41a", "etp41b", "etp41c", "etp41d"],
+ "8x100G[50G,25G,10G]": ["etp41a", "etp41b", "etp41c", "etp41d", "etp41e", "etp41f", "etp41g", "etp41h"]
+ }
+ },
+ "Ethernet328": {
+ "index": "42,42,42,42,42,42,42,42",
+ "lanes": "328,329,330,331,332,333,334,335",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp42"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp42a", "etp42b"],
+ "4x200G[100G,50G,25G,10G]": ["etp42a", "etp42b", "etp42c", "etp42d"],
+ "8x100G[50G,25G,10G]": ["etp42a", "etp42b", "etp42c", "etp42d", "etp42e", "etp42f", "etp42g", "etp42h"]
+ }
+ },
+ "Ethernet336": {
+ "index": "43,43,43,43,43,43,43,43",
+ "lanes": "336,337,338,339,340,341,342,343",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp43"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp43a", "etp43b"],
+ "4x200G[100G,50G,25G,10G]": ["etp43a", "etp43b", "etp43c", "etp43d"],
+ "8x100G[50G,25G,10G]": ["etp43a", "etp43b", "etp43c", "etp43d", "etp43e", "etp43f", "etp43g", "etp43h"]
+ }
+ },
+ "Ethernet344": {
+ "index": "44,44,44,44,44,44,44,44",
+ "lanes": "344,345,346,347,348,349,350,351",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp44"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp44a", "etp44b"],
+ "4x200G[100G,50G,25G,10G]": ["etp44a", "etp44b", "etp44c", "etp44d"],
+ "8x100G[50G,25G,10G]": ["etp44a", "etp44b", "etp44c", "etp44d", "etp44e", "etp44f", "etp44g", "etp44h"]
+ }
+ },
+ "Ethernet352": {
+ "index": "45,45,45,45,45,45,45,45",
+ "lanes": "352,353,354,355,356,357,358,359",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp45"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp45a", "etp45b"],
+ "4x200G[100G,50G,25G,10G]": ["etp45a", "etp45b", "etp45c", "etp45d"],
+ "8x100G[50G,25G,10G]": ["etp45a", "etp45b", "etp45c", "etp45d", "etp45e", "etp45f", "etp45g", "etp45h"]
+ }
+ },
+ "Ethernet360": {
+ "index": "46,46,46,46,46,46,46,46",
+ "lanes": "360,361,362,363,364,365,366,367",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp46"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp46a", "etp46b"],
+ "4x200G[100G,50G,25G,10G]": ["etp46a", "etp46b", "etp46c", "etp46d"],
+ "8x100G[50G,25G,10G]": ["etp46a", "etp46b", "etp46c", "etp46d", "etp46e", "etp46f", "etp46g", "etp46h"]
+ }
+ },
+ "Ethernet368": {
+ "index": "47,47,47,47,47,47,47,47",
+ "lanes": "368,369,370,371,372,373,374,375",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp47"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp47a", "etp47b"],
+ "4x200G[100G,50G,25G,10G]": ["etp47a", "etp47b", "etp47c", "etp47d"],
+ "8x100G[50G,25G,10G]": ["etp47a", "etp47b", "etp47c", "etp47d", "etp47e", "etp47f", "etp47g", "etp47h"]
+ }
+ },
+ "Ethernet376": {
+ "index": "48,48,48,48,48,48,48,48",
+ "lanes": "376,377,378,379,380,381,382,383",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp48"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp48a", "etp48b"],
+ "4x200G[100G,50G,25G,10G]": ["etp48a", "etp48b", "etp48c", "etp48d"],
+ "8x100G[50G,25G,10G]": ["etp48a", "etp48b", "etp48c", "etp48d", "etp48e", "etp48f", "etp48g", "etp48h"]
+ }
+ },
+ "Ethernet384": {
+ "index": "49,49,49,49,49,49,49,49",
+ "lanes": "384,385,386,387,388,389,390,391",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp49"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp49a", "etp49b"],
+ "4x200G[100G,50G,25G,10G]": ["etp49a", "etp49b", "etp49c", "etp49d"],
+ "8x100G[50G,25G,10G]": ["etp49a", "etp49b", "etp49c", "etp49d", "etp49e", "etp49f", "etp49g", "etp49h"]
+ }
+ },
+ "Ethernet392": {
+ "index": "50,50,50,50,50,50,50,50",
+ "lanes": "392,393,394,395,396,397,398,399",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp50"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp50a", "etp50b"],
+ "4x200G[100G,50G,25G,10G]": ["etp50a", "etp50b", "etp50c", "etp50d"],
+ "8x100G[50G,25G,10G]": ["etp50a", "etp50b", "etp50c", "etp50d", "etp50e", "etp50f", "etp50g", "etp50h"]
+ }
+ },
+ "Ethernet400": {
+ "index": "51,51,51,51,51,51,51,51",
+ "lanes": "400,401,402,403,404,405,406,407",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp51"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp51a", "etp51b"],
+ "4x200G[100G,50G,25G,10G]": ["etp51a", "etp51b", "etp51c", "etp51d"],
+ "8x100G[50G,25G,10G]": ["etp51a", "etp51b", "etp51c", "etp51d", "etp51e", "etp51f", "etp51g", "etp51h"]
+ }
+ },
+ "Ethernet408": {
+ "index": "52,52,52,52,52,52,52,52",
+ "lanes": "408,409,410,411,412,413,414,415",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp52"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp52a", "etp52b"],
+ "4x200G[100G,50G,25G,10G]": ["etp52a", "etp52b", "etp52c", "etp52d"],
+ "8x100G[50G,25G,10G]": ["etp52a", "etp52b", "etp52c", "etp52d", "etp52e", "etp52f", "etp52g", "etp52h"]
+ }
+ },
+ "Ethernet416": {
+ "index": "53,53,53,53,53,53,53,53",
+ "lanes": "416,417,418,419,420,421,422,423",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp53"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp53a", "etp53b"],
+ "4x200G[100G,50G,25G,10G]": ["etp53a", "etp53b", "etp53c", "etp53d"],
+ "8x100G[50G,25G,10G]": ["etp53a", "etp53b", "etp53c", "etp53d", "etp53e", "etp53f", "etp53g", "etp53h"]
+ }
+ },
+ "Ethernet424": {
+ "index": "54,54,54,54,54,54,54,54",
+ "lanes": "424,425,426,427,428,429,430,431",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp54"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp54a", "etp54b"],
+ "4x200G[100G,50G,25G,10G]": ["etp54a", "etp54b", "etp54c", "etp54d"],
+ "8x100G[50G,25G,10G]": ["etp54a", "etp54b", "etp54c", "etp54d", "etp54e", "etp54f", "etp54g", "etp54h"]
+ }
+ },
+ "Ethernet432": {
+ "index": "55,55,55,55,55,55,55,55",
+ "lanes": "432,433,434,435,436,437,438,439",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp55"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp55a", "etp55b"],
+ "4x200G[100G,50G,25G,10G]": ["etp55a", "etp55b", "etp55c", "etp55d"],
+ "8x100G[50G,25G,10G]": ["etp55a", "etp55b", "etp55c", "etp55d", "etp55e", "etp55f", "etp55g", "etp55h"]
+ }
+ },
+ "Ethernet440": {
+ "index": "56,56,56,56,56,56,56,56",
+ "lanes": "440,441,442,443,444,445,446,447",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp56"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp56a", "etp56b"],
+ "4x200G[100G,50G,25G,10G]": ["etp56a", "etp56b", "etp56c", "etp56d"],
+ "8x100G[50G,25G,10G]": ["etp56a", "etp56b", "etp56c", "etp56d", "etp56e", "etp56f", "etp56g", "etp56h"]
+ }
+ },
+ "Ethernet448": {
+ "index": "57,57,57,57,57,57,57,57",
+ "lanes": "448,449,450,451,452,453,454,455",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp57"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp57a", "etp57b"],
+ "4x200G[100G,50G,25G,10G]": ["etp57a", "etp57b", "etp57c", "etp57d"],
+ "8x100G[50G,25G,10G]": ["etp57a", "etp57b", "etp57c", "etp57d", "etp57e", "etp57f", "etp57g", "etp57h"]
+ }
+ },
+ "Ethernet456": {
+ "index": "58,58,58,58,58,58,58,58",
+ "lanes": "456,457,458,459,460,461,462,463",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp58"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp58a", "etp58b"],
+ "4x200G[100G,50G,25G,10G]": ["etp58a", "etp58b", "etp58c", "etp58d"],
+ "8x100G[50G,25G,10G]": ["etp58a", "etp58b", "etp58c", "etp58d", "etp58e", "etp58f", "etp58g", "etp58h"]
+ }
+ },
+ "Ethernet464": {
+ "index": "59,59,59,59,59,59,59,59",
+ "lanes": "464,465,466,467,468,469,470,471",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp59"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp59a", "etp59b"],
+ "4x200G[100G,50G,25G,10G]": ["etp59a", "etp59b", "etp59c", "etp59d"],
+ "8x100G[50G,25G,10G]": ["etp59a", "etp59b", "etp59c", "etp59d", "etp59e", "etp59f", "etp59g", "etp59h"]
+ }
+ },
+ "Ethernet472": {
+ "index": "60,60,60,60,60,60,60,60",
+ "lanes": "472,473,474,475,476,477,478,479",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp60"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp60a", "etp60b"],
+ "4x200G[100G,50G,25G,10G]": ["etp60a", "etp60b", "etp60c", "etp60d"],
+ "8x100G[50G,25G,10G]": ["etp60a", "etp60b", "etp60c", "etp60d", "etp60e", "etp60f", "etp60g", "etp60h"]
+ }
+ },
+ "Ethernet480": {
+ "index": "61,61,61,61,61,61,61,61",
+ "lanes": "480,481,482,483,484,485,486,487",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp61"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp61a", "etp61b"],
+ "4x200G[100G,50G,25G,10G]": ["etp61a", "etp61b", "etp61c", "etp61d"],
+ "8x100G[50G,25G,10G]": ["etp61a", "etp61b", "etp61c", "etp61d", "etp61e", "etp61f", "etp61g", "etp61h"]
+ }
+ },
+ "Ethernet488": {
+ "index": "62,62,62,62,62,62,62,62",
+ "lanes": "488,489,490,491,492,493,494,495",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp62"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp62a", "etp62b"],
+ "4x200G[100G,50G,25G,10G]": ["etp62a", "etp62b", "etp62c", "etp62d"],
+ "8x100G[50G,25G,10G]": ["etp62a", "etp62b", "etp62c", "etp62d", "etp62e", "etp62f", "etp62g", "etp62h"]
+ }
+ },
+ "Ethernet496": {
+ "index": "63,63,63,63,63,63,63,63",
+ "lanes": "496,497,498,499,500,501,502,503",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp63"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp63a", "etp63b"],
+ "4x200G[100G,50G,25G,10G]": ["etp63a", "etp63b", "etp63c", "etp63d"],
+ "8x100G[50G,25G,10G]": ["etp63a", "etp63b", "etp63c", "etp63d", "etp63e", "etp63f", "etp63g", "etp63h"]
+ }
+ },
+ "Ethernet504": {
+ "index": "64,64,64,64,64,64,64,64",
+ "lanes": "504,505,506,507,508,509,510,511",
+ "breakout_modes": {
+ "1x800G[400G,200G,100G,50G,40G,25G,10G]": ["etp64"],
+ "2x400G[200G,100G,50G,40G,25G,10G]": ["etp64a", "etp64b"],
+ "4x200G[100G,50G,25G,10G]": ["etp64a", "etp64b", "etp64c", "etp64d"],
+ "8x100G[50G,25G,10G]": ["etp64a", "etp64b", "etp64c", "etp64d", "etp64e", "etp64f", "etp64g", "etp64h"]
+ }
+ },
+ "Ethernet512": {
+ "index": "65",
+ "lanes": "512",
+ "breakout_modes": {
+ "1x25G[10G]": ["etp65"]
+ }
+ }
+ }
+}
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/platform_asic b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_asic
new file mode 100644
index 000000000000..70c074885557
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_asic
@@ -0,0 +1 @@
+mellanox
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/platform_components.json b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_components.json
new file mode 100644
index 000000000000..e9b6398e7cfa
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_components.json
@@ -0,0 +1,15 @@
+{
+ "chassis": {
+ "SN5600": {
+ "component": {
+ "ONIE": { },
+ "SSD": { },
+ "BIOS": { },
+ "CPLD1": { },
+ "CPLD2": { },
+ "CPLD3": { },
+ "CPLD4": { }
+ }
+ }
+ }
+}
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/platform_reboot b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_reboot
new file mode 120000
index 000000000000..43c8ea567493
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_reboot
@@ -0,0 +1 @@
+../x86_64-mlnx_msn2700-r0/platform_reboot
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/platform_wait b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_wait
new file mode 120000
index 000000000000..4b30bd429854
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/platform_wait
@@ -0,0 +1 @@
+../x86_64-mlnx_msn2700-r0/platform_wait
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/eeprom.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/eeprom.py
new file mode 120000
index 000000000000..b4e2a6a61671
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/eeprom.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/eeprom.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/psuutil.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/psuutil.py
new file mode 120000
index 000000000000..9f724238a8d5
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/psuutil.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/psuutil.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmget.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmget.py
new file mode 120000
index 000000000000..2e84f435abd9
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmget.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/sfplpmget.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmset.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmset.py
new file mode 120000
index 000000000000..6a88bac30467
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmset.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/sfplpmset.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfpreset.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfpreset.py
new file mode 120000
index 000000000000..fef2063e3496
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfpreset.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/sfpreset.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfputil.py b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfputil.py
new file mode 120000
index 000000000000..45909b880fc9
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfputil.py
@@ -0,0 +1 @@
+../../x86_64-mlnx_msn2700-r0/plugins/sfputil.py
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/pmon_daemon_control.json b/device/mellanox/x86_64-nvidia_sn5600-r0/pmon_daemon_control.json
new file mode 120000
index 000000000000..435a2ce7c0ba
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/pmon_daemon_control.json
@@ -0,0 +1 @@
+../x86_64-mlnx_msn2700-r0/pmon_daemon_control.json
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/sensors.conf b/device/mellanox/x86_64-nvidia_sn5600-r0/sensors.conf
new file mode 100644
index 000000000000..d7f122a714a1
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/sensors.conf
@@ -0,0 +1,301 @@
+##################################################################################
+# Copyright (c) 2019 - 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+#
+# Platform specific sensors config for SN5600
+##################################################################################
+
+# Bus names
+bus "i2c-39" "i2c-1-mux (chan_id 6)"
+
+# Temperature sensors
+chip "mlxsw-i2c-*-48"
+ label temp1 "Ambient ASIC Temp"
+
+chip "tmp102-i2c-*-49"
+ label temp1 "Ambient Fan Side Temp (air intake)"
+chip "adt75-i2c-*-49"
+ label temp1 "Ambient Fan Side Temp (air intake)"
+chip "tmp102-i2c-*-4a"
+ label temp1 "Ambient Port Side Temp (air exhaust)"
+chip "adt75-i2c-*-4a"
+ label temp1 "Ambient Port Side Temp (air exhaust)"
+
+# Power controllers
+chip "mp2975-i2c-*-62"
+ label in1 "PMIC-1 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-1 VDD_M ADJ Rail (out1)"
+ ignore in3
+ label temp1 "PMIC-1 VDD_M ADJ Temp 1"
+ ignore temp2
+ label power1 "PMIC-1 13V5 VDD_M (in)"
+ label power2 "PMIC-1 VDD_M Rail Pwr (out1)"
+ ignore power3
+ label curr1 "PMIC-1 13V5 VDD_M Rail Curr (in1)"
+ label curr2 "PMIC-1 VDD_M Rail Curr (out1)"
+ ignore curr3
+ ignore curr4
+ ignore curr5
+ ignore curr6
+ ignore curr7
+ ignore curr8
+ ignore curr9
+ ignore curr10
+chip "mp2975-i2c-*-63"
+ label in1 "PMIC-2 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-2 VDD_T0 ADJ Rail (out1)"
+ label in3 "PMIC-2 VDD_T1 ADJ Rail (out2)"
+ label temp1 "PMIC-2 VDD_T0 ADJ Temp 1"
+ label temp2 "PMIC-2 VDD_T1 ADJ Temp 2"
+ label power1 "PMIC-2 13V5 VDD_T0 VDD_T1 (in)"
+ label power2 "PMIC-2 VDD_T0 Rail Pwr (out1)"
+ label power3 "PMIC-2 VDD_T1 Rail Pwr (out2)"
+ label curr1 "PMIC-2 13V5 VDD_T0 VDD_T1 Rail Curr (in1)"
+ label curr2 "PMIC-2 VDD_T0 Rail Curr (out1)"
+ label curr3 "PMIC-2 VDD_T1 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-64"
+ label in1 "PMIC-3 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-3 VDD_T2 ADJ Rail (out1)"
+ label in3 "PMIC-3 VDD_T3 ADJ Rail (out2)"
+ label temp1 "PMIC-3 VDD_T2 ADJ Temp 1"
+ label temp2 "PMIC-3 VDD_T3 ADJ Temp 2"
+ label power1 "PMIC-3 13V5 VDD_T2 VDD_T3 (in)"
+ label power2 "PMIC-3 VDD_T2 Rail Pwr (out1)"
+ label power3 "PMIC-3 VDD_T3 Rail Pwr (out2)"
+ label curr1 "PMIC-3 13V5 VDD_T2 VDD_T3 Rail Curr (in1)"
+ label curr2 "PMIC-3 VDD_T2 Rail Curr (out1)"
+ label curr3 "PMIC-3 VDD_T3 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-65"
+ label in1 "PMIC-4 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-4 VDD_T4 ADJ Rail (out1)"
+ label in3 "PMIC-4 VDD_T5 ADJ Rail (out2)"
+ label temp1 "PMIC-4 VDD_T4 ADJ Temp 1"
+ label temp2 "PMIC-4 VDD_T5 ADJ Temp 2"
+ label power1 "PMIC-4 13V5 VDD_T4 VDD_T5 (in)"
+ label power2 "PMIC-4 VDD_T4 Rail Pwr (out1)"
+ label power3 "PMIC-4 VDD_T5 Rail Pwr (out2)"
+ label curr1 "PMIC-4 13V5 VDD_T4 VDD_T5 Rail Curr (in1)"
+ label curr2 "PMIC-4 VDD_T4 Rail Curr (out1)"
+ label curr3 "PMIC-4 VDD_T5 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-66"
+ label in1 "PMIC-5 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-5 VDD_T6 ADJ Rail (out1)"
+ label in3 "PMIC-5 VDD_T7 ADJ Rail (out2)"
+ label temp1 "PMIC-5 VDD_T6 ADJ Temp 1"
+ label temp2 "PMIC-5 VDD_T7 ADJ Temp 2"
+ label power1 "PMIC-5 13V5 VDD_T6 VDD_T7 (in)"
+ label power2 "PMIC-5 VDD_T6 Rail Pwr (out1)"
+ label power3 "PMIC-5 VDD_T7 Rail Pwr (out2)"
+ label curr1 "PMIC-5 13V5 VDD_T6 VDD_T7 Rail Curr (in1)"
+ label curr2 "PMIC-5 VDD_T6 Rail Curr (out1)"
+ label curr3 "PMIC-5 VDD_T7 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-67"
+ label in1 "PMIC-6 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-6 DVDD_T0 ADJ Rail (out1)"
+ label in3 "PMIC-6 DVDD_T1 ADJ Rail (out2)"
+ label temp1 "PMIC-6 DVDD_T0 ADJ Temp 1"
+ label temp2 "PMIC-6 DVDD_T1 ADJ Temp 2"
+ label power1 "PMIC-6 13V5 DVDD_T0 DVDD_T1 (in)"
+ label power2 "PMIC-6 DVDD_T0 Rail Pwr (out1)"
+ label power3 "PMIC-6 DVDD_T1 Rail Pwr (out2)"
+ label curr1 "PMIC-6 13V5 DVDD_T0 DVDD_T1 Rail Curr (in1)"
+ label curr2 "PMIC-6 DVDD_T0 Rail Curr (out1)"
+ label curr3 "PMIC-6 DVDD_T1 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-68"
+ label in1 "PMIC-7 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-7 DVDD_T2 ADJ Rail (out1)"
+ label in3 "PMIC-7 DVDD_T3 ADJ Rail (out2)"
+ label temp1 "PMIC-7 DVDD_T2 ADJ Temp 1"
+ label temp2 "PMIC-7 DVDD_T3 ADJ Temp 2"
+ label power1 "PMIC-7 13V5 DVDD_T2 DVDD_T3 (in)"
+ label power2 "PMIC-7 DVDD_T2 Rail Pwr (out1)"
+ label power3 "PMIC-7 DVDD_T3 Rail Pwr (out2)"
+ label curr1 "PMIC-7 13V5 DVDD_T2 DVDD_T3 Rail Curr (in1)"
+ label curr2 "PMIC-7 DVDD_T2 Rail Curr (out1)"
+ label curr3 "PMIC-7 DVDD_T3 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-69"
+ label in1 "PMIC-8 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-8 DVDD_T4 ADJ Rail (out1)"
+ label in3 "PMIC-8 DVDD_T5 ADJ Rail (out2)"
+ label temp1 "PMIC-8 DVDD_T4 ADJ Temp 1"
+ label temp2 "PMIC-8 DVDD_T5 ADJ Temp 2"
+ label power1 "PMIC-8 13V5 DVDD_T4 DVDD_T5 (in)"
+ label power2 "PMIC-8 DVDD_T4 Rail Pwr (out1)"
+ label power3 "PMIC-8 DVDD_T5 Rail Pwr (out2)"
+ label curr1 "PMIC-8 13V5 DVDD_T4 DVDD_T5 Rail Curr (in1)"
+ label curr2 "PMIC-8 DVDD_T4 Rail Curr (out1)"
+ label curr3 "PMIC-8 DVDD_T5 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-6a"
+ label in1 "PMIC-9 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-9 DVDD_T6 ADJ Rail (out1)"
+ label in3 "PMIC-9 DVDD_T7 ADJ Rail (out2)"
+ label temp1 "PMIC-9 DVDD_T6 ADJ Temp 1"
+ label temp2 "PMIC-9 DVDD_T7 ADJ Temp 2"
+ label power1 "PMIC-9 13V5 DVDD_T6 DVDD_T7 (in)"
+ label power2 "PMIC-9 DVDD_T6 Rail Pwr (out1)"
+ label power3 "PMIC-9 DVDD_T7 Rail Pwr (out2)"
+ label curr1 "PMIC-9 13V5 DVDD_T6 DVDD_T7 Rail Curr (in1)"
+ label curr2 "PMIC-9 DVDD_T6 Rail Curr (out1)"
+ label curr3 "PMIC-9 DVDD_T7 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+chip "mp2975-i2c-*-6b"
+ label in1 "PMIC-10 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-10 HVDD_T03 1V2 Rail (out1)"
+ label in3 "PMIC-10 HVDD_T47 1V2 Rail (out2)"
+ label temp1 "PMIC-10 HVDD_T03 1V2 Temp 1"
+ label temp2 "PMIC-10 HVDD_T47 1V2 Temp 2"
+ label power1 "PMIC-10 13V5 HVDD_T03 HVDD_T47 (in)"
+ label power2 "PMIC-10 HVDD_T03 Rail Pwr (out1)"
+ label power3 "PMIC-10 HVDD_T47 Rail Pwr (out2)"
+ label curr1 "PMIC-10 13V5 HVDD_T03 HVDD_T47 Rail Curr (in1)"
+ label curr2 "PMIC-10 HVDD_T03 Rail Curr (out1)"
+ label curr3 "PMIC-10 HVDD_T47 Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+ ignore curr7
+ ignore curr8
+ ignore curr9
+ ignore curr10
+ ignore curr11
+chip "mp2975-i2c-*-6e"
+ label in1 "PMIC-11 PSU 13V5 Rail (in1)"
+ label in2 "PMIC-11 VDDSCC 0V75 Rail (out1)"
+ label in3 "PMIC-11 DVDD_M ADJ Rail (out2)"
+ label temp1 "PMIC-11 VDDSCC 1V2 Temp 1"
+ label temp2 "PMIC-11 DVDD_M 1V2 Temp 2"
+ label power1 "PMIC-11 13V5 VDDSCC DVDD_M (in)"
+ label power2 "PMIC-11 VDDSCC Rail Pwr (out1)"
+ label power3 "PMIC-11 DVDD_M Rail Pwr (out2)"
+ label curr1 "PMIC-11 13V5 VDDSCC DVDD_M Rail Curr (in1)"
+ label curr2 "PMIC-11 VDDSCC Rail Curr (out1)"
+ label curr3 "PMIC-11 DVDD_M Rail Curr (out2)"
+ ignore curr4
+ ignore curr5
+ ignore curr6
+
+# Power supplies
+
+chip "dps460-i2c-*-5a"
+ label in1 "PSU-1(L) 220V Rail (in)"
+ ignore in2
+ label in3 "PSU-1(L) 12V Rail (out)"
+ label fan1 "PSU-1(L) Fan 1"
+ label temp1 "PSU-1(L) Temp 1"
+ label temp2 "PSU-1(L) Temp 2"
+ label temp3 "PSU-1(L) Temp 3"
+ label power1 "PSU-1(L) 220V Rail Pwr (in)"
+ label power2 "PSU-1(L) 12V Rail Pwr (out)"
+ label curr1 "PSU-1(L) 220V Rail Curr (in)"
+ label curr2 "PSU-1(L) 12V Rail Curr (out)"
+chip "dps460-i2c-*-59"
+ label in1 "PSU-2(R) 220V Rail (in)"
+ ignore in2
+ label in3 "PSU-2(R) 12V Rail (out)"
+ label fan1 "PSU-2(R) Fan 1"
+ label temp1 "PSU-2(R) Temp 1"
+ label temp2 "PSU-2(R) Temp 2"
+ label temp3 "PSU-2(R) Temp 3"
+ label power1 "PSU-2(R) 220V Rail Pwr (in)"
+ label power2 "PSU-2(R) 12V Rail Pwr (out)"
+ label curr1 "PSU-2(R) 220V Rail Curr (in)"
+ label curr2 "PSU-2(R) 12V Rail Curr (out)"
+
+# Power converters
+chip "pmbus-i2c-*-10"
+ label in1 "IBC-1 PWR CONV 54V Rail (in1)"
+ ignore in2
+ ignore in3
+ label temp1 "IBC-1 Temp 1"
+ label curr1 "IBC-1 13V5 Rail Curr (out)"
+ ignore curr2
+chip "pmbus-i2c-*-11"
+ label in1 "IBC-2 PWR CONV 54V Rail (in1)"
+ ignore in2
+ ignore in3
+ label temp1 "IBC-2 Temp 1"
+ label curr1 "IBC-2 13V5 Rail Curr (out)"
+ ignore curr2
+chip "pmbus-i2c-*-13"
+ label in1 "IBC-3 PWR CONV 54V Rail (in1)"
+ ignore in2
+ ignore in3
+ label temp1 "IBC-3 Temp 1"
+ label curr1 "IBC-3 13V5 Rail Curr (out)"
+ ignore curr2
+chip "pmbus-i2c-*-15"
+ label in1 "IBC-4 PWR CONV 54V Rail (in1)"
+ ignore in2
+ ignore in3
+ label temp1 "IBC-4 Temp 1"
+ label curr1 "IBC-4 13V5 Rail Curr (out)"
+ ignore curr2
+
+#COMEX CFL
+chip "mp2975-i2c-39-6b"
+ label in1 "PMIC-6 PSU 12V Rail (vin)"
+ label in2 "PMIC-6 COMEX VCORE (out1)"
+ label in3 "PMIC-6 COMEX VCCSA (out2)"
+ label temp1 "PMIC-6 Temp"
+ label power1 "PMIC-6 COMEX Pwr (pin)"
+ label power2 "PMIC-6 COMEX VCORE Pwr (pout1)"
+ label power3 "PMIC-6 COMEX VCCSA Pwr (pout2)"
+ label curr1 "PMIC-6 COMEX Curr (iin)"
+ label curr2 "PMIC-6 COMEX VCORE Rail Curr (out1)"
+ ignore curr3
+ ignore curr4
+ ignore curr5
+ label curr6 "PMIC-6 COMEX VCCSA Rail Curr (out2)"
+ ignore curr7
+
+# Chassis fans
+chip "mlxreg_fan-isa-*"
+ label fan1 "Chassis Fan Drawer-1 Tach 1"
+ label fan2 "Chassis Fan Drawer-1 Tach 2"
+ label fan3 "Chassis Fan Drawer-2 Tach 1"
+ label fan4 "Chassis Fan Drawer-2 Tach 2"
+ label fan5 "Chassis Fan Drawer-3 Tach 1"
+ label fan6 "Chassis Fan Drawer-3 Tach 2"
+ label fan7 "Chassis Fan Drawer-4 Tach 1"
+ label fan8 "Chassis Fan Drawer-4 Tach 2"
+
+# Memory sensors
+bus "i2c-0" "SMBus I801 adapter at efa0"
+chip "jc42-i2c-0-1c"
+ label temp1 "SODIMM Temp"
+
+chip "jc42-i2c-0-1a"
+ label temp1 "SODIMM Temp"
+
+# PCH
+chip "pch_cannonlake-virtual-*"
+ label temp1 "PCH Temp"
+
+# SSD
+chip "drivetemp-*"
+ label temp1 "SSD Temp"
+
+chip "*-acpi-*"
+ label temp1 "CPU ACPI temp"
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/system_health_monitoring_config.json b/device/mellanox/x86_64-nvidia_sn5600-r0/system_health_monitoring_config.json
new file mode 120000
index 000000000000..98df66c27ca5
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/system_health_monitoring_config.json
@@ -0,0 +1 @@
+../x86_64-mlnx_msn2700-r0/system_health_monitoring_config.json
\ No newline at end of file
diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/thermal_policy.json b/device/mellanox/x86_64-nvidia_sn5600-r0/thermal_policy.json
new file mode 120000
index 000000000000..5a25cd87f70c
--- /dev/null
+++ b/device/mellanox/x86_64-nvidia_sn5600-r0/thermal_policy.json
@@ -0,0 +1 @@
+../x86_64-mlnx_msn2700-r0/thermal_policy.json
\ No newline at end of file
diff --git a/files/scripts/syncd.sh b/files/scripts/syncd.sh
index 812cf30e4001..c00d3b5a6964 100755
--- a/files/scripts/syncd.sh
+++ b/files/scripts/syncd.sh
@@ -28,6 +28,19 @@ function startplatform() {
debug "Firmware update procedure ended"
fi
+ if [[ x"$sonic_asic_platform" == x"broadcom" ]]; then
+ if [[ x"$WARM_BOOT" != x"true" ]]; then
+ is_bcm0=$(ls /sys/class/net | grep bcm0)
+ if [[ "$is_bcm0" == "bcm0" ]]; then
+ debug "stop SDK opennsl-modules ..."
+ /etc/init.d/opennsl-modules stop
+ debug "start SDK opennsl-modules ..."
+ /etc/init.d/opennsl-modules start
+ debug "started SDK opennsl-modules"
+ fi
+ fi
+ fi
+
if [[ x"$sonic_asic_platform" == x"barefoot" ]]; then
is_usb0=$(ls /sys/class/net | grep usb0)
if [[ "$is_usb0" == "usb0" ]]; then
diff --git a/slave.mk b/slave.mk
index a0a83c242255..ae3c6b4dcc3d 100644
--- a/slave.mk
+++ b/slave.mk
@@ -440,6 +440,15 @@ export vs_build_prepare_mem=$(VS_PREPARE_MEM)
##
## docker-swss:latest <=SAVE/LOAD=> docker-swss-:
+# $(call docker-get-tag,tag)
+# Get the docker tag. For packages it is an image version, for other dockers it stays latest.
+#
+# $(1) => Docker name
+
+define docker-get-tag
+$(shell [ ! -z $(filter $(1).gz,$(SONIC_PACKAGES_LOCAL)) ] && echo $(SONIC_IMAGE_VERSION) || echo latest)
+endef
+
# $(call docker-image-save,from,to)
# Sonic docker images are always created with username as extension. During the save operation,
# it removes the username extension from docker image and saved them as compressed tar file for SONiC image generation.
@@ -452,13 +461,13 @@ define docker-image-save
@echo "Attempting docker image lock for $(1) save" $(LOG)
$(call MOD_LOCK,$(1),$(DOCKER_LOCKDIR),$(DOCKER_LOCKFILE_SUFFIX),$(DOCKER_LOCKFILE_TIMEOUT))
@echo "Obtained docker image lock for $(1) save" $(LOG)
- @echo "Tagging docker image $(1)-$(DOCKER_USERNAME):$(DOCKER_USERTAG) as $(1):latest" $(LOG)
- docker tag $(1)-$(DOCKER_USERNAME):$(DOCKER_USERTAG) $(1):latest $(LOG)
- @echo "Saving docker image $(1):latest" $(LOG)
- docker save $(1):latest | gzip -c > $(2)
+ @echo "Tagging docker image $(1)-$(DOCKER_USERNAME):$(DOCKER_USERTAG) as $(1):$(call docker-get-tag,$(1))" $(LOG)
+ docker tag $(1)-$(DOCKER_USERNAME):$(DOCKER_USERTAG) $(1):$(call docker-get-tag,$(1)) $(LOG)
+ @echo "Saving docker image $(1):$(call docker-get-tag,$(1))" $(LOG)
+ docker save $(1):$(call docker-get-tag,$(1)) | gzip -c > $(2)
if [ x$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD) == x"y" ]; then
- @echo "Removing docker image $(1):latest" $(LOG)
- docker rmi -f $(1):latest $(LOG)
+ @echo "Removing docker image $(1):$(call docker-get-tag,$(1))" $(LOG)
+ docker rmi -f $(1):$(call docker-get-tag,$(1)) $(LOG)
fi
$(call MOD_UNLOCK,$(1))
@echo "Released docker image lock for $(1) save" $(LOG)
@@ -1027,6 +1036,7 @@ $(addprefix $(TARGET_PATH)/, $(DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform
-t $(DOCKER_IMAGE_REF) $($*.gz_PATH) $(LOG)
if [ x$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD) == x"y" ]; then docker tag $(DOCKER_IMAGE_REF) $*; fi
scripts/collect_docker_version_files.sh $(DOCKER_IMAGE_REF) $(TARGET_PATH)
+ if [ ! -z $(filter $*.gz,$(SONIC_PACKAGES_LOCAL)) ]; then docker tag $(DOCKER_IMAGE_REF) $*:$(SONIC_IMAGE_VERSION); fi
$(call docker-image-save,$*,$@)
# Clean up
if [ -f $($*.gz_PATH).patch/series ]; then pushd $($*.gz_PATH) && quilt pop -a -f; [ -d .pc ] && rm -rf .pc; popd; fi
@@ -1080,6 +1090,7 @@ $(addprefix $(TARGET_PATH)/, $(DOCKER_DBG_IMAGES)) : $(TARGET_PATH)/%-$(DBG_IMAG
-t $(DOCKER_DBG_IMAGE_REF) $($*.gz_PATH) $(LOG)
if [ x$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD) == x"y" ]; then docker tag $(DOCKER_IMAGE_REF) $*; fi
scripts/collect_docker_version_files.sh $(DOCKER_DBG_IMAGE_REF) $(TARGET_PATH)
+ if [ ! -z $(filter $*.gz,$(SONIC_PACKAGES_LOCAL)) ]; then docker tag $(DOCKER_IMAGE_REF) $*:$(SONIC_IMAGE_VERSION); fi
$(call docker-image-save,$*-$(DBG_IMAGE_MARK),$@)
# Clean up
docker rmi -f $(DOCKER_IMAGE_REF) &> /dev/null || true