From 6f2ddc5f49ce7105930dc4b0c885213590470317 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Wed, 30 Nov 2022 11:28:06 +0800 Subject: [PATCH 1/6] [action] Add github action to merge mssonicbld's PRs which can be merged (#12564) * [action] Add github action to scan auto-mergeable PRs --- .github/workflows/automerge_scan.yml | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/automerge_scan.yml 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 From 0bd3be32e6ac0a7b9c4ee74983e12584314ffe03 Mon Sep 17 00:00:00 2001 From: Mai Bui Date: Wed, 30 Nov 2022 03:06:28 -0500 Subject: [PATCH 2/6] [device/marvell] Mitigation for security vulnerability (#11876) #### Why I did it `os` and `commands` modules are not secure against maliciously constructed input `getstatusoutput` is detected without a static string, uses `shell=True` #### How I did it Eliminate the use of `os` and `commands` Use `subprocess` instead --- .../plugins/sfputil.py | 21 ++++++++----------- .../plugins/sfputil.py | 21 ++++++++----------- .../plugins/psuutil.py | 13 +++--------- .../plugins/sfputil.py | 18 +++++++--------- .../plugins/sfputil.py | 21 ++++++++----------- .../plugins/sfputil.py | 21 ++++++++----------- 6 files changed, 46 insertions(+), 69 deletions(-) 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) From f725b83bd6a02cbb14f9d6d0c6a8c8e270e57ed5 Mon Sep 17 00:00:00 2001 From: Michael Li <52540620+michaelli10@users.noreply.github.com> Date: Wed, 30 Nov 2022 00:16:30 -0800 Subject: [PATCH 3/6] Reload BCM SDK kmods on syncd start to handle syncd restart issues (#12804) Why I did it There is an issue on the Arista PikeZ platform (using T3.X2: BCM56274) while running SONiC. If the 'syncd' container in SONiC is restarted, the expected behaviour is that syncd will automatically restart/recover; however it does not and always fails at create_switch due to BCM SDK kmod DMA operation cancellation getting stuck. Sep 16 22:19:44.855125 pkz208 ERR syncd#syncd: [none] SAI_API_SWITCH:platform_process_command:428 Platform command "init soc" failed, rc = -1. Sep 16 22:19:44.855206 pkz208 INFO syncd#supervisord: syncd CMIC_CMC0_PKTDMA_CH4_DESC_COUNT_REQ:0x33#015 Sep 16 22:19:44.855264 pkz208 CRIT syncd#syncd: [none] SAI_API_SWITCH:platformInit:1909 initialization command "init soc" failed, rc = -1 (Internal error). Sep 16 22:19:44.855403 pkz208 CRIT syncd#syncd: [none] SAI_API_SWITCH:sai_driver_init:642 Error initializing driver, rc = -1. ... Sep 16 22:19:44.855891 pkz208 CRIT syncd#syncd: [none] SAI_API_SWITCH:brcm_sai_create_switch:1173 initializing SDK failed with error Operation failed (0xfffffff5). Reloading the BCM SDK kmods allows the switch init to continue properly. How I did it If BCM SDK kmods are loaded, unload and load them again on syncd docker start script. How to verify it Steps to reproduce: In SONiC, run 'docker ps' to see current running containers; 'syncd' should be present. Run 'docker stop syncd' Wait ~1 minute. Run 'docker ps' to see that syncd is missing. Check logs to see messages similar to the above. Signed-off-by: Michael Li --- files/scripts/syncd.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 From df4312f7ef4b8b808320be3df9c09c84b4a3e423 Mon Sep 17 00:00:00 2001 From: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com> Date: Wed, 30 Nov 2022 22:36:55 +0800 Subject: [PATCH 4/6] Support passing the instance numbers of a testplan. (#12879) Previously, we hard code the min and max numbers of instance in a plan. In this pr, we support passing the instance numbers of a testplan. Why I did it Previously, we hard code the min and max numbers of instance in a plan. In this pr, we support passing the instance numbers of a testplan. How I did it Use a variable to set the instance number. --- .../run-test-scheduler-template.yml | 6 ++--- azure-pipelines.yml | 27 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) 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/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 " From 7d38b459e4f822cfae48d75f94597ef6fa9efbc1 Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Thu, 1 Dec 2022 01:47:50 +0800 Subject: [PATCH 5/6] [Mellanox] Add device files for SN5600 (#12831) - Why I did it Add device files for new platform SN5600 - How I did it Add device files for new platform SN5600 - How to verify it Manual test --- .../ACS-SN5600/buffers.json.j2 | 1 + .../ACS-SN5600/buffers_defaults_objects.j2 | 1 + .../ACS-SN5600/buffers_defaults_t0.j2 | 128 ++ .../ACS-SN5600/buffers_defaults_t1.j2 | 128 ++ .../ACS-SN5600/buffers_dynamic.json.j2 | 1 + .../ACS-SN5600/hwsku.json | 199 +++ .../ACS-SN5600/pg_profile_lookup.ini | 42 + .../ACS-SN5600/port_config.ini | 82 + .../ACS-SN5600/qos.json.j2 | 1 + .../ACS-SN5600/sai.profile | 3 + .../ACS-SN5600/sai_5600.xml | 502 +++++++ .../x86_64-nvidia_sn5600-r0/default_sku | 1 + .../x86_64-nvidia_sn5600-r0/pcie.yaml | 146 ++ .../x86_64-nvidia_sn5600-r0/platform.json | 1313 +++++++++++++++++ .../x86_64-nvidia_sn5600-r0/platform_asic | 1 + .../platform_components.json | 15 + .../x86_64-nvidia_sn5600-r0/platform_reboot | 1 + .../x86_64-nvidia_sn5600-r0/platform_wait | 1 + .../x86_64-nvidia_sn5600-r0/plugins/eeprom.py | 1 + .../plugins/psuutil.py | 1 + .../plugins/sfplpmget.py | 1 + .../plugins/sfplpmset.py | 1 + .../plugins/sfpreset.py | 1 + .../plugins/sfputil.py | 1 + .../pmon_daemon_control.json | 1 + .../x86_64-nvidia_sn5600-r0/sensors.conf | 301 ++++ .../system_health_monitoring_config.json | 1 + .../thermal_policy.json | 1 + 28 files changed, 2876 insertions(+) create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers.json.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_objects.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t0.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_defaults_t1.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/buffers_dynamic.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/hwsku.json create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/pg_profile_lookup.ini create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/port_config.ini create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/qos.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai.profile create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/ACS-SN5600/sai_5600.xml create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/default_sku create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/pcie.yaml create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/platform.json create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/platform_asic create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/platform_components.json create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/platform_reboot create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/platform_wait create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/eeprom.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/psuutil.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmget.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfplpmset.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfpreset.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/plugins/sfputil.py create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/pmon_daemon_control.json create mode 100644 device/mellanox/x86_64-nvidia_sn5600-r0/sensors.conf create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/system_health_monitoring_config.json create mode 120000 device/mellanox/x86_64-nvidia_sn5600-r0/thermal_policy.json 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 From d22cf46cebf0f908cfc8a78b31ca7f143fb77d0e Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak <38952541+stepanblyschak@users.noreply.github.com> Date: Wed, 30 Nov 2022 19:49:34 +0200 Subject: [PATCH 6/6] [dockers] save extension dockers with an image tag (#12829) Fixes: #11521 - Why I did it When build SONiC dockers, SONiC build system tags all of them with latest tag. This is Ok for all built-in dockers because we will also tag them with image version tag in sonic_debian_extension.j2 script. On the other hand, some of these dockers are SONiC packages and they are installed by sonic-package-manager which creates a only one tag whcih is recorded in the corresponding .gz file. This leads to having these dockers tagged only with latest tag. This change saves the tag as an image version string in .gz file, so that these dockers have version identification in their tag. - How I did it I modified slave.mk to save the version tag instead of latest tag. - How to verify it I verified this change by running show version Signed-off-by: Stepan Blyschak --- slave.mk | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) 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