From 20cfff0abdad51f8a83c21f66f7ec512b2d4f8ce Mon Sep 17 00:00:00 2001 From: Chris <156943338+ccroy-arista@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:05:03 -0800 Subject: [PATCH 01/47] sonic-buildimage: ignore missing hwsku dict intfs (#20618) sonic-buildimage: ignore missing hwsku dict intfs --- src/sonic-config-engine/portconfig.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-config-engine/portconfig.py b/src/sonic-config-engine/portconfig.py index b2550b12125f..3d2bc55d0231 100644 --- a/src/sonic-config-engine/portconfig.py +++ b/src/sonic-config-engine/portconfig.py @@ -417,7 +417,7 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): for intf in port_dict[INTF_KEY]: if intf not in hwsku_dict[INTF_KEY]: - raise Exception("{} is not available in hwsku_dict".format(intf)) + continue # take default_brkout_mode from hwsku.json brkout_mode = hwsku_dict[INTF_KEY][intf][BRKOUT_MODE] From d742902835c8b4c63180dfb767acb200c440ee70 Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Wed, 12 Feb 2025 15:14:04 -0800 Subject: [PATCH 02/47] Checkout sonic-dash-api submodule when building sonic-mgmt docker images (#21714) Checkout sonic-dash-api submodule when building sonic-mgmt docker images --- .azure-pipelines/docker-sonic-mgmt-py3-only.yml | 2 +- .azure-pipelines/docker-sonic-mgmt.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml index 8019e957fdc3..04f34b251f57 100644 --- a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml +++ b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml @@ -40,7 +40,7 @@ stages: clean: true - bash: | set -xe - git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data + git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data src/sonic-dash-api make SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y configure PLATFORM=generic make -f Makefile.work BLDENV=bullseye SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y LEGACY_SONIC_MGMT_DOCKER=n target/docker-sonic-mgmt.gz diff --git a/.azure-pipelines/docker-sonic-mgmt.yml b/.azure-pipelines/docker-sonic-mgmt.yml index 924e4230df5a..77ebbef4b2a3 100644 --- a/.azure-pipelines/docker-sonic-mgmt.yml +++ b/.azure-pipelines/docker-sonic-mgmt.yml @@ -40,7 +40,7 @@ stages: clean: true - bash: | set -xe - git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data + git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data src/sonic-dash-api make SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y configure PLATFORM=generic make -f Makefile.work BLDENV=bullseye SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y LEGACY_SONIC_MGMT_DOCKER=y target/docker-sonic-mgmt.gz From 360d425bff0af951206d0f4474fc7def3aa8d728 Mon Sep 17 00:00:00 2001 From: Stephen Sun <5379172+stephenxs@users.noreply.github.com> Date: Thu, 13 Feb 2025 10:58:45 +0900 Subject: [PATCH 03/47] Support yang model for bulk size per prefix (#21266) Why I did it Support yang model for bulk size per counter HLD: sonic-net/SONiC#1864 --- .../tests_config/flex_counter.json | 1 + .../yang-models/sonic-flex_counter.yang | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/flex_counter.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/flex_counter.json index cd39cd899c78..666e74b00b0a 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/flex_counter.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/flex_counter.json @@ -163,6 +163,7 @@ "PORT": { "FLEX_COUNTER_STATUS": "enable", "BULK_CHUNK_SIZE": 100, + "BULK_CHUNK_SIZE_PER_PREFIX": "SAI_PORT_STAT_IF_OUT_QLEN:0;SAI_PORT_STAT_IF_IN_FEC:32", "POLL_INTERVAL": 1000 }, "PORT_BUFFER_DROP": { diff --git a/src/sonic-yang-models/yang-models/sonic-flex_counter.yang b/src/sonic-yang-models/yang-models/sonic-flex_counter.yang index 9f4a10feddba..2494fb5e164b 100644 --- a/src/sonic-yang-models/yang-models/sonic-flex_counter.yang +++ b/src/sonic-yang-models/yang-models/sonic-flex_counter.yang @@ -47,6 +47,11 @@ module sonic-flex_counter { } } + typedef bulk_chunk_size_per_prefix { + type string; + description "Bulk chunk size per counter name prefix"; + } + description "FLEX_COUNTER_TABLE part of config_db.json"; /* below are in alphabetical order */ @@ -111,6 +116,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container PG_WATERMARK { @@ -127,6 +135,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container PORT { @@ -143,6 +154,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container PORT_RATES { @@ -169,6 +183,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container QUEUE { @@ -185,6 +202,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container QUEUE_WATERMARK { @@ -201,6 +221,9 @@ module sonic-flex_counter { leaf BULK_CHUNK_SIZE { type bulk_chunk_size; } + leaf BULK_CHUNK_SIZE_PER_PREFIX { + type bulk_chunk_size_per_prefix; + } } container RIF { From 5e8e658ada2429dd0e4289957ad61985c380fc4a Mon Sep 17 00:00:00 2001 From: "Marty Y. Lok" <76118573+mlok-nokia@users.noreply.github.com> Date: Fri, 14 Feb 2025 14:44:00 -0500 Subject: [PATCH 04/47] [Nokia][chassis] Update Nokia-IXR7250E chassis device data (#21703) -- No need to remove /sys/firmware/efi/efivars/dump* in the platf_reboot since pstore has handled it in 202405 branch Signed-off-by: mlok --- device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot | 2 +- device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot index 454a14c5ab74..982ef42cfa50 100755 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot @@ -44,6 +44,6 @@ sleep 2 echo "w" > /dev/watchdog kick_date=`date -u` echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log -rm -f /sys/firmware/efi/efivars/dump-* +# rm -f /sys/firmware/efi/efivars/dump-* sync exec /sbin/reboot $@ diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot index dc4f934339c9..21e33c1fb92e 100755 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot @@ -33,7 +33,7 @@ sleep 2 echo "w" > /dev/watchdog kick_date=`date -u` echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log -rm -f /sys/firmware/efi/efivars/dump-* +# rm -f /sys/firmware/efi/efivars/dump-* echo "Shutdown midplane" ifconfig xe0 down sync From 0fa211d531766b953ce280d21c56075f7b2a85b4 Mon Sep 17 00:00:00 2001 From: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:10:24 +0800 Subject: [PATCH 05/47] Fix ssh too open permission issue in sonic-mgmt image (#21184) Why I did it Previously, the sonic-mgmt image encountered an issue where the SSH configuration was overly permissive, preventing the Docker container from starting successfully. The error message is provided below. This PR addresses and resolves the issue. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_rsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_ecdsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_ed25519_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. sshd: no hostkeys available -- exiting. ERROR: failed to start SSH service Work item tracking Microsoft ADO (number only): How I did it Add a step to reset permissions under the specific folder as #20346, which faced the same issue. How to verify it I tested in my local environment, and it could successfully start the docker. => [22/22] RUN if ! pip3 list | grep -c pytest >/dev/null && [ 'yutongzhang' != 'AzDevOps' ] && [ -d /var/AzDevOps/env-python3 ]; then /bin/bash -c 1.3s => exporting to image 12.1s => => exporting layers 12.0s => => writing image sha256:e3ed99ef8778d8e3aa50b1123b57747043d18982b7c34149f8ff304a996fedc9 0.0s => => naming to docker.io/library/docker-sonic-mgmt-yutongzhang:master 0.0s INFO: cleanup a temporary dir: /tmp/tmp.SUbOp2b2x2 INFO: creating a container: yutong_test ... 8e909a891449ac957c099d09fba146dc84128248aa242757edaa8a5098e272dd * Restarting OpenBSD Secure Shell server sshd ...done. INFO: verifying UID and GID in container matches host ****************************************************************************** EXEC: docker exec --user yutongzhang -ti yutong_test bash SSH: ssh -i ~/.ssh/id_rsa_docker_sonic_mgmt yutongzhang@172.17.0.2 ****************************************************************************** INFO: sonic-mgmt configuration is done! --- .azure-pipelines/docker-sonic-mgmt.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azure-pipelines/docker-sonic-mgmt.yml b/.azure-pipelines/docker-sonic-mgmt.yml index 77ebbef4b2a3..dd48720a1fe5 100644 --- a/.azure-pipelines/docker-sonic-mgmt.yml +++ b/.azure-pipelines/docker-sonic-mgmt.yml @@ -38,6 +38,11 @@ stages: - template: cleanup.yml - checkout: self clean: true + - script: | + set -x + sudo setfacl -R -b $(Agent.BuildDirectory) + displayName: 'setfacl' + - bash: | set -xe git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data src/sonic-dash-api From bd4a27d87705d4cce18fce3bac7cba488f373dd9 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Tue, 18 Feb 2025 08:55:04 +0800 Subject: [PATCH 06/47] [build] Fix debian mirror snapshot timestamp not work issue. (#21758) Why I did it Recently microsoft owned debian mirror has an issue. It is using the latest timestamp '20250216'. And this snapshot is a bad snapshot. Bydesign we should use timestamp '20250130', which passed PR validation. Get:18 http://packages.trafficmanager.net/snapshot/debian-security/20250216T001420Z bullseye-security/non-free amd64 Packages [1164 B] Get:19 http://packages.trafficmanager.net/snapshot/debian-security/20250216T001420Z bullseye-security/main amd64 Packages [346 kB] Fetched 17.9 MB in 5s (3789 kB/s) Reading package lists... E: Failed to fetch http://packages.trafficmanager.net/snapshot/debian-security/20250216T001420Z/dists/bullseye-security/main/source/Sources.xz File has unexpected size (234932 != 234820). Mirror sync in progress? [IP: 13.107.246.71 80] Hashes of expected file: - Filesize:234820 [weak] - SHA256:99cbb6795504058c2b3b2355ad128d8ca7879c136ba8fc00f2813ea4d5e7d147 Release file created at: Sat, 15 Feb 2025 17:04:32 +0000 E: Some index files failed to download. They have been ignored, or old ones used instead. By design, we should use timestamp in https://github.com/sonic-net/sonic-buildimage/blob/master/files/build/versions/default/versions-mirror How I did it Fix debian mirror snapshot timestamp generate script. --- scripts/build_mirror_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_mirror_config.sh b/scripts/build_mirror_config.sh index be67052ced4c..e7b9182fe955 100755 --- a/scripts/build_mirror_config.sh +++ b/scripts/build_mirror_config.sh @@ -11,7 +11,7 @@ export APT_RETRIES_COUNT DEFAULT_MIRROR_URL_PREFIX=http://packages.trafficmanager.net MIRROR_VERSION_FILE= -[[ "$SONIC_VERSION_CONTROL_COMPONENTS" == *deb* || $SONIC_VERSION_CONTROL_COMPONENTS == *all* ]] && MIRROR_VERSION_FILE=files/build/versions/default/versions-mirror +[[ "$MIRROR_SNAPSHOT" == "y" ]] && MIRROR_VERSION_FILE=files/build/versions/default/versions-mirror [ -f target/versions/default/versions-mirror ] && MIRROR_VERSION_FILE=target/versions/default/versions-mirror # The default mirror urls From 9d04b753cf9499581e8b802ca668142789859442 Mon Sep 17 00:00:00 2001 From: zitingguo-ms Date: Tue, 18 Feb 2025 15:36:14 +0800 Subject: [PATCH 07/47] Patch saibcm-module from SAI 12.3 and upgrade xgs SAI to 12.3.2.2 (#21745) Why I did it Update xgs SAI to 12.3.2.2 to include following fixes: 12.3.1.2: [SAI_BRANCH rel_ocp_sai_12_3] Uplift SID KB 26755 (SDK-417338) fix to 12.3. 12.3.2.2: [CS00012377372]Enable FEC specific counters by default if FEC is enabled Work item tracking Microsoft ADO (number only): 31380871 How I did it Update xgs SAI version and patch saibcm-module. How to verify it --- platform/broadcom/sai.mk | 2 +- .../sdklt/linux/bcmgenl/bcmgenl_psample.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/platform/broadcom/sai.mk b/platform/broadcom/sai.mk index e41da94cdf1c..326f481e3a25 100644 --- a/platform/broadcom/sai.mk +++ b/platform/broadcom/sai.mk @@ -1,4 +1,4 @@ -LIBSAIBCM_XGS_VERSION = 12.3.0.3 +LIBSAIBCM_XGS_VERSION = 12.3.2.2 LIBSAIBCM_DNX_VERSION = 11.2.13.1-1 LIBSAIBCM_XGS_BRANCH_NAME = SAI_12.3.0_GA LIBSAIBCM_DNX_BRANCH_NAME = SAI_11.2.0_GA diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bcmgenl/bcmgenl_psample.c b/platform/broadcom/saibcm-modules/sdklt/linux/bcmgenl/bcmgenl_psample.c index bf5ff9a4f4a5..f7d9860a2f83 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bcmgenl/bcmgenl_psample.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bcmgenl/bcmgenl_psample.c @@ -67,7 +67,15 @@ static int bcmgenl_psample_qlen = BCMGENL_PSAMPLE_QLEN_DFLT; MODULE_PARAM(bcmgenl_psample_qlen, int, 0); MODULE_PARM_DESC(bcmgenl_psample_qlen, "psample queue length (default 1024 buffers)"); +#ifndef BCMGENL_PSAMPLE_METADATA #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,13,0)) +#define BCMGENL_PSAMPLE_METADATA 1 +#else +#define BCMGENL_PSAMPLE_METADATA 0 +#endif +#endif + +#if BCMGENL_PSAMPLE_METADATA static inline void bcmgenl_sample_packet(struct psample_group *group, struct sk_buff *skb, u32 trunc_size, int in_ifindex, int out_ifindex, @@ -82,7 +90,7 @@ bcmgenl_sample_packet(struct psample_group *group, struct sk_buff *skb, } #else #define bcmgenl_sample_packet psample_sample_packet -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(5,13,0)) */ +#endif /* BCMGENL_PSAMPLE_METADATA */ static bcmgenl_info_t g_bcmgenl_psample_info = {{0}}; From a7eb965c8549751582ba6219990a101325793e5a Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:50:23 +0800 Subject: [PATCH 08/47] [Mellanox] set temperature file value to 0 when module is not present (#21744) - Why I did it Nvidia thermal control service requires to set temperature file value to 0 when module is not present - How I did it Set temperature file value to 0 when module is not present - How to verify it Additional unit test Manual test to check when module is present and not present. This is not covered on the sonic-mgmt testbed. --- .../sonic_platform/thermal_updater.py | 14 ++++++++++++-- .../tests/test_thermal_updater.py | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/thermal_updater.py b/platform/mellanox/mlnx-platform-api/sonic_platform/thermal_updater.py index 889bc96d3bec..e07e4cb2564f 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/thermal_updater.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/thermal_updater.py @@ -1,5 +1,6 @@ # -# Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +# Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -142,7 +143,16 @@ def update_single_module(self, sfp): ) else: if pre_presence != presence: - hw_management_independent_mode_update.thermal_data_clean_module(0, sfp.sdk_index + 1) + # thermal control service requires to + # set value 0 to all temperature files when module is not present + hw_management_independent_mode_update.thermal_data_set_module( + 0, # ASIC index always 0 for now + sfp.sdk_index + 1, + 0, + 0, + 0, + 0 + ) if pre_presence != presence: self._sfp_status[sfp.sdk_index] = presence diff --git a/platform/mellanox/mlnx-platform-api/tests/test_thermal_updater.py b/platform/mellanox/mlnx-platform-api/tests/test_thermal_updater.py index c135395c363b..1d6f523782ae 100644 --- a/platform/mellanox/mlnx-platform-api/tests/test_thermal_updater.py +++ b/platform/mellanox/mlnx-platform-api/tests/test_thermal_updater.py @@ -1,5 +1,6 @@ # -# Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +# Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -107,5 +108,6 @@ def test_update_module(self): hw_management_independent_mode_update.thermal_data_set_module.assert_called_once_with(0, 11, 0, 0, 0, 0) mock_sfp.get_presence = mock.MagicMock(return_value=False) + hw_management_independent_mode_update.reset_mock() updater.update_module() - hw_management_independent_mode_update.thermal_data_clean_module.assert_called_once_with(0, 11) + hw_management_independent_mode_update.thermal_data_set_module.assert_called_once_with(0, 11, 0, 0, 0, 0) From 577a1f4f52c2ce4773e0a58470def2272cb2cc2e Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:01:43 +0800 Subject: [PATCH 09/47] [submodule] Update submodule sonic-stp to the latest HEAD automatically (#21743) #### Why I did it src/sonic-stp ``` * 29eb387 - (HEAD -> master, origin/master, origin/HEAD) Fixing compilaion error for marvell_armhf (#47) (9 hours ago) [Divya Kumaran Chandralekha] * b7da558 - Merge pull request #44 from wajahatrazi/stp_co_pr (3 days ago) [Divya Kumaran Chandralekha] |\ | failure_prs.log skip_prs.log 47e1e77 - Merge branch 'master' into stp_co_pr (3 days ago) [Divya Kumaran Chandralekha] | |\ | |/ |/| * | 6e4a94f - Merge pull request #46 from divyachandralekha/pvst_pr_1 (4 days ago) [Divya Kumaran Chandralekha] |\ \ | failure_prs.log skip_prs.log | aa5e824 - libevent explicit building dependency removed (4 days ago) [Divya Chandralekha] |/ / * | 9345e5a - Merge pull request #43 from omaaartamer/fix/alignment-warnings (5 days ago) [Divya Kumaran Chandralekha] * | eedb772 - [stp] Add memory alignment padding to structures (9 weeks ago) [omaaartamer] * | 128e53d - fix: resolve STP alignment warnings (9 weeks ago) [omaaartamer] / * 30febfa - Fixing changes in the code (9 weeks ago) [Wajahat Razi] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-stp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-stp b/src/sonic-stp index ea85d654d23f..29eb3877f146 160000 --- a/src/sonic-stp +++ b/src/sonic-stp @@ -1 +1 @@ -Subproject commit ea85d654d23f17a6b628f70adf7ae27ff772dae1 +Subproject commit 29eb3877f146864ab78d1deffb7317348823cb94 From e02dc1529685b1d4b6306f90220e0c18d54fe560 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:01:51 +0800 Subject: [PATCH 10/47] [submodule] Update submodule sonic-platform-daemons to the latest HEAD automatically (#21731) #### Why I did it src/sonic-platform-daemons ``` * 29e65fe - (HEAD -> master, origin/master, origin/HEAD) thermalctld: Ignore exception when deleting chassisdb entry fails (#585) (5 days ago) [Patrick MacArthur] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-platform-daemons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index a2c4bc9265fb..29e65fe7f6d7 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit a2c4bc9265fb89c43bca9fe699a42295efcbee2c +Subproject commit 29e65fe7f6d736841bb140150adea03a3e125132 From b6728fbbeb400f423355c0ca9ebe133fcf7f3a9d Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:01:56 +0800 Subject: [PATCH 11/47] [submodule] Update submodule sonic-mgmt-framework to the latest HEAD automatically (#21730) #### Why I did it src/sonic-mgmt-framework ``` * d65ce7c - (HEAD -> master, origin/master, origin/HEAD) azure-pipelines.yml: use pipeline name instead of id (5 days ago) [Sachin Holla] * a7dc88a - Install sonic yangs during pipeline build (5 days ago) [Sachin Holla] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-mgmt-framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-mgmt-framework b/src/sonic-mgmt-framework index 2248203a4769..d65ce7c004c0 160000 --- a/src/sonic-mgmt-framework +++ b/src/sonic-mgmt-framework @@ -1 +1 @@ -Subproject commit 2248203a47698c7598b6d745f6a1ca27813b4327 +Subproject commit d65ce7c004c0d54a6a2630e29d8cefef7437ae76 From d6e0b97841043465b322d73e8ac1d91079788397 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:02:00 +0800 Subject: [PATCH 12/47] [submodule] Update submodule sonic-host-services to the latest HEAD automatically (#21565) #### Why I did it src/sonic-host-services ``` * 69788c2 - (HEAD -> master, origin/master, origin/HEAD) Fix: Set default values for kdump enhancement (#217) (3 days ago) [Muhammad Ali Hussnain] * d7e8021 - [chassis] make multi_asic_ns_to_host_fwd False for EXTERNAL_CLIENT acl service (#218) (4 days ago) [Arvindsrinivasan Lakshmi Narasimhan] * d925457 - Fix sudo command failed because root user password expired by password hardening feature issue (#215) (4 days ago) [Hua Liu] * 7e1b280 - reverted ssh_key to ssh_string (#216) (6 days ago) [Muhammad Ali Hussnain] * 741a9df - Handle NotImplementedError in determine-reboot-cause that will be thrown on VS Chassis platform (#211) (7 days ago) [Changrong Wu] * 47f6feb - check sonic-installer message and return proper error code for when image doesn't exist. (#210) (7 days ago) [Dawei Huang] * 1fe9a76 - Updated Key and Path (#209) (7 days ago) [Muhammad Ali Hussnain] * bb0a31c - Adding support for persistent storage and retrieval of DPU reboot-cause (#169) (8 days ago) [rameshraghupathy] * 5e08927 - [hostcfgd] Fix the state machine during eth0 default route check failure (#196) (2 weeks ago) [Vivek] * d2cc1a8 - Add ImageService.set_next_boot for GNOI Activate OS. (#207) (3 weeks ago) [Dawei Huang] * 9c49913 - register image_service and docker_service. (#208) (3 weeks ago) [Dawei Huang] * d88d8d0 - Implementation for ImageService.List (#206) (4 weeks ago) [Dawei Huang] * d7e4df5 - Enabled configuring the default number of kdumps in Linux. (#202) (4 weeks ago) [Mridul Bajpai] * ca9d329 - kdump-remote feature in hostcfgd (#166) (4 weeks ago) [Muhammad Ali Hussnain] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-host-services | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-host-services b/src/sonic-host-services index 0430ada2e369..69788c2a12fa 160000 --- a/src/sonic-host-services +++ b/src/sonic-host-services @@ -1 +1 @@ -Subproject commit 0430ada2e369491a560538a10823a3da25401074 +Subproject commit 69788c2a12fa2814ed56c46a1f1aaab09b1d309b From f61e1043dbe972980c660c49d9521cb553cd4b18 Mon Sep 17 00:00:00 2001 From: DavidZagury <32644413+DavidZagury@users.noreply.github.com> Date: Tue, 18 Feb 2025 22:05:09 +0200 Subject: [PATCH 13/47] [Mellanox] Update SDK/FW Version to 4.7.2202/2014.2202 (#21759) - Why I did it Update SDK/FW to 4.7.2202/2014.2202 - How I did it Updating Makefiles - How to verify it Running sonic-mgmt tests --- platform/mellanox/fw.mk | 10 +++++----- platform/mellanox/sdk.mk | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index c1774f55aed0..86b91aa73198 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -25,29 +25,29 @@ SIMX_VERSION = 25.1-1070 FW_FROM_URL = y -MLNX_FW_ASSETS_RELEASE_TAG = fw-2014.2164 +MLNX_FW_ASSETS_RELEASE_TAG = fw-2014.2202 MLNX_FW_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_FW_ASSETS_RELEASE_TAG) ifeq ($(MLNX_FW_BASE_URL), ) MLNX_FW_BASE_URL = $(MLNX_FW_ASSETS_URL) endif -MLNX_SPC_FW_VERSION = 13.2014.2164 +MLNX_SPC_FW_VERSION = 13.2014.2202 MLNX_SPC_FW_FILE = fw-SPC-rel-$(subst .,_,$(MLNX_SPC_FW_VERSION))-EVB.mfa $(MLNX_SPC_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC_FW_FILE) -MLNX_SPC2_FW_VERSION = 29.2014.2164 +MLNX_SPC2_FW_VERSION = 29.2014.2202 MLNX_SPC2_FW_FILE = fw-SPC2-rel-$(subst .,_,$(MLNX_SPC2_FW_VERSION))-EVB.mfa $(MLNX_SPC2_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC2_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC2_FW_FILE) -MLNX_SPC3_FW_VERSION = 30.2014.2164 +MLNX_SPC3_FW_VERSION = 30.2014.2202 MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) -MLNX_SPC4_FW_VERSION = 34.2014.2164 +MLNX_SPC4_FW_VERSION = 34.2014.2202 MLNX_SPC4_FW_FILE = fw-SPC4-rel-$(subst .,_,$(MLNX_SPC4_FW_VERSION))-EVB.mfa $(MLNX_SPC4_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC4_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC4_FW_FILE) diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 5119ef977949..222ccc8b97f3 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -MLNX_SDK_VERSION = 4.7.2164 +MLNX_SDK_VERSION = 4.7.2202 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DRIVERS_GITHUB_URL = https://github.com/Mellanox/Spectrum-SDK-Drivers From 9365cf89b68fe4e60784b9b9c008d8532f13fb9c Mon Sep 17 00:00:00 2001 From: Vineet Mittal <46945843+vmittal-msft@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:02:28 -0800 Subject: [PATCH 14/47] Updated PG flow control threshold based on port speed and not hwsku (#21733) Why I did it To update PG flow control threshold alpha value based on port speed. Current assumption was based on hwsku. Work item tracking Microsoft ADO (31374200): How I did it Updated pg_profile.ini for various HW SKUs based on BRCM j2/j2c+ chip --- .../pg_profile_lookup.ini | 10 +++++----- .../pg_profile_lookup.ini | 10 +++++----- .../0/pg_profile_lookup.ini | 10 +++++----- .../1/pg_profile_lookup.ini | 10 +++++----- .../0/pg_profile_lookup.ini | 10 +++++----- .../1/pg_profile_lookup.ini | 10 +++++----- .../0/pg_profile_lookup.ini | 20 +++++++++---------- .../1/pg_profile_lookup.ini | 20 +++++++++---------- .../0/pg_profile_lookup.ini | 10 +++++----- .../1/pg_profile_lookup.ini | 10 +++++----- .../0/pg_profile_lookup.ini | 20 +++++++++---------- .../1/pg_profile_lookup.ini | 20 +++++++++---------- 12 files changed, 80 insertions(+), 80 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3_48cqm2_lc/Arista-7800R3-48CQM2-C48/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3_48cqm2_lc/Arista-7800R3-48CQM2-C48/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3_48cqm2_lc/Arista-7800R3-48CQM2-C48/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3_48cqm2_lc/Arista-7800R3-48CQM2-C48/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/pg_profile_lookup.ini index 99fbd830e291..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 40000 300m 0 2560 69632 -5 181753 - 100000 300m 0 2560 110592 -5 363506 + 40000 300m 0 2560 69632 -6 181753 + 100000 300m 0 2560 110592 -6 363506 400000 300m 0 2560 315392 -5 1454025 - 40000 1000m 0 2560 114688 -5 181753 - 100000 1000m 0 2560 225280 -5 363506 + 40000 1000m 0 2560 114688 -6 181753 + 100000 1000m 0 2560 225280 -6 363506 400000 1000m 0 2560 778240 -5 1454025 - 40000 2000m 0 2560 184320 -5 181753 - 100000 2000m 0 2560 393216 -5 363506 + 40000 2000m 0 2560 184320 -6 181753 + 100000 2000m 0 2560 393216 -6 363506 400000 2000m 0 2560 1445888 -5 1454025 - 40000 80000m 0 2560 5369856 -5 181753 - 100000 80000m 0 2560 13357056 -5 363506 + 40000 80000m 0 2560 5369856 -6 181753 + 100000 80000m 0 2560 13357056 -6 363506 400000 80000m 0 2560 53305344 -5 1454025 - 40000 120000m 0 2560 8028160 -5 181753 - 100000 120000m 0 2560 20004864 -5 363506 + 40000 120000m 0 2560 8028160 -6 181753 + 100000 120000m 0 2560 20004864 -6 363506 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/pg_profile_lookup.ini index 99fbd830e291..ba784705e06e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 40000 300m 0 2560 69632 -5 181753 - 100000 300m 0 2560 110592 -5 363506 + 40000 300m 0 2560 69632 -6 181753 + 100000 300m 0 2560 110592 -6 363506 400000 300m 0 2560 315392 -5 1454025 - 40000 1000m 0 2560 114688 -5 181753 - 100000 1000m 0 2560 225280 -5 363506 + 40000 1000m 0 2560 114688 -6 181753 + 100000 1000m 0 2560 225280 -6 363506 400000 1000m 0 2560 778240 -5 1454025 - 40000 2000m 0 2560 184320 -5 181753 - 100000 2000m 0 2560 393216 -5 363506 + 40000 2000m 0 2560 184320 -6 181753 + 100000 2000m 0 2560 393216 -6 363506 400000 2000m 0 2560 1445888 -5 1454025 - 40000 80000m 0 2560 5369856 -5 181753 - 100000 80000m 0 2560 13357056 -5 363506 + 40000 80000m 0 2560 5369856 -6 181753 + 100000 80000m 0 2560 13357056 -6 363506 400000 80000m 0 2560 53305344 -5 1454025 - 40000 120000m 0 2560 8028160 -5 181753 - 100000 120000m 0 2560 20004864 -5 363506 + 40000 120000m 0 2560 8028160 -6 181753 + 100000 120000m 0 2560 20004864 -6 363506 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/pg_profile_lookup.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/pg_profile_lookup.ini index 5670401e02f1..ba784705e06e 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/pg_profile_lookup.ini +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/pg_profile_lookup.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/pg_profile_lookup.ini index b1dd17d9dab9..95e1af1e13e7 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/pg_profile_lookup.ini +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/pg_profile_lookup.ini @@ -2,16 +2,16 @@ # speed cable size xon xoff threshold xon_offset 40000 300m 0 2560 69632 -6 181753 100000 300m 0 2560 110592 -6 363506 - 400000 300m 0 2560 315392 -6 1454025 + 400000 300m 0 2560 315392 -5 1454025 40000 1000m 0 2560 114688 -6 181753 100000 1000m 0 2560 225280 -6 363506 - 400000 1000m 0 2560 778240 -6 1454025 + 400000 1000m 0 2560 778240 -5 1454025 40000 2000m 0 2560 184320 -6 181753 100000 2000m 0 2560 393216 -6 363506 - 400000 2000m 0 2560 1445888 -6 1454025 + 400000 2000m 0 2560 1445888 -5 1454025 40000 80000m 0 2560 5369856 -6 181753 100000 80000m 0 2560 13357056 -6 363506 - 400000 80000m 0 2560 53305344 -6 1454025 + 400000 80000m 0 2560 53305344 -5 1454025 40000 120000m 0 2560 8028160 -6 181753 100000 120000m 0 2560 20004864 -6 363506 - 400000 120000m 0 2560 79900672 -6 1454025 + 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/pg_profile_lookup.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/pg_profile_lookup.ini index 99fbd830e291..ba784705e06e 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/pg_profile_lookup.ini +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 40000 300m 0 2560 69632 -5 181753 - 100000 300m 0 2560 110592 -5 363506 + 40000 300m 0 2560 69632 -6 181753 + 100000 300m 0 2560 110592 -6 363506 400000 300m 0 2560 315392 -5 1454025 - 40000 1000m 0 2560 114688 -5 181753 - 100000 1000m 0 2560 225280 -5 363506 + 40000 1000m 0 2560 114688 -6 181753 + 100000 1000m 0 2560 225280 -6 363506 400000 1000m 0 2560 778240 -5 1454025 - 40000 2000m 0 2560 184320 -5 181753 - 100000 2000m 0 2560 393216 -5 363506 + 40000 2000m 0 2560 184320 -6 181753 + 100000 2000m 0 2560 393216 -6 363506 400000 2000m 0 2560 1445888 -5 1454025 - 40000 80000m 0 2560 5369856 -5 181753 - 100000 80000m 0 2560 13357056 -5 363506 + 40000 80000m 0 2560 5369856 -6 181753 + 100000 80000m 0 2560 13357056 -6 363506 400000 80000m 0 2560 53305344 -5 1454025 - 40000 120000m 0 2560 8028160 -5 181753 - 100000 120000m 0 2560 20004864 -5 363506 + 40000 120000m 0 2560 8028160 -6 181753 + 100000 120000m 0 2560 20004864 -6 363506 400000 120000m 0 2560 79900672 -5 1454025 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/pg_profile_lookup.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/pg_profile_lookup.ini index 99fbd830e291..ba784705e06e 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/pg_profile_lookup.ini +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 40000 300m 0 2560 69632 -5 181753 - 100000 300m 0 2560 110592 -5 363506 + 40000 300m 0 2560 69632 -6 181753 + 100000 300m 0 2560 110592 -6 363506 400000 300m 0 2560 315392 -5 1454025 - 40000 1000m 0 2560 114688 -5 181753 - 100000 1000m 0 2560 225280 -5 363506 + 40000 1000m 0 2560 114688 -6 181753 + 100000 1000m 0 2560 225280 -6 363506 400000 1000m 0 2560 778240 -5 1454025 - 40000 2000m 0 2560 184320 -5 181753 - 100000 2000m 0 2560 393216 -5 363506 + 40000 2000m 0 2560 184320 -6 181753 + 100000 2000m 0 2560 393216 -6 363506 400000 2000m 0 2560 1445888 -5 1454025 - 40000 80000m 0 2560 5369856 -5 181753 - 100000 80000m 0 2560 13357056 -5 363506 + 40000 80000m 0 2560 5369856 -6 181753 + 100000 80000m 0 2560 13357056 -6 363506 400000 80000m 0 2560 53305344 -5 1454025 - 40000 120000m 0 2560 8028160 -5 181753 - 100000 120000m 0 2560 20004864 -5 363506 + 40000 120000m 0 2560 8028160 -6 181753 + 100000 120000m 0 2560 20004864 -6 363506 400000 120000m 0 2560 79900672 -5 1454025 From f3c013ae1f21eb3e1f44e4b6f93dad58eaf5a9e7 Mon Sep 17 00:00:00 2001 From: zitingguo-ms Date: Wed, 19 Feb 2025 12:26:20 +0800 Subject: [PATCH 15/47] [Broadcom] Fix syncd crash issue and upgrade xgs SAI to 12.3.2.2 (#21746) Why I did it Fix #21680 Work item tracking Microsoft ADO (number only): 31426582 How I did it Re-compile SAI 12.3 with SAI header from https://github.com/opencomputeproject/SAI/tree/054085547c2042b95ab0fa1a75a44da3288b26bf How to verify it Load image on a DUT, all dockers are up and running. --- platform/broadcom/sai.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/broadcom/sai.mk b/platform/broadcom/sai.mk index 326f481e3a25..77c58a3588a8 100644 --- a/platform/broadcom/sai.mk +++ b/platform/broadcom/sai.mk @@ -1,6 +1,6 @@ LIBSAIBCM_XGS_VERSION = 12.3.2.2 LIBSAIBCM_DNX_VERSION = 11.2.13.1-1 -LIBSAIBCM_XGS_BRANCH_NAME = SAI_12.3.0_GA +LIBSAIBCM_XGS_BRANCH_NAME = SAI_12.3.0_master LIBSAIBCM_DNX_BRANCH_NAME = SAI_11.2.0_GA LIBSAIBCM_XGS_URL_PREFIX = "https://sonicstorage.blob.core.windows.net/public/sai/sai-broadcom/$(LIBSAIBCM_XGS_BRANCH_NAME)/$(LIBSAIBCM_XGS_VERSION)/xgs" LIBSAIBCM_DNX_URL_PREFIX = "https://sonicstorage.blob.core.windows.net/public/sai/sai-broadcom/$(LIBSAIBCM_DNX_BRANCH_NAME)/$(LIBSAIBCM_DNX_VERSION)/dnx" From d6dba9138915f83b3cb0678876c77db97b33abe8 Mon Sep 17 00:00:00 2001 From: Noa Or <58519608+noaOrMlnx@users.noreply.github.com> Date: Wed, 19 Feb 2025 08:38:46 +0200 Subject: [PATCH 16/47] [Mellanox] Add SPC5 SN5640 platform, Mellanox-SN5640-C512S2,Mellanox-SN5640-C448O16 SKUs (#21770) - Why I did it To support new Mellanox platform and SKUs - How I did it Add and modified relevant files to support new platform and SKUs - How to verify it Install supporting image on SN5640 Mellanox switch, deploy one of the SKUs --- .../Mellanox-SN5640-C448O16/buffers.json.j2 | 1 + .../buffers_defaults_objects.j2 | 1 + .../buffers_defaults_t0.j2 | 54 + .../buffers_defaults_t1.j2 | 54 + .../buffers_dynamic.json.j2 | 1 + .../create_only_config_db_buffers.json | 7 + .../Mellanox-SN5640-C448O16/hwsku.json | 2330 +++++++++++++++ .../media_settings.json | 1 + .../optics_si_settings.json | 1 + .../pg_profile_lookup.ini | 55 + .../pmon_daemon_control.json | 6 + .../Mellanox-SN5640-C448O16/port_config.ini | 485 ++++ .../Mellanox-SN5640-C448O16/qos.json.j2 | 1 + .../Mellanox-SN5640-C448O16/sai.profile | 4 + .../sai_5640_448x100g_16x400g.xml | 631 ++++ .../Mellanox-SN5640-C512S2/buffers.json.j2 | 1 + .../buffers_defaults_objects.j2 | 1 + .../buffers_defaults_t0.j2 | 54 + .../buffers_defaults_t1.j2 | 54 + .../buffers_dynamic.json.j2 | 1 + .../create_only_config_db_buffers.json | 7 + .../Mellanox-SN5640-C512S2/hwsku.json | 2570 +++++++++++++++++ .../media_settings.json | 1 + .../optics_si_settings.json | 1 + .../pg_profile_lookup.ini | 55 + .../pmon_daemon_control.json | 6 + .../Mellanox-SN5640-C512S2/port_config.ini | 533 ++++ .../Mellanox-SN5640-C512S2/qos.json.j2 | 1 + .../Mellanox-SN5640-C512S2/sai.profile | 4 + .../sai_5640_512x100g.xml | 632 ++++ .../x86_64-nvidia_sn5640-r0/default_sku | 1 + .../x86_64-nvidia_sn5640-r0/installer.conf | 1 + .../x86_64-nvidia_sn5640-r0/pcie.yaml | 188 ++ .../x86_64-nvidia_sn5640-r0/platform.json | 1344 +++++++++ .../x86_64-nvidia_sn5640-r0/platform_asic | 1 + .../platform_components.json | 15 + .../x86_64-nvidia_sn5640-r0/platform_wait | 1 + .../pmon_daemon_control.json | 6 + .../pmon_immediate_start | 0 .../x86_64-nvidia_sn5640-r0/pre_reboot_hook | 1 + .../x86_64-nvidia_sn5640-r0/psu_sensors.json | 1 + .../psu_sensors_conf_updater | 1 + .../x86_64-nvidia_sn5640-r0/sensors.conf | 494 ++++ .../system_health_monitoring_config.json | 1 + .../thermal_policy.json | 1 + platform/mellanox/asic_table.j2 | 4 +- .../sonic_platform/device_data.py | 16 +- 47 files changed, 9625 insertions(+), 4 deletions(-) create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers.json.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_objects.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t0.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t1.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_dynamic.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/create_only_config_db_buffers.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/hwsku.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/media_settings.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/optics_si_settings.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pg_profile_lookup.ini create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pmon_daemon_control.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/port_config.ini create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/qos.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai.profile create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai_5640_448x100g_16x400g.xml create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers.json.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_objects.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t0.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t1.j2 create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_dynamic.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/create_only_config_db_buffers.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/hwsku.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/media_settings.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/optics_si_settings.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pg_profile_lookup.ini create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pmon_daemon_control.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/port_config.ini create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/qos.json.j2 create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai.profile create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai_5640_512x100g.xml create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/default_sku create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/installer.conf create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/pcie.yaml create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/platform.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/platform_asic create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/platform_components.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/platform_wait create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/pmon_daemon_control.json create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/pmon_immediate_start create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/pre_reboot_hook create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors_conf_updater create mode 100644 device/mellanox/x86_64-nvidia_sn5640-r0/sensors.conf create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/system_health_monitoring_config.json create mode 120000 device/mellanox/x86_64-nvidia_sn5640-r0/thermal_policy.json diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers.json.j2 new file mode 120000 index 000000000000..add8bf8bb7c2 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/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_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_objects.j2 new file mode 120000 index 000000000000..e404fb0aae10 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_objects.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t0.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..b88ff8ca20ab --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t0.j2 @@ -0,0 +1,54 @@ +{# + SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES + Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + 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 = '0m' %} +{%-set ports2cable = { + 'torrouter_server' : '0m', + 'leafrouter_torrouter' : '0m', + 'spinerouter_leafrouter' : '0m' + } +-%} +{% set ingress_lossless_pool_size = '108270592' %} +{% set ingress_lossless_pool_xoff = '0' %} +{% set egress_lossless_pool_size = '136209408' %} +{% set egress_lossy_pool_size = '108270592' %} + +{% import 'buffers_defaults_objects.j2' as defs with context %} + +{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %} +{{ defs.generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_profile_lists_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_profile_lists(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_extra_lossless_queues_with_inactive_ports(port_names_active, port_names_extra_queues, port_names_inactive) %} +{{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names_active, port_names_extra_queues, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_queue_buffers(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_extra_lossless_pgs_with_inactive_ports(port_names_active, port_names_extra_pgs, port_names_inactive) %} +{{ defs.generate_pg_profiles_with_extra_lossless_pgs(port_names_active, port_names_extra_pgs, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_pg_profiles(port_names_active, port_names_inactive) }} +{%- endmacro %} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t1.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..b88ff8ca20ab --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_defaults_t1.j2 @@ -0,0 +1,54 @@ +{# + SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES + Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + 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 = '0m' %} +{%-set ports2cable = { + 'torrouter_server' : '0m', + 'leafrouter_torrouter' : '0m', + 'spinerouter_leafrouter' : '0m' + } +-%} +{% set ingress_lossless_pool_size = '108270592' %} +{% set ingress_lossless_pool_xoff = '0' %} +{% set egress_lossless_pool_size = '136209408' %} +{% set egress_lossy_pool_size = '108270592' %} + +{% import 'buffers_defaults_objects.j2' as defs with context %} + +{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %} +{{ defs.generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_profile_lists_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_profile_lists(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_extra_lossless_queues_with_inactive_ports(port_names_active, port_names_extra_queues, port_names_inactive) %} +{{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names_active, port_names_extra_queues, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_queue_buffers(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_extra_lossless_pgs_with_inactive_ports(port_names_active, port_names_extra_pgs, port_names_inactive) %} +{{ defs.generate_pg_profiles_with_extra_lossless_pgs(port_names_active, port_names_extra_pgs, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_pg_profiles(port_names_active, port_names_inactive) }} +{%- endmacro %} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_dynamic.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/buffers_dynamic.json.j2 new file mode 120000 index 000000000000..8c4117c66214 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/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_sn5640-r0/Mellanox-SN5640-C448O16/create_only_config_db_buffers.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/create_only_config_db_buffers.json new file mode 100644 index 000000000000..6feb156714fe --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/hwsku.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/hwsku.json new file mode 100644 index 000000000000..4e96edde0ba3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/hwsku.json @@ -0,0 +1,2330 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet1": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet2": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet3": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet4": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet5": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet6": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet7": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet8": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet9": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet10": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet11": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet12": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet13": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet14": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet15": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet16": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet17": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet18": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet19": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet20": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet21": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet22": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet23": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet24": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet25": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet26": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet27": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet28": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet29": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet30": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet31": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet32": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet33": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet34": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet35": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet36": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet37": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet38": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet39": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet40": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet41": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet42": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet43": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet44": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet45": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet46": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet47": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet48": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet49": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet50": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet51": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet52": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet53": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet54": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet55": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet56": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet57": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet58": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet59": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet60": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet61": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet62": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet63": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet64": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet65": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet66": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet67": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet68": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet69": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet70": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet71": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet72": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet73": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet74": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet75": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet76": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet77": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet78": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet79": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet80": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet81": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet82": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet83": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet84": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet85": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet86": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet87": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet88": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet89": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet90": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet91": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet92": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet93": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet94": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet95": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet96": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet100": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet104": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet108": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet112": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet113": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet114": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet115": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet116": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet117": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet118": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet119": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet120": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet121": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet122": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet123": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet124": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet125": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet126": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet127": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet128": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet132": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet136": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet140": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet144": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet145": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet146": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet147": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet148": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet149": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet150": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet151": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet152": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet153": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet154": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet155": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet156": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet157": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet158": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet159": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet160": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet161": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet162": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet163": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet164": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet165": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet166": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet167": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet168": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet169": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet170": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet171": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet172": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet173": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet174": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet175": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet176": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet177": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet178": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet179": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet180": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet181": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet182": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet183": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet184": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet185": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet186": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet187": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet188": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet189": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet190": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet191": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet192": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet193": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet194": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet195": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet196": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet197": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet198": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet199": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet200": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet201": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet202": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet203": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet204": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet205": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet206": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet207": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet208": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet209": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet210": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet211": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet212": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet213": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet214": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet215": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet216": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet217": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet218": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet219": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet220": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet221": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet222": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet223": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet224": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet225": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet226": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet227": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet228": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet229": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet230": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet231": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet232": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet233": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet234": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet235": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet236": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet237": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet238": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet239": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet240": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet241": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet242": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet243": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet244": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet245": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet246": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet247": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet248": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet249": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet250": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet251": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet252": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet253": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet254": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet255": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet256": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet257": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet258": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet259": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet260": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet261": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet262": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet263": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet264": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet265": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet266": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet267": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet268": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet269": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet270": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet271": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet272": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet273": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet274": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet275": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet276": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet277": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet278": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet279": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet280": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet281": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet282": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet283": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet284": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet285": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet286": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet287": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet288": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet289": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet290": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet291": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet292": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet293": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet294": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet295": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet296": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet297": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet298": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet299": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet300": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet301": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet302": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet303": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet304": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet305": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet306": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet307": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet308": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet309": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet310": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet311": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet312": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet313": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet314": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet315": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet316": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet317": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet318": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet319": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet320": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet321": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet322": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet323": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet324": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet325": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet326": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet327": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet328": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet329": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet330": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet331": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet332": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet333": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet334": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet335": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet336": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet337": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet338": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet339": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet340": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet341": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet342": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet343": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet344": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet345": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet346": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet347": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet348": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet349": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet350": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet351": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet352": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet356": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet360": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet364": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet368": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet369": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet370": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet371": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet372": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet373": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet374": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet375": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet376": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet377": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet378": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet379": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet380": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet381": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet382": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet383": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet384": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet388": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet392": { + "default_brkout_mode": "2x400G[200G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet396": { + "default_brkout_mode": "2x400G[200G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet400": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet401": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet402": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet403": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet404": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet405": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet406": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet407": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet408": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet409": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet410": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet411": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet412": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet413": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet414": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet415": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet416": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet417": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet418": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet419": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet420": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet421": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet422": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet423": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet424": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet425": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet426": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet427": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet428": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet429": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet430": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet431": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet432": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet433": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet434": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet435": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet436": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet437": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet438": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet439": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet440": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet441": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet442": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet443": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet444": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet445": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet446": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet447": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet448": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet449": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet450": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet451": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet452": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet453": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet454": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet455": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet456": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet457": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet458": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet459": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet460": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet461": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet462": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet463": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet464": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet465": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet466": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet467": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet468": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet469": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet470": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet471": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet472": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet473": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet474": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet475": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet476": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet477": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet478": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet479": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet480": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet481": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet482": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet483": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet484": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet485": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet486": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet487": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet488": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet489": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet490": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet491": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet492": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet493": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet494": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet495": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet496": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet497": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet498": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet499": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet500": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet501": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet502": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet503": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet504": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet505": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet506": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet507": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet508": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet509": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet510": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet511": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet512": { + "default_brkout_mode": "1x10G[25G]" + }, + "Ethernet520": { + "default_brkout_mode": "1x10G[25G]" + } + } +} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/media_settings.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/media_settings.json new file mode 120000 index 000000000000..bb10e7486184 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/media_settings.json @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-V256/media_settings.json \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/optics_si_settings.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/optics_si_settings.json new file mode 120000 index 000000000000..84477b1a15d6 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/optics_si_settings.json @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-V256/optics_si_settings.json \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pg_profile_lookup.ini b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pg_profile_lookup.ini new file mode 100644 index 000000000000..54248344a715 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pg_profile_lookup.ini @@ -0,0 +1,55 @@ +## +## SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +## Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +## 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 19456 19456 20480 0 +25000 5m 19456 19456 21504 0 +50000 5m 19456 19456 26624 0 +100000 5m 19456 19456 44032 0 +200000 5m 19456 19456 50176 0 +400000 5m 19456 19456 86016 0 +10000 30m 19456 19456 20480 0 +25000 30m 19456 19456 22528 0 +50000 30m 19456 19456 27648 0 +100000 30m 19456 19456 48128 0 +200000 30m 19456 19456 57344 0 +400000 30m 19456 19456 99328 0 +10000 40m 19456 19456 20480 0 +25000 40m 19456 19456 22528 0 +50000 40m 19456 19456 28672 0 +100000 40m 19456 19456 49152 0 +200000 40m 19456 19456 60416 0 +400000 40m 19456 19456 104448 0 +10000 250m 19456 19456 23552 0 +25000 250m 19456 19456 29696 0 +50000 250m 19456 19456 43008 0 +100000 250m 19456 19456 76800 0 +200000 250m 19456 19456 116736 0 +400000 250m 19456 19456 217088 0 +10000 300m 19456 19456 23552 0 +25000 300m 19456 19456 30720 0 +50000 300m 19456 19456 46080 0 +100000 300m 19456 19456 83968 0 +200000 300m 19456 19456 130048 0 +400000 300m 19456 19456 243712 0 +10000 1000m 19456 19456 33792 0 +25000 1000m 19456 19456 54272 0 +50000 1000m 19456 19456 93184 0 +100000 1000m 19456 19456 177152 0 +200000 1000m 19456 19456 317440 0 +400000 1000m 19456 19456 619520 0 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pmon_daemon_control.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pmon_daemon_control.json new file mode 100644 index 000000000000..208fa63ca294 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/pmon_daemon_control.json @@ -0,0 +1,6 @@ +{ + "skip_ledd": true, + "skip_fancontrol": true, + "skip_xcvrd_cmis_mgr": false +} + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/port_config.ini b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/port_config.ini new file mode 100644 index 000000000000..ab29b130f2b8 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/port_config.ini @@ -0,0 +1,485 @@ +## +## SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +## Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +## 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 speed +Ethernet0 0 etp1a 1 100000 +Ethernet1 1 etp1b 1 100000 +Ethernet2 2 etp1c 1 100000 +Ethernet3 3 etp1d 1 100000 +Ethernet4 4 etp1e 1 100000 +Ethernet5 5 etp1f 1 100000 +Ethernet6 6 etp1g 1 100000 +Ethernet7 7 etp1h 1 100000 +Ethernet8 8 etp2a 2 100000 +Ethernet9 9 etp2b 2 100000 +Ethernet10 10 etp2c 2 100000 +Ethernet11 11 etp2d 2 100000 +Ethernet12 12 etp2e 2 100000 +Ethernet13 13 etp2f 2 100000 +Ethernet14 14 etp2g 2 100000 +Ethernet15 15 etp2h 2 100000 +Ethernet16 16 etp3a 3 100000 +Ethernet17 17 etp3b 3 100000 +Ethernet18 18 etp3c 3 100000 +Ethernet19 19 etp3d 3 100000 +Ethernet20 20 etp3e 3 100000 +Ethernet21 21 etp3f 3 100000 +Ethernet22 22 etp3g 3 100000 +Ethernet23 23 etp3h 3 100000 +Ethernet24 24 etp4a 4 100000 +Ethernet25 25 etp4b 4 100000 +Ethernet26 26 etp4c 4 100000 +Ethernet27 27 etp4d 4 100000 +Ethernet28 28 etp4e 4 100000 +Ethernet29 29 etp4f 4 100000 +Ethernet30 30 etp4g 4 100000 +Ethernet31 31 etp4h 4 100000 +Ethernet32 32 etp5a 5 100000 +Ethernet33 33 etp5b 5 100000 +Ethernet34 34 etp5c 5 100000 +Ethernet35 35 etp5d 5 100000 +Ethernet36 36 etp5e 5 100000 +Ethernet37 37 etp5f 5 100000 +Ethernet38 38 etp5g 5 100000 +Ethernet39 39 etp5h 5 100000 +Ethernet40 40 etp6a 6 100000 +Ethernet41 41 etp6b 6 100000 +Ethernet42 42 etp6c 6 100000 +Ethernet43 43 etp6d 6 100000 +Ethernet44 44 etp6e 6 100000 +Ethernet45 45 etp6f 6 100000 +Ethernet46 46 etp6g 6 100000 +Ethernet47 47 etp6h 6 100000 +Ethernet48 48 etp7a 7 100000 +Ethernet49 49 etp7b 7 100000 +Ethernet50 50 etp7c 7 100000 +Ethernet51 51 etp7d 7 100000 +Ethernet52 52 etp7e 7 100000 +Ethernet53 53 etp7f 7 100000 +Ethernet54 54 etp7g 7 100000 +Ethernet55 55 etp7h 7 100000 +Ethernet56 56 etp8a 8 100000 +Ethernet57 57 etp8b 8 100000 +Ethernet58 58 etp8c 8 100000 +Ethernet59 59 etp8d 8 100000 +Ethernet60 60 etp8e 8 100000 +Ethernet61 61 etp8f 8 100000 +Ethernet62 62 etp8g 8 100000 +Ethernet63 63 etp8h 8 100000 +Ethernet64 64 etp9a 9 100000 +Ethernet65 65 etp9b 9 100000 +Ethernet66 66 etp9c 9 100000 +Ethernet67 67 etp9d 9 100000 +Ethernet68 68 etp9e 9 100000 +Ethernet69 69 etp9f 9 100000 +Ethernet70 70 etp9g 9 100000 +Ethernet71 71 etp9h 9 100000 +Ethernet72 72 etp10a 10 100000 +Ethernet73 73 etp10b 10 100000 +Ethernet74 74 etp10c 10 100000 +Ethernet75 75 etp10d 10 100000 +Ethernet76 76 etp10e 10 100000 +Ethernet77 77 etp10f 10 100000 +Ethernet78 78 etp10g 10 100000 +Ethernet79 79 etp10h 10 100000 +Ethernet80 80 etp11a 11 100000 +Ethernet81 81 etp11b 11 100000 +Ethernet82 82 etp11c 11 100000 +Ethernet83 83 etp11d 11 100000 +Ethernet84 84 etp11e 11 100000 +Ethernet85 85 etp11f 11 100000 +Ethernet86 86 etp11g 11 100000 +Ethernet87 87 etp11h 11 100000 +Ethernet88 88 etp12a 12 100000 +Ethernet89 89 etp12b 12 100000 +Ethernet90 90 etp12c 12 100000 +Ethernet91 91 etp12d 12 100000 +Ethernet92 92 etp12e 12 100000 +Ethernet93 93 etp12f 12 100000 +Ethernet94 94 etp12g 12 100000 +Ethernet95 95 etp12h 12 100000 +Ethernet96 96,97,98,99 etp13a 13 400000 +Ethernet100 100,101,102,103 etp13b 13 400000 +Ethernet104 104,105,106,107 etp14a 14 400000 +Ethernet108 108,109,110,111 etp14b 14 400000 +Ethernet112 112 etp15a 15 100000 +Ethernet113 113 etp15b 15 100000 +Ethernet114 114 etp15c 15 100000 +Ethernet115 115 etp15d 15 100000 +Ethernet116 116 etp15e 15 100000 +Ethernet117 117 etp15f 15 100000 +Ethernet118 118 etp15g 15 100000 +Ethernet119 119 etp15h 15 100000 +Ethernet120 120 etp16a 16 100000 +Ethernet121 121 etp16b 16 100000 +Ethernet122 122 etp16c 16 100000 +Ethernet123 123 etp16d 16 100000 +Ethernet124 124 etp16e 16 100000 +Ethernet125 125 etp16f 16 100000 +Ethernet126 126 etp16g 16 100000 +Ethernet127 127 etp16h 16 100000 +Ethernet128 128,129,130,131 etp17a 17 400000 +Ethernet132 132,133,134,135 etp17b 17 400000 +Ethernet136 136,137,138,139 etp18a 18 400000 +Ethernet140 140,141,142,143 etp18b 18 400000 +Ethernet144 144 etp19a 19 100000 +Ethernet145 145 etp19b 19 100000 +Ethernet146 146 etp19c 19 100000 +Ethernet147 147 etp19d 19 100000 +Ethernet148 148 etp19e 19 100000 +Ethernet149 149 etp19f 19 100000 +Ethernet150 150 etp19g 19 100000 +Ethernet151 151 etp19h 19 100000 +Ethernet152 152 etp20a 20 100000 +Ethernet153 153 etp20b 20 100000 +Ethernet154 154 etp20c 20 100000 +Ethernet155 155 etp20d 20 100000 +Ethernet156 156 etp20e 20 100000 +Ethernet157 157 etp20f 20 100000 +Ethernet158 158 etp20g 20 100000 +Ethernet159 159 etp20h 20 100000 +Ethernet160 160 etp21a 21 100000 +Ethernet161 161 etp21b 21 100000 +Ethernet162 162 etp21c 21 100000 +Ethernet163 163 etp21d 21 100000 +Ethernet164 164 etp21e 21 100000 +Ethernet165 165 etp21f 21 100000 +Ethernet166 166 etp21g 21 100000 +Ethernet167 167 etp21h 21 100000 +Ethernet168 168 etp22a 22 100000 +Ethernet169 169 etp22b 22 100000 +Ethernet170 170 etp22c 22 100000 +Ethernet171 171 etp22d 22 100000 +Ethernet172 172 etp22e 22 100000 +Ethernet173 173 etp22f 22 100000 +Ethernet174 174 etp22g 22 100000 +Ethernet175 175 etp22h 22 100000 +Ethernet176 176 etp23a 23 100000 +Ethernet177 177 etp23b 23 100000 +Ethernet178 178 etp23c 23 100000 +Ethernet179 179 etp23d 23 100000 +Ethernet180 180 etp23e 23 100000 +Ethernet181 181 etp23f 23 100000 +Ethernet182 182 etp23g 23 100000 +Ethernet183 183 etp23h 23 100000 +Ethernet184 184 etp24a 24 100000 +Ethernet185 185 etp24b 24 100000 +Ethernet186 186 etp24c 24 100000 +Ethernet187 187 etp24d 24 100000 +Ethernet188 188 etp24e 24 100000 +Ethernet189 189 etp24f 24 100000 +Ethernet190 190 etp24g 24 100000 +Ethernet191 191 etp24h 24 100000 +Ethernet192 192 etp25a 25 100000 +Ethernet193 193 etp25b 25 100000 +Ethernet194 194 etp25c 25 100000 +Ethernet195 195 etp25d 25 100000 +Ethernet196 196 etp25e 25 100000 +Ethernet197 197 etp25f 25 100000 +Ethernet198 198 etp25g 25 100000 +Ethernet199 199 etp25h 25 100000 +Ethernet200 200 etp26a 26 100000 +Ethernet201 201 etp26b 26 100000 +Ethernet202 202 etp26c 26 100000 +Ethernet203 203 etp26d 26 100000 +Ethernet204 204 etp26e 26 100000 +Ethernet205 205 etp26f 26 100000 +Ethernet206 206 etp26g 26 100000 +Ethernet207 207 etp26h 26 100000 +Ethernet208 208 etp27a 27 100000 +Ethernet209 209 etp27b 27 100000 +Ethernet210 210 etp27c 27 100000 +Ethernet211 211 etp27d 27 100000 +Ethernet212 212 etp27e 27 100000 +Ethernet213 213 etp27f 27 100000 +Ethernet214 214 etp27g 27 100000 +Ethernet215 215 etp27h 27 100000 +Ethernet216 216 etp28a 28 100000 +Ethernet217 217 etp28b 28 100000 +Ethernet218 218 etp28c 28 100000 +Ethernet219 219 etp28d 28 100000 +Ethernet220 220 etp28e 28 100000 +Ethernet221 221 etp28f 28 100000 +Ethernet222 222 etp28g 28 100000 +Ethernet223 223 etp28h 28 100000 +Ethernet224 224 etp29a 29 100000 +Ethernet225 225 etp29b 29 100000 +Ethernet226 226 etp29c 29 100000 +Ethernet227 227 etp29d 29 100000 +Ethernet228 228 etp29e 29 100000 +Ethernet229 229 etp29f 29 100000 +Ethernet230 230 etp29g 29 100000 +Ethernet231 231 etp29h 29 100000 +Ethernet232 232 etp30a 30 100000 +Ethernet233 233 etp30b 30 100000 +Ethernet234 234 etp30c 30 100000 +Ethernet235 235 etp30d 30 100000 +Ethernet236 236 etp30e 30 100000 +Ethernet237 237 etp30f 30 100000 +Ethernet238 238 etp30g 30 100000 +Ethernet239 239 etp30h 30 100000 +Ethernet240 240 etp31a 31 100000 +Ethernet241 241 etp31b 31 100000 +Ethernet242 242 etp31c 31 100000 +Ethernet243 243 etp31d 31 100000 +Ethernet244 244 etp31e 31 100000 +Ethernet245 245 etp31f 31 100000 +Ethernet246 246 etp31g 31 100000 +Ethernet247 247 etp31h 31 100000 +Ethernet248 248 etp32a 32 100000 +Ethernet249 249 etp32b 32 100000 +Ethernet250 250 etp32c 32 100000 +Ethernet251 251 etp32d 32 100000 +Ethernet252 252 etp32e 32 100000 +Ethernet253 253 etp32f 32 100000 +Ethernet254 254 etp32g 32 100000 +Ethernet255 255 etp32h 32 100000 +Ethernet256 256 etp33a 33 100000 +Ethernet257 257 etp33b 33 100000 +Ethernet258 258 etp33c 33 100000 +Ethernet259 259 etp33d 33 100000 +Ethernet260 260 etp33e 33 100000 +Ethernet261 261 etp33f 33 100000 +Ethernet262 262 etp33g 33 100000 +Ethernet263 263 etp33h 33 100000 +Ethernet264 264 etp34a 34 100000 +Ethernet265 265 etp34b 34 100000 +Ethernet266 266 etp34c 34 100000 +Ethernet267 267 etp34d 34 100000 +Ethernet268 268 etp34e 34 100000 +Ethernet269 269 etp34f 34 100000 +Ethernet270 270 etp34g 34 100000 +Ethernet271 271 etp34h 34 100000 +Ethernet272 272 etp35a 35 100000 +Ethernet273 273 etp35b 35 100000 +Ethernet274 274 etp35c 35 100000 +Ethernet275 275 etp35d 35 100000 +Ethernet276 276 etp35e 35 100000 +Ethernet277 277 etp35f 35 100000 +Ethernet278 278 etp35g 35 100000 +Ethernet279 279 etp35h 35 100000 +Ethernet280 280 etp36a 36 100000 +Ethernet281 281 etp36b 36 100000 +Ethernet282 282 etp36c 36 100000 +Ethernet283 283 etp36d 36 100000 +Ethernet284 284 etp36e 36 100000 +Ethernet285 285 etp36f 36 100000 +Ethernet286 286 etp36g 36 100000 +Ethernet287 287 etp36h 36 100000 +Ethernet288 288 etp37a 37 100000 +Ethernet289 289 etp37b 37 100000 +Ethernet290 290 etp37c 37 100000 +Ethernet291 291 etp37d 37 100000 +Ethernet292 292 etp37e 37 100000 +Ethernet293 293 etp37f 37 100000 +Ethernet294 294 etp37g 37 100000 +Ethernet295 295 etp37h 37 100000 +Ethernet296 296 etp38a 38 100000 +Ethernet297 297 etp38b 38 100000 +Ethernet298 298 etp38c 38 100000 +Ethernet299 299 etp38d 38 100000 +Ethernet300 300 etp38e 38 100000 +Ethernet301 301 etp38f 38 100000 +Ethernet302 302 etp38g 38 100000 +Ethernet303 303 etp38h 38 100000 +Ethernet304 304 etp39a 39 100000 +Ethernet305 305 etp39b 39 100000 +Ethernet306 306 etp39c 39 100000 +Ethernet307 307 etp39d 39 100000 +Ethernet308 308 etp39e 39 100000 +Ethernet309 309 etp39f 39 100000 +Ethernet310 310 etp39g 39 100000 +Ethernet311 311 etp39h 39 100000 +Ethernet312 312 etp40a 40 100000 +Ethernet313 313 etp40b 40 100000 +Ethernet314 314 etp40c 40 100000 +Ethernet315 315 etp40d 40 100000 +Ethernet316 316 etp40e 40 100000 +Ethernet317 317 etp40f 40 100000 +Ethernet318 318 etp40g 40 100000 +Ethernet319 319 etp40h 40 100000 +Ethernet320 320 etp41a 41 100000 +Ethernet321 321 etp41b 41 100000 +Ethernet322 322 etp41c 41 100000 +Ethernet323 323 etp41d 41 100000 +Ethernet324 324 etp41e 41 100000 +Ethernet325 325 etp41f 41 100000 +Ethernet326 326 etp41g 41 100000 +Ethernet327 327 etp41h 41 100000 +Ethernet328 328 etp42a 42 100000 +Ethernet329 329 etp42b 42 100000 +Ethernet330 330 etp42c 42 100000 +Ethernet331 331 etp42d 42 100000 +Ethernet332 332 etp42e 42 100000 +Ethernet333 333 etp42f 42 100000 +Ethernet334 334 etp42g 42 100000 +Ethernet335 335 etp42h 42 100000 +Ethernet336 336 etp43a 43 100000 +Ethernet337 337 etp43b 43 100000 +Ethernet338 338 etp43c 43 100000 +Ethernet339 339 etp43d 43 100000 +Ethernet340 340 etp43e 43 100000 +Ethernet341 341 etp43f 43 100000 +Ethernet342 342 etp43g 43 100000 +Ethernet343 343 etp43h 43 100000 +Ethernet344 344 etp44a 44 100000 +Ethernet345 345 etp44b 44 100000 +Ethernet346 346 etp44c 44 100000 +Ethernet347 347 etp44d 44 100000 +Ethernet348 348 etp44e 44 100000 +Ethernet349 349 etp44f 44 100000 +Ethernet350 350 etp44g 44 100000 +Ethernet351 351 etp44h 44 100000 +Ethernet352 352,353,354,355 etp45a 45 400000 +Ethernet356 356,357,358,359 etp45b 45 400000 +Ethernet360 360,361,362,363 etp46a 46 400000 +Ethernet364 364,365,366,367 etp46b 46 400000 +Ethernet368 368 etp47a 47 100000 +Ethernet369 369 etp47b 47 100000 +Ethernet370 370 etp47c 47 100000 +Ethernet371 371 etp47d 47 100000 +Ethernet372 372 etp47e 47 100000 +Ethernet373 373 etp47f 47 100000 +Ethernet374 374 etp47g 47 100000 +Ethernet375 375 etp47h 47 100000 +Ethernet376 376 etp48a 48 100000 +Ethernet377 377 etp48b 48 100000 +Ethernet378 378 etp48c 48 100000 +Ethernet379 379 etp48d 48 100000 +Ethernet380 380 etp48e 48 100000 +Ethernet381 381 etp48f 48 100000 +Ethernet382 382 etp48g 48 100000 +Ethernet383 383 etp48h 48 100000 +Ethernet384 384,385,386,387 etp49a 49 400000 +Ethernet388 388,389,390,391 etp49b 49 400000 +Ethernet392 392,393,394,395 etp50a 50 400000 +Ethernet396 396,397,398,399 etp50b 50 400000 +Ethernet400 400 etp51a 51 100000 +Ethernet401 401 etp51b 51 100000 +Ethernet402 402 etp51c 51 100000 +Ethernet403 403 etp51d 51 100000 +Ethernet404 404 etp51e 51 100000 +Ethernet405 405 etp51f 51 100000 +Ethernet406 406 etp51g 51 100000 +Ethernet407 407 etp51h 51 100000 +Ethernet408 408 etp52a 52 100000 +Ethernet409 409 etp52b 52 100000 +Ethernet410 410 etp52c 52 100000 +Ethernet411 411 etp52d 52 100000 +Ethernet412 412 etp52e 52 100000 +Ethernet413 413 etp52f 52 100000 +Ethernet414 414 etp52g 52 100000 +Ethernet415 415 etp52h 52 100000 +Ethernet416 416 etp53a 53 100000 +Ethernet417 417 etp53b 53 100000 +Ethernet418 418 etp53c 53 100000 +Ethernet419 419 etp53d 53 100000 +Ethernet420 420 etp53e 53 100000 +Ethernet421 421 etp53f 53 100000 +Ethernet422 422 etp53g 53 100000 +Ethernet423 423 etp53h 53 100000 +Ethernet424 424 etp54a 54 100000 +Ethernet425 425 etp54b 54 100000 +Ethernet426 426 etp54c 54 100000 +Ethernet427 427 etp54d 54 100000 +Ethernet428 428 etp54e 54 100000 +Ethernet429 429 etp54f 54 100000 +Ethernet430 430 etp54g 54 100000 +Ethernet431 431 etp54h 54 100000 +Ethernet432 432 etp55a 55 100000 +Ethernet433 433 etp55b 55 100000 +Ethernet434 434 etp55c 55 100000 +Ethernet435 435 etp55d 55 100000 +Ethernet436 436 etp55e 55 100000 +Ethernet437 437 etp55f 55 100000 +Ethernet438 438 etp55g 55 100000 +Ethernet439 439 etp55h 55 100000 +Ethernet440 440 etp56a 56 100000 +Ethernet441 441 etp56b 56 100000 +Ethernet442 442 etp56c 56 100000 +Ethernet443 443 etp56d 56 100000 +Ethernet444 444 etp56e 56 100000 +Ethernet445 445 etp56f 56 100000 +Ethernet446 446 etp56g 56 100000 +Ethernet447 447 etp56h 56 100000 +Ethernet448 448 etp57a 57 100000 +Ethernet449 449 etp57b 57 100000 +Ethernet450 450 etp57c 57 100000 +Ethernet451 451 etp57d 57 100000 +Ethernet452 452 etp57e 57 100000 +Ethernet453 453 etp57f 57 100000 +Ethernet454 454 etp57g 57 100000 +Ethernet455 455 etp57h 57 100000 +Ethernet456 456 etp58a 58 100000 +Ethernet457 457 etp58b 58 100000 +Ethernet458 458 etp58c 58 100000 +Ethernet459 459 etp58d 58 100000 +Ethernet460 460 etp58e 58 100000 +Ethernet461 461 etp58f 58 100000 +Ethernet462 462 etp58g 58 100000 +Ethernet463 463 etp58h 58 100000 +Ethernet464 464 etp59a 59 100000 +Ethernet465 465 etp59b 59 100000 +Ethernet466 466 etp59c 59 100000 +Ethernet467 467 etp59d 59 100000 +Ethernet468 468 etp59e 59 100000 +Ethernet469 469 etp59f 59 100000 +Ethernet470 470 etp59g 59 100000 +Ethernet471 471 etp59h 59 100000 +Ethernet472 472 etp60a 60 100000 +Ethernet473 473 etp60b 60 100000 +Ethernet474 474 etp60c 60 100000 +Ethernet475 475 etp60d 60 100000 +Ethernet476 476 etp60e 60 100000 +Ethernet477 477 etp60f 60 100000 +Ethernet478 478 etp60g 60 100000 +Ethernet479 479 etp60h 60 100000 +Ethernet480 480 etp61a 61 100000 +Ethernet481 481 etp61b 61 100000 +Ethernet482 482 etp61c 61 100000 +Ethernet483 483 etp61d 61 100000 +Ethernet484 484 etp61e 61 100000 +Ethernet485 485 etp61f 61 100000 +Ethernet486 486 etp61g 61 100000 +Ethernet487 487 etp61h 61 100000 +Ethernet488 488 etp62a 62 100000 +Ethernet489 489 etp62b 62 100000 +Ethernet490 490 etp62c 62 100000 +Ethernet491 491 etp62d 62 100000 +Ethernet492 492 etp62e 62 100000 +Ethernet493 493 etp62f 62 100000 +Ethernet494 494 etp62g 62 100000 +Ethernet495 495 etp62h 62 100000 +Ethernet496 496 etp63a 63 100000 +Ethernet497 497 etp63b 63 100000 +Ethernet498 498 etp63c 63 100000 +Ethernet499 499 etp63d 63 100000 +Ethernet500 500 etp63e 63 100000 +Ethernet501 501 etp63f 63 100000 +Ethernet502 502 etp63g 63 100000 +Ethernet503 503 etp63h 63 100000 +Ethernet504 504 etp64a 64 100000 +Ethernet505 505 etp64b 64 100000 +Ethernet506 506 etp64c 64 100000 +Ethernet507 507 etp64d 64 100000 +Ethernet508 508 etp64e 64 100000 +Ethernet509 509 etp64f 64 100000 +Ethernet510 510 etp64g 64 100000 +Ethernet511 511 etp64h 64 100000 +Ethernet512 512 etp65 65 10000 +Ethernet520 520 etp66 66 10000 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/qos.json.j2 new file mode 120000 index 000000000000..462ffcd7e1f3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/qos.json.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai.profile b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai.profile new file mode 100644 index 000000000000..677541354194 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai.profile @@ -0,0 +1,4 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/sai_5640_448x100g_16x400g.xml +SAI_INDEPENDENT_MODULE_MODE=1 +SAI_KEY_SPC5_LOSSY_SCHEDULING=1 +SAI_DEFAULT_SWITCHING_MODE_STORE_FORWARD=1 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai_5640_448x100g_16x400g.xml b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai_5640_448x100g_16x400g.xml new file mode 100644 index 000000000000..a1fcfe94ed39 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C448O16/sai_5640_448x100g_16x400g.xml @@ -0,0 +1,631 @@ + + + + + + + 00:02:03:04:05:00 + + + 0 + + + 66 + + + + + 481 + 8 + 0 + 3 + 1536 + 8 + true + + + 489 + 8 + 1 + 3 + 1536 + 8 + true + + + 505 + 8 + 2 + 3 + 1536 + 8 + true + + + 497 + 8 + 3 + 3 + 1536 + 8 + true + + + 449 + 8 + 4 + 3 + 1536 + 8 + true + + + 457 + 8 + 5 + 3 + 1536 + 8 + true + + + 473 + 8 + 6 + 3 + 1536 + 8 + true + + + 465 + 8 + 7 + 3 + 1536 + 8 + true + + + 417 + 8 + 8 + 3 + 1536 + 8 + true + + + 425 + 8 + 9 + 3 + 1536 + 8 + true + + + 441 + 8 + 10 + 3 + 1536 + 8 + true + + + 433 + 8 + 11 + 3 + 1536 + 8 + true + + + 385 + 8 + 12 + 3 + 1536 + 8 + true + + + 393 + 8 + 13 + 3 + 1536 + 8 + true + + + 409 + 8 + 14 + 3 + 1536 + 8 + true + + + 401 + 8 + 15 + 3 + 1536 + 8 + true + + + 361 + 8 + 16 + 3 + 1536 + 8 + true + + + 353 + 8 + 17 + 3 + 1536 + 8 + true + + + 369 + 8 + 18 + 3 + 1536 + 8 + true + + + 377 + 8 + 19 + 3 + 1536 + 8 + true + + + 329 + 8 + 20 + 3 + 1536 + 8 + true + + + 321 + 8 + 21 + 3 + 1536 + 8 + true + + + 337 + 8 + 22 + 3 + 1536 + 8 + true + + + 345 + 8 + 23 + 3 + 1536 + 8 + true + + + 297 + 8 + 24 + 3 + 1536 + 8 + true + + + 289 + 8 + 25 + 3 + 1536 + 8 + true + + + 305 + 8 + 26 + + + 3 + + + 1536 + 8 + true + + + 313 + 8 + 27 + 3 + 1536 + 8 + true + + + 265 + 8 + 28 + 3 + 1536 + 8 + true + + + 257 + 8 + 29 + 3 + 1536 + 8 + true + + + 273 + 8 + 30 + 3 + 1536 + 8 + true + + + 281 + 8 + 31 + 3 + 1536 + 8 + true + + + 25 + 8 + 32 + 3 + 1536 + 8 + true + + + 17 + 8 + 33 + 3 + 1536 + 8 + true + + + 1 + 8 + 34 + 3 + 1536 + 8 + true + + + 9 + 8 + 35 + 3 + 1536 + 8 + true + + + 57 + 8 + 36 + 3 + 1536 + 8 + true + + + 49 + 8 + 37 + 3 + 1536 + 8 + true + + + 33 + 8 + 38 + 3 + 1536 + 8 + true + + + 41 + 8 + 39 + 3 + 1536 + 8 + true + + + 89 + 8 + 40 + 3 + 1536 + 8 + true + + + 81 + 8 + 41 + 3 + 1536 + 8 + true + + + 65 + 8 + 42 + 3 + 1536 + 8 + true + + + 73 + 8 + 43 + 3 + 1536 + 8 + true + + + 121 + 8 + 44 + 3 + 1536 + 8 + true + + + 113 + 8 + 45 + 3 + 1536 + 8 + true + + + 97 + 8 + 46 + 3 + 1536 + 8 + true + + + 105 + 8 + 47 + 3 + 1536 + 8 + true + + + 145 + 8 + 48 + 3 + 1536 + 8 + true + + + 153 + 8 + 49 + 3 + 1536 + 8 + true + + + 137 + 8 + 50 + 3 + 1536 + 8 + true + + + 129 + 8 + 51 + 3 + 1536 + 8 + true + + + 177 + 8 + 52 + 3 + 1536 + 8 + true + + + 185 + 8 + 53 + 3 + 1536 + 8 + true + + + 169 + 8 + 54 + 3 + 1536 + 8 + true + + + 161 + 8 + 55 + 3 + 1536 + 8 + true + + + 209 + 8 + 56 + 3 + 1536 + 8 + true + + + 217 + 8 + 57 + 3 + 1536 + 8 + true + + + 201 + 8 + 58 + 3 + 1536 + 8 + true + + + 193 + 8 + 59 + 3 + 1536 + 8 + true + + + 241 + 8 + 60 + 3 + 1536 + 8 + true + + + 249 + 8 + 61 + 3 + 1536 + 8 + true + + + 233 + 8 + 62 + 3 + 1536 + 8 + true + + + 225 + 8 + 63 + 3 + 1536 + 8 + true + + + 513 + 1 + 64 + 0 + 64 + true + + + 515 + 1 + 65 + 0 + 64 + true + + + + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers.json.j2 new file mode 120000 index 000000000000..add8bf8bb7c2 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/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_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_objects.j2 new file mode 120000 index 000000000000..e404fb0aae10 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_objects.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t0.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..3488f25dd73f --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t0.j2 @@ -0,0 +1,54 @@ +{# + SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES + Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + 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 = '0m' %} +{%-set ports2cable = { + 'torrouter_server' : '0m', + 'leafrouter_torrouter' : '0m', + 'spinerouter_leafrouter' : '0m' + } +-%} +{% set ingress_lossless_pool_size = '105419776' %} +{% set ingress_lossless_pool_xoff = '0' %} +{% set egress_lossless_pool_size = '136209408' %} +{% set egress_lossy_pool_size = '105419776' %} + +{% import 'buffers_defaults_objects.j2' as defs with context %} + +{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %} +{{ defs.generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_profile_lists_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_profile_lists(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_extra_lossless_queues_with_inactive_ports(port_names_active, port_names_extra_queues, port_names_inactive) %} +{{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names_active, port_names_extra_queues, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_queue_buffers(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_extra_lossless_pgs_with_inactive_ports(port_names_active, port_names_extra_pgs, port_names_inactive) %} +{{ defs.generate_pg_profiles_with_extra_lossless_pgs(port_names_active, port_names_extra_pgs, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_pg_profiles(port_names_active, port_names_inactive) }} +{%- endmacro %} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t1.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..3488f25dd73f --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_defaults_t1.j2 @@ -0,0 +1,54 @@ +{# + SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES + Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + 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 = '0m' %} +{%-set ports2cable = { + 'torrouter_server' : '0m', + 'leafrouter_torrouter' : '0m', + 'spinerouter_leafrouter' : '0m' + } +-%} +{% set ingress_lossless_pool_size = '105419776' %} +{% set ingress_lossless_pool_xoff = '0' %} +{% set egress_lossless_pool_size = '136209408' %} +{% set egress_lossy_pool_size = '105419776' %} + +{% import 'buffers_defaults_objects.j2' as defs with context %} + +{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %} +{{ defs.generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_profile_lists_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_profile_lists(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_extra_lossless_queues_with_inactive_ports(port_names_active, port_names_extra_queues, port_names_inactive) %} +{{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names_active, port_names_extra_queues, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_queue_buffers_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_queue_buffers(port_names_active, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_extra_lossless_pgs_with_inactive_ports(port_names_active, port_names_extra_pgs, port_names_inactive) %} +{{ defs.generate_pg_profiles_with_extra_lossless_pgs(port_names_active, port_names_extra_pgs, port_names_inactive) }} +{%- endmacro %} + +{%- macro generate_pg_profiles_with_inactive_ports(port_names_active, port_names_inactive) %} +{{ defs.generate_pg_profiles(port_names_active, port_names_inactive) }} +{%- endmacro %} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_dynamic.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/buffers_dynamic.json.j2 new file mode 120000 index 000000000000..8c4117c66214 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/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_sn5640-r0/Mellanox-SN5640-C512S2/create_only_config_db_buffers.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/create_only_config_db_buffers.json new file mode 100644 index 000000000000..6feb156714fe --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/hwsku.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/hwsku.json new file mode 100644 index 000000000000..31c3d7a60e17 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/hwsku.json @@ -0,0 +1,2570 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet1": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet2": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet3": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet4": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet5": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet6": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet7": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet8": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet9": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet10": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet11": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet12": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet13": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet14": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet15": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet16": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet17": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet18": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet19": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet20": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet21": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet22": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet23": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet24": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet25": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet26": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet27": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet28": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet29": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet30": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet31": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet32": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet33": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet34": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet35": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet36": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet37": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet38": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet39": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet40": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet41": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet42": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet43": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet44": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet45": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet46": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet47": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet48": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet49": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet50": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet51": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet52": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet53": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet54": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet55": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet56": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet57": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet58": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet59": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet60": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet61": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet62": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet63": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet64": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet65": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet66": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet67": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet68": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet69": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet70": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet71": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet72": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet73": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet74": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet75": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet76": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet77": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet78": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet79": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet80": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet81": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet82": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet83": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet84": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet85": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet86": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet87": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet88": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet89": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet90": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet91": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet92": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet93": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet94": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet95": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet96": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet97": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet98": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet99": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet100": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet101": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet102": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet103": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet104": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet105": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet106": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet107": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet108": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet109": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet110": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet111": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet112": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet113": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet114": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet115": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet116": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet117": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet118": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet119": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet120": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet121": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet122": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet123": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet124": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet125": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet126": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet127": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet128": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet129": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet130": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet131": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet132": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet133": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet134": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet135": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet136": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet137": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet138": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet139": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet140": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet141": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet142": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet143": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet144": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet145": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet146": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet147": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet148": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet149": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet150": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet151": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet152": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet153": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet154": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet155": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet156": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet157": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet158": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet159": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet160": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet161": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet162": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet163": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet164": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet165": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet166": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet167": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet168": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet169": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet170": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet171": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet172": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet173": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet174": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet175": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet176": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet177": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet178": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet179": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet180": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet181": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet182": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet183": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet184": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet185": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet186": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet187": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet188": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet189": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet190": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet191": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet192": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet193": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet194": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet195": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet196": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet197": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet198": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet199": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet200": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet201": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet202": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet203": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet204": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet205": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet206": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet207": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet208": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet209": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet210": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet211": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet212": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet213": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet214": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet215": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet216": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet217": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet218": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet219": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet220": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet221": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet222": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet223": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet224": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet225": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet226": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet227": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet228": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet229": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet230": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet231": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet232": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet233": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet234": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet235": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet236": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet237": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet238": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet239": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet240": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet241": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet242": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet243": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet244": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet245": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet246": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet247": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet248": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet249": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet250": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet251": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet252": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet253": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet254": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet255": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet256": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet257": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet258": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet259": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet260": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet261": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet262": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet263": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet264": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet265": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet266": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet267": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet268": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet269": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet270": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet271": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet272": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet273": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet274": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet275": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet276": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet277": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet278": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet279": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet280": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet281": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet282": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet283": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet284": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet285": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet286": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet287": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet288": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet289": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet290": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet291": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet292": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet293": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet294": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet295": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet296": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet297": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet298": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet299": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet300": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet301": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet302": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet303": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet304": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet305": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet306": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet307": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet308": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet309": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet310": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet311": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet312": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet313": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet314": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet315": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet316": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet317": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet318": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet319": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet320": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet321": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet322": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet323": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet324": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet325": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet326": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet327": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet328": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet329": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet330": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet331": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet332": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet333": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet334": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet335": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet336": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet337": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet338": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet339": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet340": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet341": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet342": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet343": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet344": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet345": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet346": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet347": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet348": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet349": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet350": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet351": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet352": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet353": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet354": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet355": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet356": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet357": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet358": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet359": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet360": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet361": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet362": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet363": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet364": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet365": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet366": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet367": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet368": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet369": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet370": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet371": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet372": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet373": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet374": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet375": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet376": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet377": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet378": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet379": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet380": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet381": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet382": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet383": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet384": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet385": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet386": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet387": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet388": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet389": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet390": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet391": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet392": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet393": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet394": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet395": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet396": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet397": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet398": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet399": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet400": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet401": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet402": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet403": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet404": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet405": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet406": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet407": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet408": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet409": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet410": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet411": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet412": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet413": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet414": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet415": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet416": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet417": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet418": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet419": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet420": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet421": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet422": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet423": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet424": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet425": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet426": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet427": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet428": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet429": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet430": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet431": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet432": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet433": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet434": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet435": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet436": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet437": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet438": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet439": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet440": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet441": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet442": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet443": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet444": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet445": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet446": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet447": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet448": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet449": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet450": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet451": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet452": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet453": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet454": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet455": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet456": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet457": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet458": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet459": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet460": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet461": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet462": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet463": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet464": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet465": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet466": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet467": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet468": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet469": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet470": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet471": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet472": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet473": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet474": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet475": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet476": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet477": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet478": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet479": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet480": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet481": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet482": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet483": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet484": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet485": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet486": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet487": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet488": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet489": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet490": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet491": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet492": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet493": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet494": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet495": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet496": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet497": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet498": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet499": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet500": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet501": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet502": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet503": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet504": { + "default_brkout_mode": "8x100G[50G]", + "subport": "1", + "autoneg": "off" + }, + "Ethernet505": { + "default_brkout_mode": "8x100G[50G]", + "subport": "2", + "autoneg": "off" + }, + "Ethernet506": { + "default_brkout_mode": "8x100G[50G]", + "subport": "3", + "autoneg": "off" + }, + "Ethernet507": { + "default_brkout_mode": "8x100G[50G]", + "subport": "4", + "autoneg": "off" + }, + "Ethernet508": { + "default_brkout_mode": "8x100G[50G]", + "subport": "5", + "autoneg": "off" + }, + "Ethernet509": { + "default_brkout_mode": "8x100G[50G]", + "subport": "6", + "autoneg": "off" + }, + "Ethernet510": { + "default_brkout_mode": "8x100G[50G]", + "subport": "7", + "autoneg": "off" + }, + "Ethernet511": { + "default_brkout_mode": "8x100G[50G]", + "subport": "8", + "autoneg": "off" + }, + "Ethernet512": { + "default_brkout_mode": "1x10G[25G]" + }, + "Ethernet520": { + "default_brkout_mode": "1x10G[25G]" + } + } +} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/media_settings.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/media_settings.json new file mode 120000 index 000000000000..bb10e7486184 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/media_settings.json @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-V256/media_settings.json \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/optics_si_settings.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/optics_si_settings.json new file mode 120000 index 000000000000..84477b1a15d6 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/optics_si_settings.json @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-V256/optics_si_settings.json \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pg_profile_lookup.ini b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pg_profile_lookup.ini new file mode 100644 index 000000000000..54248344a715 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pg_profile_lookup.ini @@ -0,0 +1,55 @@ +## +## SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +## Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +## 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 19456 19456 20480 0 +25000 5m 19456 19456 21504 0 +50000 5m 19456 19456 26624 0 +100000 5m 19456 19456 44032 0 +200000 5m 19456 19456 50176 0 +400000 5m 19456 19456 86016 0 +10000 30m 19456 19456 20480 0 +25000 30m 19456 19456 22528 0 +50000 30m 19456 19456 27648 0 +100000 30m 19456 19456 48128 0 +200000 30m 19456 19456 57344 0 +400000 30m 19456 19456 99328 0 +10000 40m 19456 19456 20480 0 +25000 40m 19456 19456 22528 0 +50000 40m 19456 19456 28672 0 +100000 40m 19456 19456 49152 0 +200000 40m 19456 19456 60416 0 +400000 40m 19456 19456 104448 0 +10000 250m 19456 19456 23552 0 +25000 250m 19456 19456 29696 0 +50000 250m 19456 19456 43008 0 +100000 250m 19456 19456 76800 0 +200000 250m 19456 19456 116736 0 +400000 250m 19456 19456 217088 0 +10000 300m 19456 19456 23552 0 +25000 300m 19456 19456 30720 0 +50000 300m 19456 19456 46080 0 +100000 300m 19456 19456 83968 0 +200000 300m 19456 19456 130048 0 +400000 300m 19456 19456 243712 0 +10000 1000m 19456 19456 33792 0 +25000 1000m 19456 19456 54272 0 +50000 1000m 19456 19456 93184 0 +100000 1000m 19456 19456 177152 0 +200000 1000m 19456 19456 317440 0 +400000 1000m 19456 19456 619520 0 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pmon_daemon_control.json b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pmon_daemon_control.json new file mode 100644 index 000000000000..208fa63ca294 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/pmon_daemon_control.json @@ -0,0 +1,6 @@ +{ + "skip_ledd": true, + "skip_fancontrol": true, + "skip_xcvrd_cmis_mgr": false +} + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/port_config.ini b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/port_config.ini new file mode 100644 index 000000000000..482d746ffecb --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/port_config.ini @@ -0,0 +1,533 @@ +## +## SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +## Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +## 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 speed +Ethernet0 0 etp1a 1 100000 +Ethernet1 1 etp1b 1 100000 +Ethernet2 2 etp1c 1 100000 +Ethernet3 3 etp1d 1 100000 +Ethernet4 4 etp1e 1 100000 +Ethernet5 5 etp1f 1 100000 +Ethernet6 6 etp1g 1 100000 +Ethernet7 7 etp1h 1 100000 +Ethernet8 8 etp2a 2 100000 +Ethernet9 9 etp2b 2 100000 +Ethernet10 10 etp2c 2 100000 +Ethernet11 11 etp2d 2 100000 +Ethernet12 12 etp2e 2 100000 +Ethernet13 13 etp2f 2 100000 +Ethernet14 14 etp2g 2 100000 +Ethernet15 15 etp2h 2 100000 +Ethernet16 16 etp3a 3 100000 +Ethernet17 17 etp3b 3 100000 +Ethernet18 18 etp3c 3 100000 +Ethernet19 19 etp3d 3 100000 +Ethernet20 20 etp3e 3 100000 +Ethernet21 21 etp3f 3 100000 +Ethernet22 22 etp3g 3 100000 +Ethernet23 23 etp3h 3 100000 +Ethernet24 24 etp4a 4 100000 +Ethernet25 25 etp4b 4 100000 +Ethernet26 26 etp4c 4 100000 +Ethernet27 27 etp4d 4 100000 +Ethernet28 28 etp4e 4 100000 +Ethernet29 29 etp4f 4 100000 +Ethernet30 30 etp4g 4 100000 +Ethernet31 31 etp4h 4 100000 +Ethernet32 32 etp5a 5 100000 +Ethernet33 33 etp5b 5 100000 +Ethernet34 34 etp5c 5 100000 +Ethernet35 35 etp5d 5 100000 +Ethernet36 36 etp5e 5 100000 +Ethernet37 37 etp5f 5 100000 +Ethernet38 38 etp5g 5 100000 +Ethernet39 39 etp5h 5 100000 +Ethernet40 40 etp6a 6 100000 +Ethernet41 41 etp6b 6 100000 +Ethernet42 42 etp6c 6 100000 +Ethernet43 43 etp6d 6 100000 +Ethernet44 44 etp6e 6 100000 +Ethernet45 45 etp6f 6 100000 +Ethernet46 46 etp6g 6 100000 +Ethernet47 47 etp6h 6 100000 +Ethernet48 48 etp7a 7 100000 +Ethernet49 49 etp7b 7 100000 +Ethernet50 50 etp7c 7 100000 +Ethernet51 51 etp7d 7 100000 +Ethernet52 52 etp7e 7 100000 +Ethernet53 53 etp7f 7 100000 +Ethernet54 54 etp7g 7 100000 +Ethernet55 55 etp7h 7 100000 +Ethernet56 56 etp8a 8 100000 +Ethernet57 57 etp8b 8 100000 +Ethernet58 58 etp8c 8 100000 +Ethernet59 59 etp8d 8 100000 +Ethernet60 60 etp8e 8 100000 +Ethernet61 61 etp8f 8 100000 +Ethernet62 62 etp8g 8 100000 +Ethernet63 63 etp8h 8 100000 +Ethernet64 64 etp9a 9 100000 +Ethernet65 65 etp9b 9 100000 +Ethernet66 66 etp9c 9 100000 +Ethernet67 67 etp9d 9 100000 +Ethernet68 68 etp9e 9 100000 +Ethernet69 69 etp9f 9 100000 +Ethernet70 70 etp9g 9 100000 +Ethernet71 71 etp9h 9 100000 +Ethernet72 72 etp10a 10 100000 +Ethernet73 73 etp10b 10 100000 +Ethernet74 74 etp10c 10 100000 +Ethernet75 75 etp10d 10 100000 +Ethernet76 76 etp10e 10 100000 +Ethernet77 77 etp10f 10 100000 +Ethernet78 78 etp10g 10 100000 +Ethernet79 79 etp10h 10 100000 +Ethernet80 80 etp11a 11 100000 +Ethernet81 81 etp11b 11 100000 +Ethernet82 82 etp11c 11 100000 +Ethernet83 83 etp11d 11 100000 +Ethernet84 84 etp11e 11 100000 +Ethernet85 85 etp11f 11 100000 +Ethernet86 86 etp11g 11 100000 +Ethernet87 87 etp11h 11 100000 +Ethernet88 88 etp12a 12 100000 +Ethernet89 89 etp12b 12 100000 +Ethernet90 90 etp12c 12 100000 +Ethernet91 91 etp12d 12 100000 +Ethernet92 92 etp12e 12 100000 +Ethernet93 93 etp12f 12 100000 +Ethernet94 94 etp12g 12 100000 +Ethernet95 95 etp12h 12 100000 +Ethernet96 96 etp13a 13 100000 +Ethernet97 97 etp13b 13 100000 +Ethernet98 98 etp13c 13 100000 +Ethernet99 99 etp13d 13 100000 +Ethernet100 100 etp13e 13 100000 +Ethernet101 101 etp13f 13 100000 +Ethernet102 102 etp13g 13 100000 +Ethernet103 103 etp13h 13 100000 +Ethernet104 104 etp14a 14 100000 +Ethernet105 105 etp14b 14 100000 +Ethernet106 106 etp14c 14 100000 +Ethernet107 107 etp14d 14 100000 +Ethernet108 108 etp14e 14 100000 +Ethernet109 109 etp14f 14 100000 +Ethernet110 110 etp14g 14 100000 +Ethernet111 111 etp14h 14 100000 +Ethernet112 112 etp15a 15 100000 +Ethernet113 113 etp15b 15 100000 +Ethernet114 114 etp15c 15 100000 +Ethernet115 115 etp15d 15 100000 +Ethernet116 116 etp15e 15 100000 +Ethernet117 117 etp15f 15 100000 +Ethernet118 118 etp15g 15 100000 +Ethernet119 119 etp15h 15 100000 +Ethernet120 120 etp16a 16 100000 +Ethernet121 121 etp16b 16 100000 +Ethernet122 122 etp16c 16 100000 +Ethernet123 123 etp16d 16 100000 +Ethernet124 124 etp16e 16 100000 +Ethernet125 125 etp16f 16 100000 +Ethernet126 126 etp16g 16 100000 +Ethernet127 127 etp16h 16 100000 +Ethernet128 128 etp17a 17 100000 +Ethernet129 129 etp17b 17 100000 +Ethernet130 130 etp17c 17 100000 +Ethernet131 131 etp17d 17 100000 +Ethernet132 132 etp17e 17 100000 +Ethernet133 133 etp17f 17 100000 +Ethernet134 134 etp17g 17 100000 +Ethernet135 135 etp17h 17 100000 +Ethernet136 136 etp18a 18 100000 +Ethernet137 137 etp18b 18 100000 +Ethernet138 138 etp18c 18 100000 +Ethernet139 139 etp18d 18 100000 +Ethernet140 140 etp18e 18 100000 +Ethernet141 141 etp18f 18 100000 +Ethernet142 142 etp18g 18 100000 +Ethernet143 143 etp18h 18 100000 +Ethernet144 144 etp19a 19 100000 +Ethernet145 145 etp19b 19 100000 +Ethernet146 146 etp19c 19 100000 +Ethernet147 147 etp19d 19 100000 +Ethernet148 148 etp19e 19 100000 +Ethernet149 149 etp19f 19 100000 +Ethernet150 150 etp19g 19 100000 +Ethernet151 151 etp19h 19 100000 +Ethernet152 152 etp20a 20 100000 +Ethernet153 153 etp20b 20 100000 +Ethernet154 154 etp20c 20 100000 +Ethernet155 155 etp20d 20 100000 +Ethernet156 156 etp20e 20 100000 +Ethernet157 157 etp20f 20 100000 +Ethernet158 158 etp20g 20 100000 +Ethernet159 159 etp20h 20 100000 +Ethernet160 160 etp21a 21 100000 +Ethernet161 161 etp21b 21 100000 +Ethernet162 162 etp21c 21 100000 +Ethernet163 163 etp21d 21 100000 +Ethernet164 164 etp21e 21 100000 +Ethernet165 165 etp21f 21 100000 +Ethernet166 166 etp21g 21 100000 +Ethernet167 167 etp21h 21 100000 +Ethernet168 168 etp22a 22 100000 +Ethernet169 169 etp22b 22 100000 +Ethernet170 170 etp22c 22 100000 +Ethernet171 171 etp22d 22 100000 +Ethernet172 172 etp22e 22 100000 +Ethernet173 173 etp22f 22 100000 +Ethernet174 174 etp22g 22 100000 +Ethernet175 175 etp22h 22 100000 +Ethernet176 176 etp23a 23 100000 +Ethernet177 177 etp23b 23 100000 +Ethernet178 178 etp23c 23 100000 +Ethernet179 179 etp23d 23 100000 +Ethernet180 180 etp23e 23 100000 +Ethernet181 181 etp23f 23 100000 +Ethernet182 182 etp23g 23 100000 +Ethernet183 183 etp23h 23 100000 +Ethernet184 184 etp24a 24 100000 +Ethernet185 185 etp24b 24 100000 +Ethernet186 186 etp24c 24 100000 +Ethernet187 187 etp24d 24 100000 +Ethernet188 188 etp24e 24 100000 +Ethernet189 189 etp24f 24 100000 +Ethernet190 190 etp24g 24 100000 +Ethernet191 191 etp24h 24 100000 +Ethernet192 192 etp25a 25 100000 +Ethernet193 193 etp25b 25 100000 +Ethernet194 194 etp25c 25 100000 +Ethernet195 195 etp25d 25 100000 +Ethernet196 196 etp25e 25 100000 +Ethernet197 197 etp25f 25 100000 +Ethernet198 198 etp25g 25 100000 +Ethernet199 199 etp25h 25 100000 +Ethernet200 200 etp26a 26 100000 +Ethernet201 201 etp26b 26 100000 +Ethernet202 202 etp26c 26 100000 +Ethernet203 203 etp26d 26 100000 +Ethernet204 204 etp26e 26 100000 +Ethernet205 205 etp26f 26 100000 +Ethernet206 206 etp26g 26 100000 +Ethernet207 207 etp26h 26 100000 +Ethernet208 208 etp27a 27 100000 +Ethernet209 209 etp27b 27 100000 +Ethernet210 210 etp27c 27 100000 +Ethernet211 211 etp27d 27 100000 +Ethernet212 212 etp27e 27 100000 +Ethernet213 213 etp27f 27 100000 +Ethernet214 214 etp27g 27 100000 +Ethernet215 215 etp27h 27 100000 +Ethernet216 216 etp28a 28 100000 +Ethernet217 217 etp28b 28 100000 +Ethernet218 218 etp28c 28 100000 +Ethernet219 219 etp28d 28 100000 +Ethernet220 220 etp28e 28 100000 +Ethernet221 221 etp28f 28 100000 +Ethernet222 222 etp28g 28 100000 +Ethernet223 223 etp28h 28 100000 +Ethernet224 224 etp29a 29 100000 +Ethernet225 225 etp29b 29 100000 +Ethernet226 226 etp29c 29 100000 +Ethernet227 227 etp29d 29 100000 +Ethernet228 228 etp29e 29 100000 +Ethernet229 229 etp29f 29 100000 +Ethernet230 230 etp29g 29 100000 +Ethernet231 231 etp29h 29 100000 +Ethernet232 232 etp30a 30 100000 +Ethernet233 233 etp30b 30 100000 +Ethernet234 234 etp30c 30 100000 +Ethernet235 235 etp30d 30 100000 +Ethernet236 236 etp30e 30 100000 +Ethernet237 237 etp30f 30 100000 +Ethernet238 238 etp30g 30 100000 +Ethernet239 239 etp30h 30 100000 +Ethernet240 240 etp31a 31 100000 +Ethernet241 241 etp31b 31 100000 +Ethernet242 242 etp31c 31 100000 +Ethernet243 243 etp31d 31 100000 +Ethernet244 244 etp31e 31 100000 +Ethernet245 245 etp31f 31 100000 +Ethernet246 246 etp31g 31 100000 +Ethernet247 247 etp31h 31 100000 +Ethernet248 248 etp32a 32 100000 +Ethernet249 249 etp32b 32 100000 +Ethernet250 250 etp32c 32 100000 +Ethernet251 251 etp32d 32 100000 +Ethernet252 252 etp32e 32 100000 +Ethernet253 253 etp32f 32 100000 +Ethernet254 254 etp32g 32 100000 +Ethernet255 255 etp32h 32 100000 +Ethernet256 256 etp33a 33 100000 +Ethernet257 257 etp33b 33 100000 +Ethernet258 258 etp33c 33 100000 +Ethernet259 259 etp33d 33 100000 +Ethernet260 260 etp33e 33 100000 +Ethernet261 261 etp33f 33 100000 +Ethernet262 262 etp33g 33 100000 +Ethernet263 263 etp33h 33 100000 +Ethernet264 264 etp34a 34 100000 +Ethernet265 265 etp34b 34 100000 +Ethernet266 266 etp34c 34 100000 +Ethernet267 267 etp34d 34 100000 +Ethernet268 268 etp34e 34 100000 +Ethernet269 269 etp34f 34 100000 +Ethernet270 270 etp34g 34 100000 +Ethernet271 271 etp34h 34 100000 +Ethernet272 272 etp35a 35 100000 +Ethernet273 273 etp35b 35 100000 +Ethernet274 274 etp35c 35 100000 +Ethernet275 275 etp35d 35 100000 +Ethernet276 276 etp35e 35 100000 +Ethernet277 277 etp35f 35 100000 +Ethernet278 278 etp35g 35 100000 +Ethernet279 279 etp35h 35 100000 +Ethernet280 280 etp36a 36 100000 +Ethernet281 281 etp36b 36 100000 +Ethernet282 282 etp36c 36 100000 +Ethernet283 283 etp36d 36 100000 +Ethernet284 284 etp36e 36 100000 +Ethernet285 285 etp36f 36 100000 +Ethernet286 286 etp36g 36 100000 +Ethernet287 287 etp36h 36 100000 +Ethernet288 288 etp37a 37 100000 +Ethernet289 289 etp37b 37 100000 +Ethernet290 290 etp37c 37 100000 +Ethernet291 291 etp37d 37 100000 +Ethernet292 292 etp37e 37 100000 +Ethernet293 293 etp37f 37 100000 +Ethernet294 294 etp37g 37 100000 +Ethernet295 295 etp37h 37 100000 +Ethernet296 296 etp38a 38 100000 +Ethernet297 297 etp38b 38 100000 +Ethernet298 298 etp38c 38 100000 +Ethernet299 299 etp38d 38 100000 +Ethernet300 300 etp38e 38 100000 +Ethernet301 301 etp38f 38 100000 +Ethernet302 302 etp38g 38 100000 +Ethernet303 303 etp38h 38 100000 +Ethernet304 304 etp39a 39 100000 +Ethernet305 305 etp39b 39 100000 +Ethernet306 306 etp39c 39 100000 +Ethernet307 307 etp39d 39 100000 +Ethernet308 308 etp39e 39 100000 +Ethernet309 309 etp39f 39 100000 +Ethernet310 310 etp39g 39 100000 +Ethernet311 311 etp39h 39 100000 +Ethernet312 312 etp40a 40 100000 +Ethernet313 313 etp40b 40 100000 +Ethernet314 314 etp40c 40 100000 +Ethernet315 315 etp40d 40 100000 +Ethernet316 316 etp40e 40 100000 +Ethernet317 317 etp40f 40 100000 +Ethernet318 318 etp40g 40 100000 +Ethernet319 319 etp40h 40 100000 +Ethernet320 320 etp41a 41 100000 +Ethernet321 321 etp41b 41 100000 +Ethernet322 322 etp41c 41 100000 +Ethernet323 323 etp41d 41 100000 +Ethernet324 324 etp41e 41 100000 +Ethernet325 325 etp41f 41 100000 +Ethernet326 326 etp41g 41 100000 +Ethernet327 327 etp41h 41 100000 +Ethernet328 328 etp42a 42 100000 +Ethernet329 329 etp42b 42 100000 +Ethernet330 330 etp42c 42 100000 +Ethernet331 331 etp42d 42 100000 +Ethernet332 332 etp42e 42 100000 +Ethernet333 333 etp42f 42 100000 +Ethernet334 334 etp42g 42 100000 +Ethernet335 335 etp42h 42 100000 +Ethernet336 336 etp43a 43 100000 +Ethernet337 337 etp43b 43 100000 +Ethernet338 338 etp43c 43 100000 +Ethernet339 339 etp43d 43 100000 +Ethernet340 340 etp43e 43 100000 +Ethernet341 341 etp43f 43 100000 +Ethernet342 342 etp43g 43 100000 +Ethernet343 343 etp43h 43 100000 +Ethernet344 344 etp44a 44 100000 +Ethernet345 345 etp44b 44 100000 +Ethernet346 346 etp44c 44 100000 +Ethernet347 347 etp44d 44 100000 +Ethernet348 348 etp44e 44 100000 +Ethernet349 349 etp44f 44 100000 +Ethernet350 350 etp44g 44 100000 +Ethernet351 351 etp44h 44 100000 +Ethernet352 352 etp45a 45 100000 +Ethernet353 353 etp45b 45 100000 +Ethernet354 354 etp45c 45 100000 +Ethernet355 355 etp45d 45 100000 +Ethernet356 356 etp45e 45 100000 +Ethernet357 357 etp45f 45 100000 +Ethernet358 358 etp45g 45 100000 +Ethernet359 359 etp45h 45 100000 +Ethernet360 360 etp46a 46 100000 +Ethernet361 361 etp46b 46 100000 +Ethernet362 362 etp46c 46 100000 +Ethernet363 363 etp46d 46 100000 +Ethernet364 364 etp46e 46 100000 +Ethernet365 365 etp46f 46 100000 +Ethernet366 366 etp46g 46 100000 +Ethernet367 367 etp46h 46 100000 +Ethernet368 368 etp47a 47 100000 +Ethernet369 369 etp47b 47 100000 +Ethernet370 370 etp47c 47 100000 +Ethernet371 371 etp47d 47 100000 +Ethernet372 372 etp47e 47 100000 +Ethernet373 373 etp47f 47 100000 +Ethernet374 374 etp47g 47 100000 +Ethernet375 375 etp47h 47 100000 +Ethernet376 376 etp48a 48 100000 +Ethernet377 377 etp48b 48 100000 +Ethernet378 378 etp48c 48 100000 +Ethernet379 379 etp48d 48 100000 +Ethernet380 380 etp48e 48 100000 +Ethernet381 381 etp48f 48 100000 +Ethernet382 382 etp48g 48 100000 +Ethernet383 383 etp48h 48 100000 +Ethernet384 384 etp49a 49 100000 +Ethernet385 385 etp49b 49 100000 +Ethernet386 386 etp49c 49 100000 +Ethernet387 387 etp49d 49 100000 +Ethernet388 388 etp49e 49 100000 +Ethernet389 389 etp49f 49 100000 +Ethernet390 390 etp49g 49 100000 +Ethernet391 391 etp49h 49 100000 +Ethernet392 392 etp50a 50 100000 +Ethernet393 393 etp50b 50 100000 +Ethernet394 394 etp50c 50 100000 +Ethernet395 395 etp50d 50 100000 +Ethernet396 396 etp50e 50 100000 +Ethernet397 397 etp50f 50 100000 +Ethernet398 398 etp50g 50 100000 +Ethernet399 399 etp50h 50 100000 +Ethernet400 400 etp51a 51 100000 +Ethernet401 401 etp51b 51 100000 +Ethernet402 402 etp51c 51 100000 +Ethernet403 403 etp51d 51 100000 +Ethernet404 404 etp51e 51 100000 +Ethernet405 405 etp51f 51 100000 +Ethernet406 406 etp51g 51 100000 +Ethernet407 407 etp51h 51 100000 +Ethernet408 408 etp52a 52 100000 +Ethernet409 409 etp52b 52 100000 +Ethernet410 410 etp52c 52 100000 +Ethernet411 411 etp52d 52 100000 +Ethernet412 412 etp52e 52 100000 +Ethernet413 413 etp52f 52 100000 +Ethernet414 414 etp52g 52 100000 +Ethernet415 415 etp52h 52 100000 +Ethernet416 416 etp53a 53 100000 +Ethernet417 417 etp53b 53 100000 +Ethernet418 418 etp53c 53 100000 +Ethernet419 419 etp53d 53 100000 +Ethernet420 420 etp53e 53 100000 +Ethernet421 421 etp53f 53 100000 +Ethernet422 422 etp53g 53 100000 +Ethernet423 423 etp53h 53 100000 +Ethernet424 424 etp54a 54 100000 +Ethernet425 425 etp54b 54 100000 +Ethernet426 426 etp54c 54 100000 +Ethernet427 427 etp54d 54 100000 +Ethernet428 428 etp54e 54 100000 +Ethernet429 429 etp54f 54 100000 +Ethernet430 430 etp54g 54 100000 +Ethernet431 431 etp54h 54 100000 +Ethernet432 432 etp55a 55 100000 +Ethernet433 433 etp55b 55 100000 +Ethernet434 434 etp55c 55 100000 +Ethernet435 435 etp55d 55 100000 +Ethernet436 436 etp55e 55 100000 +Ethernet437 437 etp55f 55 100000 +Ethernet438 438 etp55g 55 100000 +Ethernet439 439 etp55h 55 100000 +Ethernet440 440 etp56a 56 100000 +Ethernet441 441 etp56b 56 100000 +Ethernet442 442 etp56c 56 100000 +Ethernet443 443 etp56d 56 100000 +Ethernet444 444 etp56e 56 100000 +Ethernet445 445 etp56f 56 100000 +Ethernet446 446 etp56g 56 100000 +Ethernet447 447 etp56h 56 100000 +Ethernet448 448 etp57a 57 100000 +Ethernet449 449 etp57b 57 100000 +Ethernet450 450 etp57c 57 100000 +Ethernet451 451 etp57d 57 100000 +Ethernet452 452 etp57e 57 100000 +Ethernet453 453 etp57f 57 100000 +Ethernet454 454 etp57g 57 100000 +Ethernet455 455 etp57h 57 100000 +Ethernet456 456 etp58a 58 100000 +Ethernet457 457 etp58b 58 100000 +Ethernet458 458 etp58c 58 100000 +Ethernet459 459 etp58d 58 100000 +Ethernet460 460 etp58e 58 100000 +Ethernet461 461 etp58f 58 100000 +Ethernet462 462 etp58g 58 100000 +Ethernet463 463 etp58h 58 100000 +Ethernet464 464 etp59a 59 100000 +Ethernet465 465 etp59b 59 100000 +Ethernet466 466 etp59c 59 100000 +Ethernet467 467 etp59d 59 100000 +Ethernet468 468 etp59e 59 100000 +Ethernet469 469 etp59f 59 100000 +Ethernet470 470 etp59g 59 100000 +Ethernet471 471 etp59h 59 100000 +Ethernet472 472 etp60a 60 100000 +Ethernet473 473 etp60b 60 100000 +Ethernet474 474 etp60c 60 100000 +Ethernet475 475 etp60d 60 100000 +Ethernet476 476 etp60e 60 100000 +Ethernet477 477 etp60f 60 100000 +Ethernet478 478 etp60g 60 100000 +Ethernet479 479 etp60h 60 100000 +Ethernet480 480 etp61a 61 100000 +Ethernet481 481 etp61b 61 100000 +Ethernet482 482 etp61c 61 100000 +Ethernet483 483 etp61d 61 100000 +Ethernet484 484 etp61e 61 100000 +Ethernet485 485 etp61f 61 100000 +Ethernet486 486 etp61g 61 100000 +Ethernet487 487 etp61h 61 100000 +Ethernet488 488 etp62a 62 100000 +Ethernet489 489 etp62b 62 100000 +Ethernet490 490 etp62c 62 100000 +Ethernet491 491 etp62d 62 100000 +Ethernet492 492 etp62e 62 100000 +Ethernet493 493 etp62f 62 100000 +Ethernet494 494 etp62g 62 100000 +Ethernet495 495 etp62h 62 100000 +Ethernet496 496 etp63a 63 100000 +Ethernet497 497 etp63b 63 100000 +Ethernet498 498 etp63c 63 100000 +Ethernet499 499 etp63d 63 100000 +Ethernet500 500 etp63e 63 100000 +Ethernet501 501 etp63f 63 100000 +Ethernet502 502 etp63g 63 100000 +Ethernet503 503 etp63h 63 100000 +Ethernet504 504 etp64a 64 100000 +Ethernet505 505 etp64b 64 100000 +Ethernet506 506 etp64c 64 100000 +Ethernet507 507 etp64d 64 100000 +Ethernet508 508 etp64e 64 100000 +Ethernet509 509 etp64f 64 100000 +Ethernet510 510 etp64g 64 100000 +Ethernet511 511 etp64h 64 100000 +Ethernet512 512 etp65 65 10000 +Ethernet520 520 etp66 66 10000 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/qos.json.j2 new file mode 120000 index 000000000000..462ffcd7e1f3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/qos.json.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai.profile b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai.profile new file mode 100644 index 000000000000..0b29739b9bdd --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai.profile @@ -0,0 +1,4 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/sai_5640_512x100g.xml +SAI_INDEPENDENT_MODULE_MODE=1 +SAI_KEY_SPC5_LOSSY_SCHEDULING=1 +SAI_DEFAULT_SWITCHING_MODE_STORE_FORWARD=1 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai_5640_512x100g.xml b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai_5640_512x100g.xml new file mode 100644 index 000000000000..79d74aadc8c5 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/Mellanox-SN5640-C512S2/sai_5640_512x100g.xml @@ -0,0 +1,632 @@ + + + + + + + + 00:02:03:04:05:00 + + + 0 + + + 66 + + + + + 481 + 8 + 0 + 3 + 1536 + 8 + true + + + 489 + 8 + 1 + 3 + 1536 + 8 + true + + + 505 + 8 + 2 + 3 + 1536 + 8 + true + + + 497 + 8 + 3 + 3 + 1536 + 8 + true + + + 449 + 8 + 4 + 3 + 1536 + 8 + true + + + 457 + 8 + 5 + 3 + 1536 + 8 + true + + + 473 + 8 + 6 + 3 + 1536 + 8 + true + + + 465 + 8 + 7 + 3 + 1536 + 8 + true + + + 417 + 8 + 8 + 3 + 1536 + 8 + true + + + 425 + 8 + 9 + 3 + 1536 + 8 + true + + + 441 + 8 + 10 + 3 + 1536 + 8 + true + + + 433 + 8 + 11 + 3 + 1536 + 8 + true + + + 385 + 8 + 12 + 3 + 1536 + 8 + true + + + 393 + 8 + 13 + 3 + 1536 + 8 + true + + + 409 + 8 + 14 + 3 + 1536 + 8 + true + + + 401 + 8 + 15 + 3 + 1536 + 8 + true + + + 361 + 8 + 16 + 3 + 1536 + 8 + true + + + 353 + 8 + 17 + 3 + 1536 + 8 + true + + + 369 + 8 + 18 + 3 + 1536 + 8 + true + + + 377 + 8 + 19 + 3 + 1536 + 8 + true + + + 329 + 8 + 20 + 3 + 1536 + 8 + true + + + 321 + 8 + 21 + 3 + 1536 + 8 + true + + + 337 + 8 + 22 + 3 + 1536 + 8 + true + + + 345 + 8 + 23 + 3 + 1536 + 8 + true + + + 297 + 8 + 24 + 3 + 1536 + 8 + true + + + 289 + 8 + 25 + 3 + 1536 + 8 + true + + + 305 + 8 + 26 + + + 3 + + + 1536 + 8 + true + + + 313 + 8 + 27 + 3 + 1536 + 8 + true + + + 265 + 8 + 28 + 3 + 1536 + 8 + true + + + 257 + 8 + 29 + 3 + 1536 + 8 + true + + + 273 + 8 + 30 + 3 + 1536 + 8 + true + + + 281 + 8 + 31 + 3 + 1536 + 8 + true + + + 25 + 8 + 32 + 3 + 1536 + 8 + true + + + 17 + 8 + 33 + 3 + 1536 + 8 + true + + + 1 + 8 + 34 + 3 + 1536 + 8 + true + + + 9 + 8 + 35 + 3 + 1536 + 8 + true + + + 57 + 8 + 36 + 3 + 1536 + 8 + true + + + 49 + 8 + 37 + 3 + 1536 + 8 + true + + + 33 + 8 + 38 + 3 + 1536 + 8 + true + + + 41 + 8 + 39 + 3 + 1536 + 8 + true + + + 89 + 8 + 40 + 3 + 1536 + 8 + true + + + 81 + 8 + 41 + 3 + 1536 + 8 + true + + + 65 + 8 + 42 + 3 + 1536 + 8 + true + + + 73 + 8 + 43 + 3 + 1536 + 8 + true + + + 121 + 8 + 44 + 3 + 1536 + 8 + true + + + 113 + 8 + 45 + 3 + 1536 + 8 + true + + + 97 + 8 + 46 + 3 + 1536 + 8 + true + + + 105 + 8 + 47 + 3 + 1536 + 8 + true + + + 145 + 8 + 48 + 3 + 1536 + 8 + true + + + 153 + 8 + 49 + 3 + 1536 + 8 + true + + + 137 + 8 + 50 + 3 + 1536 + 8 + true + + + 129 + 8 + 51 + 3 + 1536 + 8 + true + + + 177 + 8 + 52 + 3 + 1536 + 8 + true + + + 185 + 8 + 53 + 3 + 1536 + 8 + true + + + 169 + 8 + 54 + 3 + 1536 + 8 + true + + + 161 + 8 + 55 + 3 + 1536 + 8 + true + + + 209 + 8 + 56 + 3 + 1536 + 8 + true + + + 217 + 8 + 57 + 3 + 1536 + 8 + true + + + 201 + 8 + 58 + 3 + 1536 + 8 + true + + + 193 + 8 + 59 + 3 + 1536 + 8 + true + + + 241 + 8 + 60 + 3 + 1536 + 8 + true + + + 249 + 8 + 61 + 3 + 1536 + 8 + true + + + 233 + 8 + 62 + 3 + 1536 + 8 + true + + + 225 + 8 + 63 + 3 + 1536 + 8 + true + + + 513 + 1 + 64 + 0 + 64 + true + + + 515 + 1 + 65 + 0 + 64 + true + + + + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/default_sku b/device/mellanox/x86_64-nvidia_sn5640-r0/default_sku new file mode 100644 index 000000000000..1492363d1cfd --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/default_sku @@ -0,0 +1 @@ +Mellanox-SN5640-C512S2 t1 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/installer.conf b/device/mellanox/x86_64-nvidia_sn5640-r0/installer.conf new file mode 100644 index 000000000000..a6e41e7a871a --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/installer.conf @@ -0,0 +1 @@ +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="libata.force=noncq tpm_tis.interrupts=0 nosgx ima_hash=sha384 amd_iommu=off cpufreq.default_governor=performance" diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/pcie.yaml b/device/mellanox/x86_64-nvidia_sn5640-r0/pcie.yaml new file mode 100644 index 000000000000..2bb70eab38e3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/pcie.yaml @@ -0,0 +1,188 @@ +## +## SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +## Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +## SPDX-License-Identifier: 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: '1450' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Root Complex' +- bus: '00' + dev: '00' + fn: '2' + id: '1451' + name: 'IOMMU: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O + Memory Management Unit' +- bus: '00' + dev: '01' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: '01' + fn: '4' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + PCIe GPP Bridge' +- bus: '00' + dev: '02' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: '03' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: '04' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: 08 + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) + PCIe Dummy Host Bridge' +- bus: '00' + dev: 08 + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: '14' + fn: '0' + id: 790b + name: 'SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 59)' +- bus: '00' + dev: '14' + fn: '3' + id: 790e + name: 'ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)' +- bus: '00' + dev: '18' + fn: '0' + id: '1460' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 0' +- bus: '00' + dev: '18' + fn: '1' + id: '1461' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 1' +- bus: '00' + dev: '18' + fn: '2' + id: '1462' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 2' +- bus: '00' + dev: '18' + fn: '3' + id: '1463' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 3' +- bus: '00' + dev: '18' + fn: '4' + id: '1464' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 4' +- bus: '00' + dev: '18' + fn: '5' + id: '1465' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 5' +- bus: '00' + dev: '18' + fn: '6' + id: '1466' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 6' +- bus: '00' + dev: '18' + fn: '7' + id: '1467' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + Data Fabric: Device 18h; Function 7' +- bus: '01' + dev: '00' + fn: '0' + id: '5765' + name: 'Non-Volatile memory controller: Device 1f9f:5765 (rev 01)' +- bus: '02' + dev: '00' + fn: '0' + id: 145a + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] + Zeppelin/Raven/Raven2 PCIe Dummy Function' +- bus: '02' + dev: '00' + fn: '2' + id: '1456' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models + 00h-0fh) Platform Security Processor (PSP) 3.0 Device' +- bus: '02' + dev: '00' + fn: '3' + id: 145f + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 xHCI + Compliant Host Controller' +- bus: '03' + dev: '00' + fn: '0' + id: '1455' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] + Zeppelin/Renoir PCIe Dummy Function' +- bus: '03' + dev: '00' + fn: '1' + id: '1468' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Zeppelin Cryptographic + Coprocessor NTBCCP' +- bus: '03' + dev: '00' + fn: '3' + id: '1457' + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) + HD Audio Controller' +- bus: '03' + dev: '00' + fn: '4' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] XGMAC 10GbE Controller' diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/platform.json b/device/mellanox/x86_64-nvidia_sn5640-r0/platform.json new file mode 100644 index 000000000000..125ca03abd7d --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/platform.json @@ -0,0 +1,1344 @@ +{ + "chassis": { + "name": "SN5640", + "components": [ + { + "name": "ONIE" + }, + { + "name": "SSD" + }, + { + "name": "BIOS" + }, + { + "name": "CPLD1" + }, + { + "name": "CPLD2" + }, + { + "name": "CPLD3" + }, + { + "name": "CPLD4" + } + ], + "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" + } + ] + }, + { + "name": "drawer5", + "fans": [ + { + "name": "fan9" + }, + { + "name": "fan10" + } + ] + } + ], + "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" + } + ] + }, + { + "name": "PSU 3", + "fans": [ + { + "name": "psu3_fan1" + } + ], + "thermals": [ + { + "name": "PSU-3 Temp" + } + ] + }, + { + "name": "PSU 4", + "fans": [ + { + "name": "psu4_fan1" + } + ], + "thermals": [ + { + "name": "PSU-4 Temp" + } + ] + } + ], + "thermals": [ + { + "name": "ASIC" + }, + { + "name": "Ambient Fan Side Temp" + }, + { + "name": "Ambient Port Side Temp" + }, + { + "name": "CPU Pack Temp" + }, + { + "name": "SODIMM 2 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" + } + ] + }, + { + "name": "sfp65", + "thermals": [ + { + "name": "xSFP module 65 Temp" + } + ] + }, + { + "name": "sfp66", + "thermals": [ + { + "name": "xSFP module 66 Temp" + } + ] + } + ] + }, + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "0,1,2,3,4,5,6,7", + "breakout_modes": { + "1x400G": ["etp1"], + "2x400G[200G]": ["etp1a", "etp1b"], + "4x200G[100G]": ["etp1a", "etp1b", "etp1c", "etp1d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp2"], + "2x400G[200G]": ["etp2a", "etp2b"], + "4x200G[100G]": ["etp2a", "etp2b", "etp2c", "etp2d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp3"], + "2x400G[200G]": ["etp3a", "etp3b"], + "4x200G[100G]": ["etp3a", "etp3b", "etp3c", "etp3d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp4"], + "2x400G[200G]": ["etp4a", "etp4b"], + "4x200G[100G]": ["etp4a", "etp4b", "etp4c", "etp4d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp5"], + "2x400G[200G]": ["etp5a", "etp5b"], + "4x200G[100G]": ["etp5a", "etp5b", "etp5c", "etp5d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp6"], + "2x400G[200G]": ["etp6a", "etp6b"], + "4x200G[100G]": ["etp6a", "etp6b", "etp6c", "etp6d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp7"], + "2x400G[200G]": ["etp7a", "etp7b"], + "4x200G[100G]": ["etp7a", "etp7b", "etp7c", "etp7d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp8"], + "2x400G[200G]": ["etp8a", "etp8b"], + "4x200G[100G]": ["etp8a", "etp8b", "etp8c", "etp8d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp9"], + "2x400G[200G]": ["etp9a", "etp9b"], + "4x200G[100G]": ["etp9a", "etp9b", "etp9c", "etp9d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp10"], + "2x400G[200G]": ["etp10a", "etp10b"], + "4x200G[100G]": ["etp10a", "etp10b", "etp10c", "etp10d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp11"], + "2x400G[200G]": ["etp11a", "etp11b"], + "4x200G[100G]": ["etp11a", "etp11b", "etp11c", "etp11d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp12"], + "2x400G[200G]": ["etp12a", "etp12b"], + "4x200G[100G]": ["etp12a", "etp12b", "etp12c", "etp12d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp13"], + "2x400G[200G]": ["etp13a", "etp13b"], + "4x200G[100G]": ["etp13a", "etp13b", "etp13c", "etp13d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp14"], + "2x400G[200G]": ["etp14a", "etp14b"], + "4x200G[100G]": ["etp14a", "etp14b", "etp14c", "etp14d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp15"], + "2x400G[200G]": ["etp15a", "etp15b"], + "4x200G[100G]": ["etp15a", "etp15b", "etp15c", "etp15d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp16"], + "2x400G[200G]": ["etp16a", "etp16b"], + "4x200G[100G]": ["etp16a", "etp16b", "etp16c", "etp16d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp17"], + "2x400G[200G]": ["etp17a", "etp17b"], + "4x200G[100G]": ["etp17a", "etp17b", "etp17c", "etp17d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp18"], + "2x400G[200G]": ["etp18a", "etp18b"], + "4x200G[100G]": ["etp18a", "etp18b", "etp18c", "etp18d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp19"], + "2x400G[200G]": ["etp19a", "etp19b"], + "4x200G[100G]": ["etp19a", "etp19b", "etp19c", "etp19d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp20"], + "2x400G[200G]": ["etp20a", "etp20b"], + "4x200G[100G]": ["etp20a", "etp20b", "etp20c", "etp20d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp21"], + "2x400G[200G]": ["etp21a", "etp21b"], + "4x200G[100G]": ["etp21a", "etp21b", "etp21c", "etp21d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp22"], + "2x400G[200G]": ["etp22a", "etp22b"], + "4x200G[100G]": ["etp22a", "etp22b", "etp22c", "etp22d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp23"], + "2x400G[200G]": ["etp23a", "etp23b"], + "4x200G[100G]": ["etp23a", "etp23b", "etp23c", "etp23d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp24"], + "2x400G[200G]": ["etp24a", "etp24b"], + "4x200G[100G]": ["etp24a", "etp24b", "etp24c", "etp24d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp25"], + "2x400G[200G]": ["etp25a", "etp25b"], + "4x200G[100G]": ["etp25a", "etp25b", "etp25c", "etp25d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp26"], + "2x400G[200G]": ["etp26a", "etp26b"], + "4x200G[100G]": ["etp26a", "etp26b", "etp26c", "etp26d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp27"], + "2x400G[200G]": ["etp27a", "etp27b"], + "4x200G[100G]": ["etp27a", "etp27b", "etp27c", "etp27d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp28"], + "2x400G[200G]": ["etp28a", "etp28b"], + "4x200G[100G]": ["etp28a", "etp28b", "etp28c", "etp28d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp29"], + "2x400G[200G]": ["etp29a", "etp29b"], + "4x200G[100G]": ["etp29a", "etp29b", "etp29c", "etp29d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp30"], + "2x400G[200G]": ["etp30a", "etp30b"], + "4x200G[100G]": ["etp30a", "etp30b", "etp30c", "etp30d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp31"], + "2x400G[200G]": ["etp31a", "etp31b"], + "4x200G[100G]": ["etp31a", "etp31b", "etp31c", "etp31d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp32"], + "2x400G[200G]": ["etp32a", "etp32b"], + "4x200G[100G]": ["etp32a", "etp32b", "etp32c", "etp32d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp33"], + "2x400G[200G]": ["etp33a", "etp33b"], + "4x200G[100G]": ["etp33a", "etp33b", "etp33c", "etp33d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp34"], + "2x400G[200G]": ["etp34a", "etp34b"], + "4x200G[100G]": ["etp34a", "etp34b", "etp34c", "etp34d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp35"], + "2x400G[200G]": ["etp35a", "etp35b"], + "4x200G[100G]": ["etp35a", "etp35b", "etp35c", "etp35d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp36"], + "2x400G[200G]": ["etp36a", "etp36b"], + "4x200G[100G]": ["etp36a", "etp36b", "etp36c", "etp36d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp37"], + "2x400G[200G]": ["etp37a", "etp37b"], + "4x200G[100G]": ["etp37a", "etp37b", "etp37c", "etp37d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp38"], + "2x400G[200G]": ["etp38a", "etp38b"], + "4x200G[100G]": ["etp38a", "etp38b", "etp38c", "etp38d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp39"], + "2x400G[200G]": ["etp39a", "etp39b"], + "4x200G[100G]": ["etp39a", "etp39b", "etp39c", "etp39d" ], + "8x100G[50G]": ["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": { + "1x400G": ["etp40"], + "2x400G[200G]": ["etp40a", "etp40b"], + "4x200G[100G]": ["etp40a", "etp40b", "etp40c", "etp40d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp41"], + "2x400G[200G]": ["etp41a", "etp41b"], + "4x200G[100G]": ["etp41a", "etp41b", "etp41c", "etp41d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp42"], + "2x400G[200G]": ["etp42a", "etp42b"], + "4x200G[100G]": ["etp42a", "etp42b", "etp42c", "etp42d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp43"], + "2x400G[200G]": ["etp43a", "etp43b"], + "4x200G[100G]": ["etp43a", "etp43b", "etp43c", "etp43d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp44"], + "2x400G[200G]": ["etp44a", "etp44b"], + "4x200G[100G]": ["etp44a", "etp44b", "etp44c", "etp44d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp45"], + "2x400G[200G]": ["etp45a", "etp45b"], + "4x200G[100G]": ["etp45a", "etp45b", "etp45c", "etp45d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp46"], + "2x400G[200G]": ["etp46a", "etp46b"], + "4x200G[100G]": ["etp46a", "etp46b", "etp46c", "etp46d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp47"], + "2x400G[200G]": ["etp47a", "etp47b"], + "4x200G[100G]": ["etp47a", "etp47b", "etp47c", "etp47d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp48"], + "2x400G[200G]": ["etp48a", "etp48b"], + "4x200G[100G]": ["etp48a", "etp48b", "etp48c", "etp48d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp49"], + "2x400G[200G]": ["etp49a", "etp49b"], + "4x200G[100G]": ["etp49a", "etp49b", "etp49c", "etp49d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp50"], + "2x400G[200G]": ["etp50a", "etp50b"], + "4x200G[100G]": ["etp50a", "etp50b", "etp50c", "etp50d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp51"], + "2x400G[200G]": ["etp51a", "etp51b"], + "4x200G[100G]": ["etp51a", "etp51b", "etp51c", "etp51d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp52"], + "2x400G[200G]": ["etp52a", "etp52b"], + "4x200G[100G]": ["etp52a", "etp52b", "etp52c", "etp52d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp53"], + "2x400G[200G]": ["etp53a", "etp53b"], + "4x200G[100G]": ["etp53a", "etp53b", "etp53c", "etp53d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp54"], + "2x400G[200G]": ["etp54a", "etp54b"], + "4x200G[100G]": ["etp54a", "etp54b", "etp54c", "etp54d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp55"], + "2x400G[200G]": ["etp55a", "etp55b"], + "4x200G[100G]": ["etp55a", "etp55b", "etp55c", "etp55d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp56"], + "2x400G[200G]": ["etp56a", "etp56b"], + "4x200G[100G]": ["etp56a", "etp56b", "etp56c", "etp56d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp57"], + "2x400G[200G]": ["etp57a", "etp57b"], + "4x200G[100G]": ["etp57a", "etp57b", "etp57c", "etp57d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp58"], + "2x400G[200G]": ["etp58a", "etp58b"], + "4x200G[100G]": ["etp58a", "etp58b", "etp58c", "etp58d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp59"], + "2x400G[200G]": ["etp59a", "etp59b"], + "4x200G[100G]": ["etp59a", "etp59b", "etp59c", "etp59d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp60"], + "2x400G[200G]": ["etp60a", "etp60b"], + "4x200G[100G]": ["etp60a", "etp60b", "etp60c", "etp60d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp61"], + "2x400G[200G]": ["etp61a", "etp61b"], + "4x200G[100G]": ["etp61a", "etp61b", "etp61c", "etp61d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp62"], + "2x400G[200G]": ["etp62a", "etp62b"], + "4x200G[100G]": ["etp62a", "etp62b", "etp62c", "etp62d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp63"], + "2x400G[200G]": ["etp63a", "etp63b"], + "4x200G[100G]": ["etp63a", "etp63b", "etp63c", "etp63d"], + "8x100G[50G]": ["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": { + "1x400G": ["etp64"], + "2x400G[200G]": ["etp64a", "etp64b"], + "4x200G[100G]": ["etp64a", "etp64b", "etp64c", "etp64d"], + "8x100G[50G]": ["etp64a", "etp64b", "etp64c", "etp64d", "etp64e", "etp64f", "etp64g", "etp64h"] + } + }, + "Ethernet512": { + "index": "65", + "lanes": "512", + "breakout_modes": { + "1x25G[10G]": ["etp65"] + } + }, + "Ethernet520": { + "index": "66", + "lanes": "520", + "breakout_modes": { + "1x25G[10G]": ["etp66"] + } + } + } +} + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/platform_asic b/device/mellanox/x86_64-nvidia_sn5640-r0/platform_asic new file mode 100644 index 000000000000..70c074885557 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/platform_asic @@ -0,0 +1 @@ +mellanox diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/platform_components.json b/device/mellanox/x86_64-nvidia_sn5640-r0/platform_components.json new file mode 100644 index 000000000000..1d29ad73b424 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/platform_components.json @@ -0,0 +1,15 @@ +{ + "chassis": { + "SN5640": { + "component": { + "ONIE": { }, + "SSD": { }, + "BIOS": { }, + "CPLD1": { }, + "CPLD2": { }, + "CPLD3": { }, + "CPLD4": { } + } + } + } +} diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/platform_wait b/device/mellanox/x86_64-nvidia_sn5640-r0/platform_wait new file mode 120000 index 000000000000..4b30bd429854 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-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_sn5640-r0/pmon_daemon_control.json b/device/mellanox/x86_64-nvidia_sn5640-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..fefdfb327396 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/pmon_daemon_control.json @@ -0,0 +1,6 @@ +{ + "skip_ledd": true, + "skip_fancontrol": true, + "skip_xcvrd_cmis_mgr": true +} + diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/pmon_immediate_start b/device/mellanox/x86_64-nvidia_sn5640-r0/pmon_immediate_start new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/pre_reboot_hook b/device/mellanox/x86_64-nvidia_sn5640-r0/pre_reboot_hook new file mode 120000 index 000000000000..6fc31078ee86 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/pre_reboot_hook @@ -0,0 +1 @@ +../x86_64-mlnx_msn2700-r0/pre_reboot_hook \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors.json b/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors.json new file mode 120000 index 000000000000..5816694317d6 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors.json @@ -0,0 +1 @@ +../x86_64-mlnx_msn2700-r0/psu_sensors.json \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors_conf_updater b/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors_conf_updater new file mode 120000 index 000000000000..b9686d838e0f --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/psu_sensors_conf_updater @@ -0,0 +1 @@ +../x86_64-mlnx_msn2700-r0/psu_sensors_conf_updater \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/sensors.conf b/device/mellanox/x86_64-nvidia_sn5640-r0/sensors.conf new file mode 100644 index 000000000000..209768788ac3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/sensors.conf @@ -0,0 +1,494 @@ +################################################################################## +# Copyright (c) 2019-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Platform specific sensors config for SN5640 +################################################################################## + +# ASIC temperature sensor +chip "mlxsw-i2c-*-48" + label temp1 "Ambient ASIC Temp" + +# Fan and port ambient temperature sensors +chip "tmp102-i2c-*-49" + label temp1 "Ambient Fan Side Temp (air exhaust)" +chip "adt75-i2c-*-49" + label temp1 "Ambient Fan Side Temp (air exhaust)" +chip "stts751-i2c-*-49" + label temp1 "Ambient Fan Side Temp (air exhaust)" +chip "tmp102-i2c-*-4a" + label temp1 "Ambient Port Side Temp (air intake)" +chip "adt75-i2c-*-4a" + label temp1 "Ambient Port Side Temp (air intake)" +chip "stts751-i2c-*-4a" + label temp1 "Ambient Port Side Temp (air intake)" + +# ASIC power controllers +chip "mp2891-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 "xdpe1a2g7-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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 "xdpe1a2g7-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" + ignore temp2 + 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 "mp2891-i2c-*-6c" + 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" + ignore temp2 + 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 "xdpe1a2g7-i2c-*-6c" + 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" + ignore temp2 + 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 "mp2891-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" + ignore temp2 + 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 +chip "xdpe1a2g7-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" + ignore temp2 + 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-*-59" + label in1 "PSU-1(L) 220V Rail (in)" + ignore in2 + label in3 "PSU-1(L) 12V Rail (out)" + ignore fan2 + ignore fan3 + 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)" + set power2_cap 0 +chip "dps460-i2c-*-58" + label in1 "PSU-2(L) 220V Rail (in)" + ignore in2 + label in3 "PSU-2(L) 12V Rail (out)" + ignore fan2 + ignore fan3 + label fan1 "PSU-2(L) Fan 1" + label temp1 "PSU-2(L) Temp 1" + label temp2 "PSU-2(R) Temp 2" + label temp3 "PSU-2(L) Temp 3" + label power1 "PSU-2(L) 220V Rail Pwr (in)" + label power2 "PSU-2(L) 12V Rail Pwr (out)" + label curr1 "PSU-2(L) 220V Rail Curr (in)" + label curr2 "PSU-2(L) 12V Rail Curr (out)" + set power2_cap 0 +chip "dps460-i2c-*-5b" + label in1 "PSU-3(R) 220V Rail (in)" + ignore in2 + label in3 "PSU-3(R) 12V Rail (out)" + ignore fan2 + ignore fan3 + label fan1 "PSU-3(R) Fan 1" + label temp1 "PSU-3(R) Temp 1" + label temp2 "PSU-3(R) Temp 2" + label temp3 "PSU-3(R) Temp 3" + label power1 "PSU-3(R) 220V Rail Pwr (in)" + label power2 "PSU-3(R) 12V Rail Pwr (out)" + label curr1 "PSU-3(R) 220V Rail Curr (in)" + label curr2 "PSU-3(R) 12V Rail Curr (out)" + set power2_cap 0 +chip "dps460-i2c-*-5a" + label in1 "PSU-4(R) 220V Rail (in)" + ignore in2 + label in3 "PSU-4(R) 12V Rail (out)" + ignore fan2 + ignore fan3 + label fan1 "PSU-4(R) Fan 1" + label temp1 "PSU-4(R) Temp 1" + label temp2 "PSU-4(R) Temp 2" + label temp3 "PSU-4(R) Temp 3" + label power1 "PSU-4(R) 220V Rail Pwr (in)" + label power2 "PSU-4(R) 12V Rail Pwr (out)" + label curr1 "PSU-4(R) 220V Rail Curr (in)" + label curr2 "PSU-4(R) 12V Rail Curr (out)" + set power2_cap 0 + +# AMD Comex Power controllers +chip "mp2855-i2c-*-69" + label in1 "PMIC-12 COMEX (in) VDDCR INPUT VOLT" + label in2 "PMIC-12 COMEX (out) VDDCR_CPU VOLT" + label in3 "PMIC-12 COMEX (out2) VDDCR_SOC VOLT" + label temp1 "PMIC-12 COMEX VDDCR_CPU PHASE TEMP" + label temp2 "PMIC-12 COMEX VDDCR_SOC PHASE TEMP" + label curr1 "PMIC-12 COMEX VDDCR_CPU CURR" + label curr2 "PMIC-12 COMEX VDDCR_SOC CURR" + +chip "mp2975-i2c-*-6a" + label in1 "PMIC-13 COMEX VDD_MEM INPUT VOLT" + label in2 "PMIC-13 COMEX VDD_MEM OUTPUT VOLT" + label temp1 "PMIC-13 COMEX VDD_MEM PHASE TEMP" + label curr1 "PMIC-13 COMEX VDD_MEM INPUT CURR" + label curr2 "PMIC-13 COMEX VDD_MEM OUTPUT CURR" + ignore curr3 + ignore curr4 + label power1 "PMIC-13 COMEX VDD_MEM INPUT POWER" + label power2 "PMIC-13 COMEX VDD_MEM OUTPUT POWER" + +# AMD Comex SODIMM temperature sensors +chip "jc42-i2c-*-1a" + label temp1 "SODIMM1 Temp" + +chip "jc42-i2c-*-1b" + label temp1 "SODIMM2 Temp" + +chip "jc42-i2c-*-1e" + label temp1 "SODIMM3 Temp" + +chip "jc42-i2c-*-1f" + label temp1 "SODIMM4 Temp" + +# AMD Comex CPU temperature sensor +chip "k10temp-pci-*" + label temp1 "CPU PACKAGE TEMP" + label temp2 "CPU DIE0 TEMP" + +# NVME SSD temperature sensor +chip "nvme-pci-*" + label temp1 "SSD Temp" + ignore temp2 + ignore temp3 + +# Ethernet PHY temperature sensor +chip "00000400400-mdio-4" + label temp1 "Eth Phy Temp" diff --git a/device/mellanox/x86_64-nvidia_sn5640-r0/system_health_monitoring_config.json b/device/mellanox/x86_64-nvidia_sn5640-r0/system_health_monitoring_config.json new file mode 120000 index 000000000000..98df66c27ca5 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-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_sn5640-r0/thermal_policy.json b/device/mellanox/x86_64-nvidia_sn5640-r0/thermal_policy.json new file mode 120000 index 000000000000..5a25cd87f70c --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5640-r0/thermal_policy.json @@ -0,0 +1 @@ +../x86_64-mlnx_msn2700-r0/thermal_policy.json \ No newline at end of file diff --git a/platform/mellanox/asic_table.j2 b/platform/mellanox/asic_table.j2 index 4547f07fb318..b5fedda9c7d5 100644 --- a/platform/mellanox/asic_table.j2 +++ b/platform/mellanox/asic_table.j2 @@ -1,5 +1,6 @@ {# - Copyright (c) 2020-2024 NVIDIA CORPORATION & AFFILIATES. + SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES + Copyright (c) 2020-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); @@ -51,6 +52,7 @@ 'x86_64-nvidia_sn5400_simx-r0':'MELLANOX-SPECTRUM-4', 'x86_64-nvidia_sn5600_simx-r0':'MELLANOX-SPECTRUM-4', 'x86_64-nvidia_sn4280-r0':'MELLANOX-SPECTRUM-3', + 'x86_64-nvidia_sn5640-r0':'MELLANOX-SPECTRUM-5', 'x86_64-nvidia_sn5640_simx-r0':'MELLANOX-SPECTRUM-5', 'vs-platform':'vs' } diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py b/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py index a32bdde4596e..d53e60c9f817 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py @@ -180,6 +180,16 @@ class DpuInterfaceEnum(Enum): 'fw_control_ports': [64, 65] # 0 based sfp index list } }, + 'x86_64-nvidia_sn5640-r0': { + 'thermal': { + "capability": { + "comex_amb": False + } + }, + 'sfp': { + 'fw_control_ports': [64, 65] # 0 based sfp index list + } + }, 'x86_64-nvidia_sn5640_simx-r0': { 'thermal': { "capability": { @@ -392,16 +402,16 @@ def get_watchdog_max_period(cls): return DEFAULT_WD_PERIOD return watchdog_data.get('max_period', None) - + @classmethod @utils.read_only_cache() def get_always_fw_control_ports(cls): platform_data = DEVICE_DATA.get(cls.get_platform_name()) if not platform_data: return None - + sfp_data = platform_data.get('sfp') if not sfp_data: return None - + return sfp_data.get('fw_control_ports') From dba5999650f7f093d5781b8032b800c14ac105bc Mon Sep 17 00:00:00 2001 From: Noa Or <58519608+noaOrMlnx@users.noreply.github.com> Date: Wed, 19 Feb 2025 09:20:56 +0200 Subject: [PATCH 17/47] [Mellanox] Update DSCP mapping for SN5600, SN5610 SKUs (#21762) - Why I did it To have DSCP mapping updated to Mellanox SN5600, SN5610N SKUs - How I did it Update buffers_defaults_objects.j2 and qos.json.j2 according to new DSCP mapping - How to verify it Check SDK dumps to make sure values are correct --- .../buffers_defaults_objects.j2 | 8 +- .../Mellanox-SN5600-C256S1/qos.json.j2 | 102 ++++----- .../buffers_defaults_objects.j2 | 2 +- .../Mellanox-SN5610N-C224O8/qos.json.j2 | 2 +- .../buffers_defaults_objects.j2 | 214 +----------------- .../Mellanox-SN5610N-C256S2/qos.json.j2 | 171 +------------- 6 files changed, 59 insertions(+), 440 deletions(-) mode change 100644 => 120000 device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 mode change 100644 => 120000 device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 index bc5f29232636..b0400cbccf2c 100644 --- a/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 +++ b/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 @@ -155,22 +155,22 @@ }, {% endfor %} {% for port in port_names_active.split(',') %} - "{{ port }}|1-2": { + "{{ port }}|1-3": { "profile" : "q_lossy_minus_7_profile" }, {% endfor %} {% for port in port_names_active.split(',') %} - "{{ port }}|3": { + "{{ port }}|4": { "profile" : "q_lossy_profile" }, {% endfor %} {% for port in port_names_active.split(',') %} - "{{ port }}|4": { + "{{ port }}|5": { "profile" : "q_lossy_minus_3_profile" }, {% endfor %} {% for port in port_names_active.split(',') %} - "{{ port }}|5-6": { + "{{ port }}|6": { "profile" : "q_lossy_profile" }{% if not loop.last %},{% endif %} diff --git a/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 index 99f048a1cd90..e9f6868a40d9 100644 --- a/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 +++ b/device/mellanox/x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 @@ -16,47 +16,47 @@ {%- macro generate_dscp_to_tc_map_per_sku() -%} "DSCP_TO_TC_MAP": { "AZURE": { - "0" : "6", + "0" : "0", "1" : "1", - "2" : "2", - "3" : "3", - "4" : "3", - "5" : "4", - "6" : "5", + "2" : "1", + "3" : "2", + "4" : "2", + "5" : "3", + "6" : "3", "7" : "0", "8" : "0", "9" : "0", "10": "0", - "11": "0", - "12": "0", - "13": "0", - "14": "0", - "15": "0", - "16": "0", - "17": "0", - "18": "0", - "19": "0", - "20": "0", - "21": "0", - "22": "0", - "23": "0", - "24": "0", - "25": "0", - "26": "0", - "27": "0", - "28": "0", - "29": "0", - "30": "0", - "31": "0", - "32": "0", - "33": "0", - "34": "0", - "35": "0", - "36": "0", - "37": "0", - "38": "0", - "39": "0", - "40": "0", + "11": "4", + "12": "4", + "13": "4", + "14": "4", + "15": "4", + "16": "4", + "17": "4", + "18": "4", + "19": "4", + "20": "4", + "21": "4", + "22": "4", + "23": "4", + "24": "4", + "25": "4", + "26": "4", + "27": "4", + "28": "4", + "29": "4", + "30": "4", + "31": "5", + "32": "5", + "33": "5", + "34": "5", + "35": "5", + "36": "5", + "37": "5", + "38": "5", + "39": "5", + "40": "5", "41": "0", "42": "0", "43": "0", @@ -100,46 +100,46 @@ {%- macro generate_scheduler_per_sku() -%} "SCHEDULER": { - "scheduler.1": { + "scheduler.4": { "type" : "DWRR", - "weight": "1" + "weight": "4" }, - "scheduler.10": { + "scheduler.8": { "type" : "DWRR", - "weight": "10" + "weight": "8" }, - "scheduler.12": { + "scheduler.18": { "type" : "DWRR", - "weight": "12" + "weight": "18" }, - "scheduler.32": { + "scheduler.22": { "type" : "DWRR", - "weight": "32" + "weight": "22" } }, {%- endmacro -%} {%- macro generate_single_queue_per_sku(port) -%} "{{ port }}|0": { - "scheduler": "scheduler.1" + "scheduler": "scheduler.4" }, "{{ port }}|1": { - "scheduler": "scheduler.10" + "scheduler": "scheduler.8" }, "{{ port }}|2": { - "scheduler": "scheduler.12" + "scheduler": "scheduler.18" }, "{{ port }}|3": { - "scheduler": "scheduler.12" + "scheduler": "scheduler.22" }, "{{ port }}|4": { - "scheduler": "scheduler.32" + "scheduler": "scheduler.22" }, "{{ port }}|5": { - "scheduler": "scheduler.32" + "scheduler": "scheduler.22" }, "{{ port }}|6": { - "scheduler": "scheduler.1" + "scheduler": "scheduler.4" } {%- endmacro -%} diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/buffers_defaults_objects.j2 index 2f04a30b0415..e404fb0aae10 120000 --- a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/buffers_defaults_objects.j2 +++ b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/buffers_defaults_objects.j2 @@ -1 +1 @@ -../Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 \ No newline at end of file +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/qos.json.j2 index c7fe6816246a..462ffcd7e1f3 120000 --- a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/qos.json.j2 +++ b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C224O8/qos.json.j2 @@ -1 +1 @@ -../Mellanox-SN5610N-C256S2/qos.json.j2 \ No newline at end of file +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 deleted file mode 100644 index ea5630e0446d..000000000000 --- a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 +++ /dev/null @@ -1,213 +0,0 @@ -{# - SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES - Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - 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. -#} - -{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %} - "BUFFER_POOL": { - {% if dynamic_mode is not defined and port_names_inactive|length > 0 -%} - "ingress_zero_pool" : { - "mode": "static", - "type": "ingress", - "size": "0" - }, - {% endif -%} - "ingress_lossless_pool": { - {% if dynamic_mode is not defined -%} - "size": "{{ ingress_lossless_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": { - {% if dynamic_mode is not defined and port_names_inactive|length > 0 -%} - "ingress_lossy_pg_zero_profile" : { - "pool":"ingress_zero_pool", - "size":"0", - "static_th":"0" - }, - "ingress_lossless_zero_profile" : { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"-8" - }, - "egress_lossless_zero_profile" : { - "pool":"egress_lossless_pool", - "size":"0", - "dynamic_th":"-8" - }, - "egress_lossy_zero_profile" : { - "pool":"egress_lossy_pool", - "size":"0", - "dynamic_th":"-8" - }, - {% endif -%} - "ingress_lossy_profile": { - "pool":"ingress_lossless_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":"0" - }, - "q_lossy_minus_7_profile": { - "pool": "egress_lossy_pool", - "size": "0", - "dynamic_th" : "-7" - }, - "q_lossy_minus_3_profile": { - "pool": "egress_lossy_pool", - "size": "0", - "dynamic_th" : "-3" - } - }, -{%- endmacro %} - -{%- macro generate_profile_lists(port_names_active, port_names_inactive) %} - "BUFFER_PORT_INGRESS_PROFILE_LIST": { -{% for port in port_names_active.split(',') %} - "{{ port }}": { - "profile_list" : "ingress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% if port_names_inactive|length > 0 %} -, -{% for port in port_names_inactive.split(',') %} - "{{ port }}": { -{% if dynamic_mode is defined %} - "profile_list" : "ingress_lossy_profile" -{% else %} - "profile_list" : "ingress_lossless_zero_profile" -{% endif %} - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% endif %} - }, - "BUFFER_PORT_EGRESS_PROFILE_LIST": { -{% for port in port_names_active.split(',') %} - "{{ port }}": { - "profile_list" : "egress_lossless_profile,egress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% if port_names_inactive|length > 0 %} -, -{% for port in port_names_inactive.split(',') %} - "{{ port }}": { -{% if dynamic_mode is defined %} - "profile_list" : "egress_lossless_profile,egress_lossy_profile" -{% else %} - "profile_list" : "egress_lossless_zero_profile,egress_lossy_zero_profile" -{% endif %} - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% endif %} - } -{%- endmacro %} - -{%- macro generate_queue_buffers(port_names_active, port_names_inactive) %} - "BUFFER_QUEUE": { -{% if dynamic_mode is not defined %} -{% for port in port_names_active.split(',') %} - "{{ port }}|0": { - "profile" : "q_lossy_profile" - }, -{% endfor %} -{% for port in port_names_active.split(',') %} - "{{ port }}|1-2": { - "profile" : "q_lossy_minus_7_profile" - }, -{% endfor %} -{% for port in port_names_active.split(',') %} - "{{ port }}|3": { - "profile" : "q_lossy_profile" - }, -{% endfor %} -{% for port in port_names_active.split(',') %} - "{{ port }}|4": { - "profile" : "q_lossy_minus_3_profile" - }, -{% endfor %} -{% for port in port_names_active.split(',') %} - "{{ port }}|5-6": { - "profile" : "q_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% if port_names_inactive|length > 0 %} -{% for port in port_names_inactive.split(',') %} - {%- if loop.first -%},{%- endif -%} - "{{ port }}|1-6": { - "profile" : "egress_lossy_zero_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% endif %} -{% endif %} - } -{%- endmacro %} - -{%- macro generate_pg_profiles(port_names_active, port_names_inactive) %} - "BUFFER_PG": { -{% for port in port_names_active.split(',') %} - "{{ port }}|0": { - "profile" : "ingress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% if port_names_inactive|length > 0 %} -{%- for port in port_names_inactive.split(',') %} - {%- if loop.first -%},{%- endif -%} - "{{ port }}|0": { -{% if dynamic_mode is defined %} - "profile" : "ingress_lossy_profile" -{% else %} - "profile" : "ingress_lossy_pg_zero_profile" -{% endif %} - }{% if not loop.last %},{% endif %} - -{% endfor %} -{% endif %} - } -{%- endmacro %} diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 new file mode 120000 index 000000000000..e404fb0aae10 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/buffers_defaults_objects.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/buffers_defaults_objects.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 deleted file mode 100644 index 6acecb954a6e..000000000000 --- a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 +++ /dev/null @@ -1,170 +0,0 @@ -{# - SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES - Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - 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. -#} - -{%- macro generate_dscp_to_tc_map_per_sku() -%} - "DSCP_TO_TC_MAP": { - "AZURE": { - "0" : "6", - "1" : "1", - "2" : "2", - "3" : "3", - "4" : "3", - "5" : "4", - "6" : "5", - "7" : "0", - "8" : "0", - "9" : "0", - "10": "0", - "11": "0", - "12": "0", - "13": "0", - "14": "0", - "15": "0", - "16": "0", - "17": "0", - "18": "0", - "19": "0", - "20": "0", - "21": "0", - "22": "0", - "23": "0", - "24": "0", - "25": "0", - "26": "0", - "27": "0", - "28": "0", - "29": "0", - "30": "0", - "31": "0", - "32": "0", - "33": "0", - "34": "0", - "35": "0", - "36": "0", - "37": "0", - "38": "0", - "39": "0", - "40": "0", - "41": "0", - "42": "0", - "43": "0", - "44": "0", - "45": "0", - "46": "0", - "47": "0", - "48": "0", - "49": "0", - "50": "0", - "51": "0", - "52": "0", - "53": "0", - "54": "0", - "55": "0", - "56": "0", - "57": "0", - "58": "0", - "59": "0", - "60": "0", - "61": "0", - "62": "0", - "63": "0" - } - }, -{%- endmacro -%} -{%- macro generate_tc_to_pg_map_per_sku() -%} - "TC_TO_PRIORITY_GROUP_MAP": { - "AZURE": { - "0": "0", - "1": "0", - "2": "0", - "3": "0", - "4": "0", - "5": "0", - "6": "0", - "7": "0" - } - }, -{%- endmacro -%} - -{%- macro generate_scheduler_per_sku() -%} - "SCHEDULER": { - "scheduler.1": { - "type" : "DWRR", - "weight": "1" - }, - "scheduler.10": { - "type" : "DWRR", - "weight": "10" - }, - "scheduler.12": { - "type" : "DWRR", - "weight": "12" - }, - "scheduler.32": { - "type" : "DWRR", - "weight": "32" - } - }, -{%- endmacro -%} - -{%- macro generate_single_queue_per_sku(port) -%} - "{{ port }}|0": { - "scheduler": "scheduler.1" - }, - "{{ port }}|1": { - "scheduler": "scheduler.10" - }, - "{{ port }}|2": { - "scheduler": "scheduler.12" - }, - "{{ port }}|3": { - "scheduler": "scheduler.12" - }, - "{{ port }}|4": { - "scheduler": "scheduler.32" - }, - "{{ port }}|5": { - "scheduler": "scheduler.32" - }, - "{{ port }}|6": { - "scheduler": "scheduler.1" - } -{%- endmacro -%} - -{%- macro generate_global_dscp_to_tc_map() %} -{# This is an empty macro since the global DSCP_TO_TC map is not required #} -{%- endmacro %} - -{%- macro generate_wred_profiles() %} - "WRED_PROFILE": { - "AZURE_LOSSLESS" : { - "wred_green_enable" : "true", - "wred_yellow_enable" : "true", - "wred_red_enable" : "true", - "ecn" : "ecn_all", - "green_max_threshold" : "10000000", - "green_min_threshold" : "2000000", - "yellow_max_threshold" : "10000000", - "yellow_min_threshold" : "2000000", - "red_max_threshold" : "10000000", - "red_min_threshold" : "2000000", - "green_drop_probability" : "5", - "yellow_drop_probability": "5", - "red_drop_probability" : "5" - } - }, -{%- endmacro %} - -{%- include 'qos_config.j2' %} diff --git a/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 new file mode 120000 index 000000000000..462ffcd7e1f3 --- /dev/null +++ b/device/mellanox/x86_64-nvidia_sn5610n-r0/Mellanox-SN5610N-C256S2/qos.json.j2 @@ -0,0 +1 @@ +../../x86_64-nvidia_sn5600-r0/Mellanox-SN5600-C256S1/qos.json.j2 \ No newline at end of file From 221f43d21b701d10f5821ffef21b48f9a583034d Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Tue, 18 Feb 2025 23:28:40 -0800 Subject: [PATCH 18/47] Don't install pytest-stress in python2 environment (#21750) The pytest-stress package is only compatible with Python 3. Trying to install it with Python 2 leads to a build failure for the sonic-mgmt docker image. Signed-off-by: Lawrence Lee --- dockers/docker-sonic-mgmt/Dockerfile.j2 | 1 - 1 file changed, 1 deletion(-) diff --git a/dockers/docker-sonic-mgmt/Dockerfile.j2 b/dockers/docker-sonic-mgmt/Dockerfile.j2 index 7984f0347580..ede9751820c4 100755 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -176,7 +176,6 @@ RUN python2 -m pip install allure-pytest==2.8.22 \ pytest-repeat \ pytest-html \ pytest-xdist==1.28.0 \ - pytest-stress \ python-dateutil \ PyYAML \ redis \ From 9ae6e59ef6afd0c77575c30e4b9e60b6f5eeebe9 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:01:16 +0800 Subject: [PATCH 19/47] [submodule] Update submodule sonic-stp to the latest HEAD automatically (#21782) #### Why I did it src/sonic-stp ``` * 4909e7e - (HEAD -> master, origin/master, origin/HEAD) armhf build on PR validation (#48) (8 hours ago) [Divya Kumaran Chandralekha] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-stp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-stp b/src/sonic-stp index 29eb3877f146..4909e7ec0cbc 160000 --- a/src/sonic-stp +++ b/src/sonic-stp @@ -1 +1 @@ -Subproject commit 29eb3877f146864ab78d1deffb7317348823cb94 +Subproject commit 4909e7ec0cbcc01f227f23c6209bdd779a2639e5 From a31f92592bb7307995f48ce5fd9234a0d8189cbc Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:01:26 +0800 Subject: [PATCH 20/47] [submodule] Update submodule dhcpmon to the latest HEAD automatically (#21780) #### Why I did it src/dhcpmon ``` * f6dfbe9 - (HEAD -> master, origin/master, origin/HEAD) Fix counting bootp packets by mistake (#31) (19 hours ago) [Yaqiang Zhu] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/dhcpmon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dhcpmon b/src/dhcpmon index e00352233d44..f6dfbe923ae2 160000 --- a/src/dhcpmon +++ b/src/dhcpmon @@ -1 +1 @@ -Subproject commit e00352233d4446ea10df2e9afc969d40409c3b86 +Subproject commit f6dfbe923ae2085b05cb1dac7db7a5e4e505bf61 From dddee5035f6d5fc0d6c8439df178dd2182af83a8 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:01:45 +0800 Subject: [PATCH 21/47] [submodule] Update submodule sonic-linux-kernel to the latest HEAD automatically (#21742) #### Why I did it src/sonic-linux-kernel ``` * 7a1f547 - (HEAD -> master, origin/master, origin/HEAD) [optoe] Reset page select byte to 0 before upper memory access on page 0h (#463) (5 days ago) [mihirpat1] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-linux-kernel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index cd0224dad789..7a1f547cd063 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit cd0224dad789c8dab783f3b96cabf1410e743c4a +Subproject commit 7a1f547cd0630c386b62f2f9dacfa4465b0382d4 From 02115ae994a5aee356d23980981de45d71493016 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:01:54 +0800 Subject: [PATCH 22/47] [submodule] Update submodule sonic-gnmi to the latest HEAD automatically (#21727) #### Why I did it src/sonic-gnmi ``` * 558cda6 - (HEAD -> master, origin/master, origin/HEAD) Client side code for GNOI.System.SetPackage (#358) (4 days ago) [Dawei Huang] * e06ff6c - Merge pull request #182 from faraazbrcm/code_formatting (6 days ago) [anand-kumar-subramanian] * fb1690c - Go Code format checker and formatter (6 days ago) [Mohammed Faraaz] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-gnmi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-gnmi b/src/sonic-gnmi index 450bcdd8dacd..558cda6a5ce9 160000 --- a/src/sonic-gnmi +++ b/src/sonic-gnmi @@ -1 +1 @@ -Subproject commit 450bcdd8dacdca214c8226d25e49a7e0821a3295 +Subproject commit 558cda6a5ce900527ea2c966d800b3e84c1b2db4 From 85d5993fe0e3be71bad19d35071bb3e533a99087 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:02:00 +0800 Subject: [PATCH 23/47] [submodule] Update submodule linkmgrd to the latest HEAD automatically (#21724) #### Why I did it src/linkmgrd ``` * 927ee8a - (HEAD -> master, origin/master, origin/HEAD) Fix pipeline to use bookworm (#287) (7 days ago) [Longxiang Lyu] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/linkmgrd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linkmgrd b/src/linkmgrd index ccd52d06acf8..927ee8a2c056 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit ccd52d06acf802e960939bf7a29d819607985652 +Subproject commit 927ee8a2c05674c0aa3700059a2ac5526769ca37 From ddcd3157d34572126e914d177894b0bf9e8b29a3 Mon Sep 17 00:00:00 2001 From: Shantanu Shrivastava <81131723+shanshri@users.noreply.github.com> Date: Wed, 19 Feb 2025 23:47:21 +0530 Subject: [PATCH 24/47] Add support for MtFuji elba dpu (#18536) Add support for MtFuji elba dpu --- build_debian.sh | 5 +- .../Pensando-elba/port_config.ini | 2 + .../Pensando-elba/sai.profile | 0 .../default_pipeline | 1 + .../arm64-elba-asic-flash128-r0/default_sku | 1 + .../arm64-elba-asic-flash128-r0/platform.json | 4 + .../arm64-elba-asic-flash128-r0/platform_asic | 1 + .../platform_components.json | 19 + .../platform_reboot | 16 + .../pmon_daemon_control.json | 12 + .../system_health_monitoring_config.json | 11 + .../Pensando-elba/port_config.ini | 6 +- .../arm64-elba-asic-r0/default_pipeline | 1 + .../arm64-elba-asic-r0/platform_reboot | 16 + .../arm64-elba-asic-r0/plugins/ssd_util.py | 100 -- .../pmon_daemon_control.json | 8 +- .../system_health_monitoring_config.json | 11 + dockers/docker-orchagent/orchagent.sh | 5 +- .../build_templates/sonic_debian_extension.j2 | 6 +- files/dsc/dpu.init | 65 +- files/dsc/dpu.service | 1 + .../dsc-drivers/debian/ionic-modules.install | 2 + platform/pensando/dsc-drivers/debian/rules | 4 +- .../dsc-drivers/src/drivers/common/ionic_if.h | 33 +- .../dsc-drivers/src/drivers/linux/Makefile | 35 +- .../src/drivers/linux/eth/ionic/Makefile | 2 +- .../src/drivers/linux/eth/ionic/ionic.h | 10 +- .../src/drivers/linux/eth/ionic/ionic_bus.h | 3 + .../drivers/linux/eth/ionic/ionic_bus_pci.c | 243 +++-- .../linux/eth/ionic/ionic_bus_platform.c | 20 +- .../drivers/linux/eth/ionic/ionic_debugfs.c | 37 +- .../drivers/linux/eth/ionic/ionic_debugfs.h | 2 - .../src/drivers/linux/eth/ionic/ionic_dev.c | 430 +-------- .../src/drivers/linux/eth/ionic/ionic_dev.h | 47 +- .../drivers/linux/eth/ionic/ionic_devlink.c | 4 +- .../drivers/linux/eth/ionic/ionic_ethtool.c | 294 +++--- .../src/drivers/linux/eth/ionic/ionic_fw.c | 6 +- .../src/drivers/linux/eth/ionic/ionic_lif.c | 682 ++++++-------- .../src/drivers/linux/eth/ionic/ionic_lif.h | 33 +- .../src/drivers/linux/eth/ionic/ionic_main.c | 74 +- .../src/drivers/linux/eth/ionic/ionic_phc.c | 5 +- .../drivers/linux/eth/ionic/ionic_rx_filter.c | 4 +- .../drivers/linux/eth/ionic/ionic_rx_filter.h | 1 - .../src/drivers/linux/eth/ionic/ionic_trace.h | 53 ++ .../src/drivers/linux/eth/ionic/ionic_txrx.c | 210 +++-- .../src/drivers/linux/eth/ionic/kcompat.h | 51 +- .../src/drivers/linux/linux_ver.mk | 46 + .../src/drivers/linux/pciesvc/Makefile | 52 +- .../src/drivers/linux/pciesvc/README.md | 4 + .../drivers/linux/pciesvc/kpci_constants.h | 18 +- .../src/drivers/linux/pciesvc/kpci_entry.S | 12 +- .../drivers/linux/pciesvc/kpci_get_entry.c | 50 + .../src/drivers/linux/pciesvc/kpci_kexec.c | 20 +- .../src/drivers/linux/pciesvc/kpci_test.c | 6 +- .../src/drivers/linux/pciesvc/kpcimgr_api.h | 1 + .../drivers/linux/pciesvc/kpcimgr_module.c | 59 +- .../src/drivers/linux/pciesvc/kpcinterface.c | 38 +- .../linux/pciesvc/pciesvc/include/pciehw.h | 8 + .../linux/pciesvc/pciesvc/include/pciehwmem.h | 32 +- .../linux/pciesvc/pciesvc/include/pcieshmem.h | 57 +- .../linux/pciesvc/pciesvc/include/pciesvc.h | 2 +- .../pciesvc/pciesvc/include/virtio_spec.h | 107 ++- .../drivers/linux/pciesvc/pciesvc/src/bar.c | 8 +- .../drivers/linux/pciesvc/pciesvc/src/cfg.c | 23 +- .../linux/pciesvc/pciesvc/src/pciesvc_impl.h | 38 +- .../drivers/linux/pciesvc/pciesvc/src/pmt.c | 122 ++- .../drivers/linux/pciesvc/pciesvc/src/prt.c | 30 +- .../linux/pciesvc/pciesvc/src/serial.c | 3 +- .../linux/pciesvc/pciesvc/src/virtio.c | 519 ++++++++-- .../src/drivers/linux/pciesvc/pciesvc_end.c | 2 +- .../linux/pciesvc/pciesvc_loader/Makefile | 25 + .../pciesvc/pciesvc_loader/pciesvc_loader.c | 445 +++++++++ .../linux/pciesvc/pciesvc_system_extern.h | 148 ++- .../drivers/linux/pciesvc/tools/reloc_check | 18 +- platform/pensando/elba-asic-psci.dtb | Bin 13944 -> 0 bytes platform/pensando/install_file | 37 + platform/pensando/one-image.mk | 1 + platform/pensando/platform.conf | 150 ++- platform/pensando/rules.mk | 1 + .../pensando/sonic-platform-modules-dpu.mk | 15 + .../debian/changelog | 3 + .../sonic-platform-modules-dpu/debian/compat | 1 + .../sonic-platform-modules-dpu/debian/control | 10 + .../sonic-platform-modules-dpu/debian/rules | 88 ++ .../dpu/checker/dpu-db-util-checker | 4 + .../dpu/service/dpu-db-util.service | 12 + .../dpu/service/dpu-platform-init.service | 16 + .../dpu/service/dpu_provisioning.service | 16 + .../dpu/utils/dpu_db_util.py | 431 +++++++++ .../dpu/utils/dpu_pensando_util.py | 145 +++ .../dpu/utils/dpu_provisioning.sh | 75 ++ .../dpu/utils/fetch_dpu_status | 316 +++++++ .../dpu/utils/pdsctl | 24 + .../sonic-platform-modules-dpu/setup.py | 79 ++ .../sonic_platform/__init__.py | 2 + .../sonic_platform/chassis.py | 413 ++++++++ .../sonic_platform/component.py | 441 +++++++++ .../sonic_platform/eeprom.py | 164 ++++ .../sonic_platform/fan.py | 18 + .../sonic_platform/fan_drawer.py | 19 + .../sonic_platform/fru_tlvinfo_decoder.py | 891 ++++++++++++++++++ .../sonic_platform/helper.py | 145 +++ .../sonic_platform/platform.py | 22 + .../sonic_platform/proto/oper.proto | 710 ++++++++++++++ .../sonic_platform/psu.py | 20 + .../sonic_platform/sensor.py | 109 +++ .../sonic_platform/thermal.py | 156 +++ .../sonic_platform/watchdog.py | 50 + 108 files changed, 7360 insertions(+), 1693 deletions(-) create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/port_config.ini create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/sai.profile create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/default_pipeline create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/default_sku create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/platform.json create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/platform_asic create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/platform_components.json create mode 100755 device/pensando/arm64-elba-asic-flash128-r0/platform_reboot create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/pmon_daemon_control.json create mode 100644 device/pensando/arm64-elba-asic-flash128-r0/system_health_monitoring_config.json create mode 100644 device/pensando/arm64-elba-asic-r0/default_pipeline create mode 100755 device/pensando/arm64-elba-asic-r0/platform_reboot delete mode 100644 device/pensando/arm64-elba-asic-r0/plugins/ssd_util.py create mode 100644 device/pensando/arm64-elba-asic-r0/system_health_monitoring_config.json create mode 100644 platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_trace.h create mode 100644 platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_get_entry.c create mode 100644 platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/Makefile create mode 100644 platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/pciesvc_loader.c delete mode 100755 platform/pensando/elba-asic-psci.dtb create mode 100755 platform/pensando/install_file create mode 100644 platform/pensando/sonic-platform-modules-dpu.mk create mode 100644 platform/pensando/sonic-platform-modules-dpu/debian/changelog create mode 100644 platform/pensando/sonic-platform-modules-dpu/debian/compat create mode 100644 platform/pensando/sonic-platform-modules-dpu/debian/control create mode 100755 platform/pensando/sonic-platform-modules-dpu/debian/rules create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/checker/dpu-db-util-checker create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-db-util.service create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-platform-init.service create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu_provisioning.service create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_db_util.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_pensando_util.py create mode 100755 platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_provisioning.sh create mode 100755 platform/pensando/sonic-platform-modules-dpu/dpu/utils/fetch_dpu_status create mode 100755 platform/pensando/sonic-platform-modules-dpu/dpu/utils/pdsctl create mode 100755 platform/pensando/sonic-platform-modules-dpu/setup.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/__init__.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/chassis.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/component.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/eeprom.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan_drawer.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/fru_tlvinfo_decoder.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/helper.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/platform.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/proto/oper.proto create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/psu.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/sensor.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/thermal.py create mode 100644 platform/pensando/sonic-platform-modules-dpu/sonic_platform/watchdog.py diff --git a/build_debian.sh b/build_debian.sh index 7fe04902fb2b..e58153423c77 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -747,7 +747,10 @@ if [[ $TARGET_BOOTLOADER == uboot ]]; then elif [[ $CONFIGURED_ARCH == arm64 ]]; then if [[ $CONFIGURED_PLATFORM == pensando ]]; then ## copy device tree file into boot (XXX: need to compile dtb from dts) - sudo cp -v $PLATFORM_DIR/pensando/elba-asic-psci.dtb $FILESYSTEM_ROOT/boot/ + sudo cp -v $FILESYSTEM_ROOT/usr/lib/linux-image-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH}/pensando/elba-asic-psci.dtb $FILESYSTEM_ROOT/boot/ + sudo cp -v $FILESYSTEM_ROOT/usr/lib/linux-image-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH}/pensando/elba-asic-psci-lipari.dtb $FILESYSTEM_ROOT/boot/ + sudo cp -v $FILESYSTEM_ROOT/usr/lib/linux-image-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH}/pensando/elba-asic-psci-mtfuji.dtb $FILESYSTEM_ROOT/boot/ + sudo cp -v $PLATFORM_DIR/pensando/install_file $FILESYSTEM_ROOT/boot/ ## make kernel as gzip file sudo LANG=C chroot $FILESYSTEM_ROOT gzip /boot/${KERNEL_FILE} sudo LANG=C chroot $FILESYSTEM_ROOT mv /boot/${KERNEL_FILE}.gz /boot/${KERNEL_FILE} diff --git a/device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/port_config.ini b/device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/port_config.ini new file mode 100644 index 000000000000..213c010aa667 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/port_config.ini @@ -0,0 +1,2 @@ +#name lanes alias speed autoneg fec +Ethernet0 0,1,2,3 etp1 200000 on rs diff --git a/device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/sai.profile b/device/pensando/arm64-elba-asic-flash128-r0/Pensando-elba/sai.profile new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/pensando/arm64-elba-asic-flash128-r0/default_pipeline b/device/pensando/arm64-elba-asic-flash128-r0/default_pipeline new file mode 100644 index 000000000000..dbddba724746 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/default_pipeline @@ -0,0 +1 @@ +polaris diff --git a/device/pensando/arm64-elba-asic-flash128-r0/default_sku b/device/pensando/arm64-elba-asic-flash128-r0/default_sku new file mode 100644 index 000000000000..732fd3509286 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/default_sku @@ -0,0 +1 @@ +Pensando-elba t1 diff --git a/device/pensando/arm64-elba-asic-flash128-r0/platform.json b/device/pensando/arm64-elba-asic-flash128-r0/platform.json new file mode 100644 index 000000000000..03dee435de92 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/platform.json @@ -0,0 +1,4 @@ +{ + "interfaces": {}, + "DPU":{} +} diff --git a/device/pensando/arm64-elba-asic-flash128-r0/platform_asic b/device/pensando/arm64-elba-asic-flash128-r0/platform_asic new file mode 100644 index 000000000000..a2396ec3d541 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/platform_asic @@ -0,0 +1 @@ +pensando diff --git a/device/pensando/arm64-elba-asic-flash128-r0/platform_components.json b/device/pensando/arm64-elba-asic-flash128-r0/platform_components.json new file mode 100644 index 000000000000..7cc65dbb527a --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/platform_components.json @@ -0,0 +1,19 @@ +{ + "chassis": { + "Pensando-elba DSS-MTFUJI": { + "component": { + "DPUFW-0" : {}, + "DPUQSPI_GOLDFW-0" : { + "firmware" : "/host/images" + }, + "DPUQSPI_GOLDUBOOT-0" : { + "firmware" : "/host/images" + }, + "DPUQSPI_UBOOTA-0" : { + "firmware" : "/host/images" + }, + "eMMC" : {} + } + } + } +} diff --git a/device/pensando/arm64-elba-asic-flash128-r0/platform_reboot b/device/pensando/arm64-elba-asic-flash128-r0/platform_reboot new file mode 100755 index 000000000000..ebcd154cff2e --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/platform_reboot @@ -0,0 +1,16 @@ +#!/bin/bash +# {C} Copyright 2023 AMD Systems Inc. All rights reserved + +DPU_DOCKER_INFO_DIR=/host/dpu-docker-info + +function StopDpuDocker() { + sync ; sync + dpu_docker_name=$(<"$DPU_DOCKER_INFO_DIR/name") + docker exec "$dpu_docker_name" rm /var/run/pcieport_data + sync ; sync + echo "Stopping dpu docker container" + docker stop "$dpu_docker_name" + sync ; sync +} + +StopDpuDocker diff --git a/device/pensando/arm64-elba-asic-flash128-r0/pmon_daemon_control.json b/device/pensando/arm64-elba-asic-flash128-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..84a12d51a472 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/pmon_daemon_control.json @@ -0,0 +1,12 @@ +{ + "skip_thermalctld": false, + "skip_fancontrol": true, + "skip_ledd": true, + "skip_psud": true, + "skip_syseepromd": false, + "skip_xcvrd": true, + "skip_chassis_db_init": false, + "skip_chassisd": true, + "skip_pcied": false, + "include_sensormond": true +} diff --git a/device/pensando/arm64-elba-asic-flash128-r0/system_health_monitoring_config.json b/device/pensando/arm64-elba-asic-flash128-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..6e51604ac600 --- /dev/null +++ b/device/pensando/arm64-elba-asic-flash128-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["psu","fan"], + "user_defined_checkers": ["fetch_dpu_status"], + "polling_interval": 60, + "led_color": { + "fault": "amber", + "normal": "green", + "booting": "amber_blink" + } +} \ No newline at end of file diff --git a/device/pensando/arm64-elba-asic-r0/Pensando-elba/port_config.ini b/device/pensando/arm64-elba-asic-r0/Pensando-elba/port_config.ini index 70d1ec4f5352..7d6ae385e041 100644 --- a/device/pensando/arm64-elba-asic-r0/Pensando-elba/port_config.ini +++ b/device/pensando/arm64-elba-asic-r0/Pensando-elba/port_config.ini @@ -1,3 +1,3 @@ -# name lanes alias speed autoneg fec -Ethernet1 0,1,2,3 Ethernet1 100000 on rs -Ethernet2 4,5,6,7 Ethernet2 100000 on rs +# name lanes alias speed autoneg fec +Ethernet0 0,1,2,3 etp1 100000 on rs +Ethernet1 4,5,6,7 etp2 100000 on rs diff --git a/device/pensando/arm64-elba-asic-r0/default_pipeline b/device/pensando/arm64-elba-asic-r0/default_pipeline new file mode 100644 index 000000000000..1ef2e89e4da9 --- /dev/null +++ b/device/pensando/arm64-elba-asic-r0/default_pipeline @@ -0,0 +1 @@ +rudra diff --git a/device/pensando/arm64-elba-asic-r0/platform_reboot b/device/pensando/arm64-elba-asic-r0/platform_reboot new file mode 100755 index 000000000000..ebaa1b9a8364 --- /dev/null +++ b/device/pensando/arm64-elba-asic-r0/platform_reboot @@ -0,0 +1,16 @@ +#!/bin/bash +# {C} Copyright 2023 AMD Systems Inc. All rights reserved + +DPU_DOCKER_INFO_DIR=/host/dpu-docker-info + +function StopDpuDocker() { + sync ; sync + dpu_docker_name=$(<"$DPU_DOCKER_INFO_DIR/name") + docker exec "$dpu_docker_name" rm /var/run/pcieport_data + sync ; sync + echo "Stopping dpu docker container" + docker stop "$dpu_docker_name" + sync ; sync +} + +StopDpuDocker \ No newline at end of file diff --git a/device/pensando/arm64-elba-asic-r0/plugins/ssd_util.py b/device/pensando/arm64-elba-asic-r0/plugins/ssd_util.py deleted file mode 100644 index e6c1b157fdb9..000000000000 --- a/device/pensando/arm64-elba-asic-r0/plugins/ssd_util.py +++ /dev/null @@ -1,100 +0,0 @@ -# -# ssd_generic.py -# -# Generic implementation of the SSD health API -# SSD models supported: -# - InnoDisk -# - StorFly -# - Virtium - -try: - import re - import subprocess - from sonic_platform_base.sonic_storage.storage_base import StorageBase -except ImportError as e: - raise ImportError (str(e) + "- required module not found") - -NOT_AVAILABLE = "N/A" -MMC_DATA_PATH = "/sys/class/mmc_host/mmc0/mmc0:0001/{}" - -class SsdUtil(StorageBase): - """ - Generic implementation of the SSD health API - """ - model = NOT_AVAILABLE - serial = NOT_AVAILABLE - firmware = NOT_AVAILABLE - temperature = NOT_AVAILABLE - health = NOT_AVAILABLE - ssd_info = NOT_AVAILABLE - vendor_ssd_info = NOT_AVAILABLE - - def __init__(self, diskdev): - - self.dev = diskdev - try: - self.model = ("emmc {}".format(open(MMC_DATA_PATH.format("name")).read())).replace("\n", "") - self.serial = open(MMC_DATA_PATH.format("serial")).read().replace("\n", "") - self.firmware = open(MMC_DATA_PATH.format("fwrev")).read().replace("\n", "") - value = open(MMC_DATA_PATH.format("life_time")).read().replace("\n", "") - [lifetime_a, lifetime_b] = [int(val, 16) for val in value.split()] - lifetime = lifetime_a if lifetime_a >= lifetime_b else lifetime_b - self.health = float(100 - (lifetime*10)) - except: - pass - - def get_health(self): - """ - Retrieves current disk health in percentages - - Returns: - A float number of current ssd health - e.g. 83.5 - """ - return self.health - - def get_temperature(self): - """ - Retrieves current disk temperature in Celsius - - Returns: - A float number of current temperature in Celsius - e.g. 40.1 - """ - return self.temperature - - def get_model(self): - """ - Retrieves model for the given disk device - - Returns: - A string holding disk model as provided by the manufacturer - """ - return self.model - - def get_firmware(self): - """ - Retrieves firmware version for the given disk device - - Returns: - A string holding disk firmware version as provided by the manufacturer - """ - return self.firmware - - def get_serial(self): - """ - Retrieves serial number for the given disk device - - Returns: - A string holding disk serial number as provided by the manufacturer - """ - return self.serial - - def get_vendor_output(self): - """ - Retrieves vendor specific data for the given disk device - - Returns: - A string holding some vendor specific disk information - """ - return self.vendor_ssd_info \ No newline at end of file diff --git a/device/pensando/arm64-elba-asic-r0/pmon_daemon_control.json b/device/pensando/arm64-elba-asic-r0/pmon_daemon_control.json index f8dfa401ad8c..84a12d51a472 100644 --- a/device/pensando/arm64-elba-asic-r0/pmon_daemon_control.json +++ b/device/pensando/arm64-elba-asic-r0/pmon_daemon_control.json @@ -1,10 +1,12 @@ { - "skip_thermalctld": true, + "skip_thermalctld": false, "skip_fancontrol": true, "skip_ledd": true, "skip_psud": true, "skip_syseepromd": false, "skip_xcvrd": true, "skip_chassis_db_init": false, - "skip_pcied": true -} \ No newline at end of file + "skip_chassisd": true, + "skip_pcied": false, + "include_sensormond": true +} diff --git a/device/pensando/arm64-elba-asic-r0/system_health_monitoring_config.json b/device/pensando/arm64-elba-asic-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..6e51604ac600 --- /dev/null +++ b/device/pensando/arm64-elba-asic-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["psu","fan"], + "user_defined_checkers": ["fetch_dpu_status"], + "polling_interval": 60, + "led_color": { + "fault": "amber", + "normal": "green", + "booting": "amber_blink" + } +} \ No newline at end of file diff --git a/dockers/docker-orchagent/orchagent.sh b/dockers/docker-orchagent/orchagent.sh index cd84893e3771..28ce24303891 100755 --- a/dockers/docker-orchagent/orchagent.sh +++ b/dockers/docker-orchagent/orchagent.sh @@ -66,7 +66,10 @@ elif [ "$platform" == "marvell-teralynx" ]; then elif [ "$platform" == "nvidia-bluefield" ]; then ORCHAGENT_ARGS+="-m $MAC_ADDRESS" elif [ "$platform" == "pensando" ]; then - MAC_ADDRESS=$(ip link property add dev oob_mnic0 altname eth0; ip link show oob_mnic0 | grep ether | awk '{print $2}') + MAC_ADDRESS=$(ip link show int_mnic0 | grep ether | awk '{print $2}') + if [ "$MAC_ADDRESS" == "" ]; then + MAC_ADDRESS=$(ip link show eth0-midplane | grep ether | awk '{print $2}') + fi ORCHAGENT_ARGS+="-m $MAC_ADDRESS" elif [ "$platform" == "marvell" ]; then ORCHAGENT_ARGS+="-m $MAC_ADDRESS" diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index f071df8c46aa..6ff46082547d 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -145,9 +145,9 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install blkinf sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install ipaddr # Install Python module for grpcio and grpcio-toole -if [[ $CONFIGURED_ARCH == amd64 ]]; then - sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "grpcio==1.51.1" - sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "grpcio-tools==1.51.1" +if [[ $CONFIGURED_ARCH == amd64 || $CONFIGURED_ARCH == arm64 ]]; then + sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "grpcio==1.58.0" + sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "grpcio-tools==1.58.0" fi # Install sonic-py-common Python 3 package diff --git a/files/dsc/dpu.init b/files/dsc/dpu.init index 09e6562c508c..cce251665fc3 100755 --- a/files/dsc/dpu.init +++ b/files/dsc/dpu.init @@ -18,14 +18,58 @@ ACTIVE_FILE="/boot/active.txt" NIC_MOUNT="" LOG_FILE="/tmp/active_nic" -TAG="latest" +TAG=latest HOST_DIR=/host/dpu +HOST_DIR_POLARIS=/host/polaris +CONTAINER_NAME=dpu +CONTAINER_NAME_POLARIS=polaris +DPU_DOCKER_INFO_DIR=/host/dpu-docker-info +TAG=latest +IMAGE_NAME=docker-dpu + +function start_polaris() +{ + modprobe ionic_mnic + modprobe mnet_uio_pdrv_genirq + modprobe mdev + modprobe pciesvc + insmod /usr/lib/modules/6.1.0-22-2-arm64/kernel/drivers/watchdog/softdog.ko soft_panic=1 soft_noboot=0 + + mkdir -p $HOST_DIR_POLARIS/update + mkdir -p $HOST_DIR_POLARIS/sysconfig/config0 + mkdir -p $HOST_DIR_POLARIS/sysconfig/config1 + mkdir -p $HOST_DIR_POLARIS/obfl + mkdir -p $HOST_DIR_POLARIS/data + mkdir -p $HOST_DIR_POLARIS/share + mount -t tmpfs -o size=20M sharetmps $HOST_DIR_POLARIS/share + mkdir -p $HOST_DIR_POLARIS/dsc + mount -t tmpfs -o size=5M dsctmps $HOST_DIR_POLARIS/dsc + mkdir -p $HOST_DIR_POLARIS/mnt + mkdir -p $HOST_DIR_POLARIS/obfl/a + mkdir -p $HOST_DIR_POLARIS/mnt/a/mnt + mkdir -p $HOST_DIR_POLARIS/mnt/a/mnt/upper + mkdir -p $HOST_DIR_POLARIS/mnt/a/mnt/work + mkdir -p $DPU_DOCKER_INFO_DIR + echo 256 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages + + sync; sync; + sleep 3; + + echo $CONTAINER_NAME_POLARIS > $DPU_DOCKER_INFO_DIR/name + echo $IMAGE_NAME:$TAG > $DPU_DOCKER_INFO_DIR/image + /usr/sbin/ethtool -K Ethernet0 tx off sg off tso off rx off + + docker ps -a --format "{{.ID}}\t{{.Image}}" | grep "$IMAGE_NAME:$TAG" | awk '{print $1}' | xargs -I {} docker rm {} + + docker run -v $HOST_DIR_POLARIS/update:/update -v $HOST_DIR_POLARIS/sysconfig/config0:/sysconfig/config0 -v $HOST_DIR_POLARIS/sysconfig/config1:/sysconfig/config1 -v $HOST_DIR_POLARIS/obfl/a:/obfl -v $HOST_DIR_POLARIS/obfl:/var/log/obfl -v $HOST_DIR_POLARIS/data:/data -v $HOST_DIR_POLARIS/share:/share -v $HOST_DIR_POLARIS/share:/external -v $HOST_DIR_POLARIS/mnt/a:/ro -v /dev:/dev -v /sys:/sys --net=host --name=$CONTAINER_NAME_POLARIS --privileged $IMAGE_NAME:$TAG & +} function start_dpu() { modprobe ionic_mnic modprobe mnet_uio_pdrv_genirq modprobe mdev + modprobe pciesvc mkdir -p $HOST_DIR/update mkdir -p $HOST_DIR/sysconfig/config0 @@ -35,6 +79,7 @@ function start_dpu() mkdir -p $HOST_DIR/tmpfsshare mkdir -p $HOST_DIR/runfs mkdir -p $HOST_DIR/logfs + mkdir -p $DPU_DOCKER_INFO_DIR mount -t tmpfs -o size=20M,mode=1777 tmpfs $HOST_DIR/tmpfsshare mount -t tmpfs -o size=20M,mode=0755 runs $HOST_DIR/runfs mount -t tmpfs -o size=20M,mode=0755 logfs $HOST_DIR/logfs @@ -53,16 +98,26 @@ function start_dpu() echo "Active Nic: $ACTIVE_NIC" >> $LOG_FILE echo "NIC_MOUNT: $NIC_MOUNT" >> $LOG_FILE - docker ps -a --format "{{.ID}}\t{{.Image}}" | grep "docker-dpu:latest" | awk '{print $1}' | xargs -I {} docker rm {} + echo $CONTAINER_NAME > $DPU_DOCKER_INFO_DIR/name + echo $IMAGE_NAME:$TAG > $DPU_DOCKER_INFO_DIR/image - docker run -v $HOST_DIR/update:/update -v $HOST_DIR/sysconfig/config0:/sysconfig/config0 -v $HOST_DIR/sysconfig/config1:/sysconfig/config1 -v $HOST_DIR/obfl:/obfl -v $HOST_DIR/data:/data -v $HOST_DIR/tmpfsshare:/tmp -v $HOST_DIR/runfs:/run -v $HOST_DIR/logfs:/var/log -v /sys:/sys $NIC_MOUNT --net=host --name=dpu --privileged docker-dpu:$TAG + docker ps -a --format "{{.ID}}\t{{.Image}}" | grep "$IMAGE_NAME:$TAG" | awk '{print $1}' | xargs -I {} docker rm {} + + docker run -v $HOST_DIR/update:/update -v $HOST_DIR/sysconfig/config0:/sysconfig/config0 -v $HOST_DIR/sysconfig/config1:/sysconfig/config1 -v $HOST_DIR/obfl:/obfl -v $HOST_DIR/data:/data -v $HOST_DIR/tmpfsshare:/tmp -v $HOST_DIR/runfs:/run -v $HOST_DIR/logfs:/var/log -v /sys:/sys $NIC_MOUNT --net=host --name=$CONTAINER_NAME --privileged $IMAGE_NAME:$TAG & } case "$1" in start) - echo -n "Start dpu... " + platform=$(grep 'onie_platform=' /host/machine.conf | cut -d '=' -f 2) + pipeline=`cat /usr/share/sonic/device/$platform/default_pipeline` + + echo -n "Start $pipeline... " - start_dpu + if [ $pipeline = "polaris" ]; then + start_polaris + else + start_dpu + fi echo "done." ;; diff --git a/files/dsc/dpu.service b/files/dsc/dpu.service index ff6e5fc7db52..09f0b62074db 100644 --- a/files/dsc/dpu.service +++ b/files/dsc/dpu.service @@ -6,6 +6,7 @@ Requires=local-fs.target After=local-fs.target Requires=ionic-modules.service After=ionic-modules.service +Before=midplane-network-dpu.service [Service] Type=oneshot diff --git a/platform/pensando/dsc-drivers/debian/ionic-modules.install b/platform/pensando/dsc-drivers/debian/ionic-modules.install index 9e1d39a9b6b3..c6ed0cd52891 100644 --- a/platform/pensando/dsc-drivers/debian/ionic-modules.install +++ b/platform/pensando/dsc-drivers/debian/ionic-modules.install @@ -1,4 +1,6 @@ src/drivers/linux/build/mdev.ko lib/modules/6.1.0-22-2-arm64/extra src/drivers/linux/build/mnet_uio_pdrv_genirq.ko lib/modules/6.1.0-22-2-arm64/extra src/drivers/linux/build/ionic_mnic.ko lib/modules/6.1.0-22-2-arm64/extra +src/drivers/linux/pciesvc/6.1.0-22-2-arm64/pciesvc.ko lib/modules/6.1.0-22-2-arm64/extra +src/drivers/linux/pciesvc/6.1.0-22-2-arm64/pciesvc_upg.ko lib/modules/6.1.0-22-2-arm64/extra systemd/ionic-modules.service lib/systemd/system diff --git a/platform/pensando/dsc-drivers/debian/rules b/platform/pensando/dsc-drivers/debian/rules index 5db1096c2c40..71ec4157e17f 100755 --- a/platform/pensando/dsc-drivers/debian/rules +++ b/platform/pensando/dsc-drivers/debian/rules @@ -26,9 +26,11 @@ clean: dh_testroot dh_clean ARCH=aarch64 KSRC=/lib/modules/$(KVERSION)/build KMOD_OUT_DIR=$(CURDIR)/src/drivers/linux/build KMOD_SRC_DIR=$(CURDIR)/src/drivers/linux make -C $(CURDIR)/src/drivers/linux clean + ARCH=aarch64 KSRC=/lib/modules/$(KVERSION)/build KMOD_OUT_DIR=$(CURDIR)/src/drivers/linux/build KMOD_SRC_DIR=$(CURDIR)/src/drivers/linux/pciesvc make -C $(CURDIR)/src/drivers/linux/pciesvc clean build: - ARCH=aarch64 KSRC=/lib/modules/$(KVERSION)/build KMOD_OUT_DIR=$(CURDIR)/src/drivers/linux/build KMOD_SRC_DIR=$(CURDIR)/src/drivers/linux make -C $(CURDIR)/src/drivers/linux + ARCH=aarch64 KSRC=/lib/modules/$(KVERSION)/build KMOD_OUT_DIR=$(CURDIR)/src/drivers/linux/build KMOD_SRC_DIR=$(CURDIR)/src/drivers/linux/ make -C $(CURDIR)/src/drivers/linux + ARCH=aarch64 KSRC=/lib/modules/$(KVERSION)/build KMOD_OUT_DIR=$(CURDIR)/src/drivers/linux/build KMOD_SRC_DIR=$(CURDIR)/src/drivers/linux/pciesvc make -C $(CURDIR)/src/drivers/linux/pciesvc binary: binary-arch binary-indep # Nothing to do diff --git a/platform/pensando/dsc-drivers/src/drivers/common/ionic_if.h b/platform/pensando/dsc-drivers/src/drivers/common/ionic_if.h index 9b2f3b717543..382492244b5f 100644 --- a/platform/pensando/dsc-drivers/src/drivers/common/ionic_if.h +++ b/platform/pensando/dsc-drivers/src/drivers/common/ionic_if.h @@ -9,6 +9,7 @@ #define IONIC_IFNAMSIZ 16 #ifdef __CHECKER__ +#define IONIC_SIZE_CHECK(type, N, X) #define IONIC_CHECK_CMD_LENGTH(X) #define IONIC_CHECK_COMP_LENGTH(X) #define IONIC_CHECK_CMD_DATA_LENGTH(X) @@ -280,17 +281,41 @@ struct ionic_dev_identify_comp { }; enum ionic_debug_type { - IONIC_DEBUG_TYPE_MSG = 1, + IONIC_DEBUG_TYPE_MSG = 1, + IONIC_DEBUG_TYPE_STATS = 2, }; + +/** + * struct ionic_dev_debug_stats - Driver/device debug stats struct + * @fld: A string specifying the field name + * @cnt: Counter value for the field + */ +struct ionic_dev_debug_stats { + char fld[56]; + uint64_t cnt; +} __attribute__((packed)); +IONIC_SIZE_CHECK(struct, 64, ionic_dev_debug_stats); + /** * struct ionic_dev_debug_cmd - Driver/device debug command - * @opcode: opcode - * @type: debug_type (enum ionic_debug_type) + * @opcode: opcode + * @type: debug_type (enum ionic_debug_type) + * @stats: Debug stats region properties + * @count: Number of (field, cnt) pairs + * @stats_pa: Physical address of the debug stats region */ struct ionic_dev_debug_cmd { u8 opcode; u8 debug_type; - u8 rsvd[62]; + u8 rsvd[6]; + union { + struct { + __le16 count; + u8 rsvd2[6]; + __le64 stats_pa; + } stats; + }; + u8 rsvd3[40]; }; IONIC_CHECK_CMD_LENGTH(ionic_dev_debug_cmd); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/Makefile b/platform/pensando/dsc-drivers/src/drivers/linux/Makefile index c754088fe402..cf07266595af 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/Makefile +++ b/platform/pensando/dsc-drivers/src/drivers/linux/Makefile @@ -25,12 +25,14 @@ default: all ifeq ($(ARCH),aarch64) # Ionic mnic and mdev for drivers ARM +#include ${MKINFRA}/config_${ARCH}.mk KSRC ?= ${NICDIR}/buildroot/output/${ASIC}/linux-headers KMOD_OUT_DIR ?= ${BLD_OUT_DIR}/drivers_submake KMOD_SRC_DIR ?= ${TOPDIR}/platform/drivers/linux-ionic ETH_KOPT += CONFIG_IONIC_MNIC=m ETH_KOPT += CONFIG_MDEV=m ETH_KOPT += CONFIG_MNET_UIO_PDRV_GENIRQ=m +KOPT += CROSS_COMPILE=aarch64-linux-gnu- KOPT += ARCH=arm64 KCFLAGS += -DCONFIG_IONIC_MNIC KCFLAGS += -DCONFIG_MDEV @@ -40,9 +42,10 @@ ALL += mnet_uio_pdrv_genirq ALL += mdev export PATH := $(PATH):$(TOOLCHAIN_DIR)/bin -KSYMS_MNIC = "KBUILD_EXTRA_SYMBOLS=${KMOD_OUT_DIR}/Module.symvers.mnic" -KSYMS = "${KSYMS_MNIC} ${KMOD_OUT_DIR}/Module.symvers.uio" +KSYMS_MNIC = $(KMOD_OUT_DIR)/Module.symvers.mnic +KSYMS_UIO = $(KMOD_OUT_DIR)/Module.symvers.uio +DVER = $(shell cd $(KMOD_SRC_DIR) ; git describe --tags 2>/dev/null) else @@ -66,20 +69,21 @@ ALL = eth endif ifeq ($(DVER),) - DVER = "22.11.1-001" + DVER = "23.12.2-001" endif KCFLAGS += -Ddrv_ver=\\\"$(DVER)\\\" -KOPT += KCFLAGS="$(KCFLAGS)" +KOPT += KCFLAGS="$(KCFLAGS)" KBUILD_EXTRA_SYMBOLS="$(KSYMS)" all: $(ALL) -KBUILD_RULE = $(MAKE) -C $(KSRC) $(KOPT) M=$(CURDIR) +KBUILD_RULE = $(MAKE) -C $(KSRC) $(KOPT) M=$(CURDIR) KMOD_SRC_DIR=$(CURDIR) mnic: KOPT+=$(ETH_KOPT) mnic: @echo "===> Building MNIC driver " - touch $(KMOD_OUT_DIR)/Makefile || true + mkdir -p $(KMOD_OUT_DIR) + touch $(KMOD_OUT_DIR)/Makefile $(MAKE) -C $(KSRC) V=1 M=$(KMOD_OUT_DIR) src=$(KMOD_SRC_DIR)/eth/ionic $(KOPT) mv ${KMOD_OUT_DIR}/Module.symvers ${KMOD_OUT_DIR}/Module.symvers.mnic @@ -90,22 +94,35 @@ mnet_uio_pdrv_genirq: mv ${KMOD_OUT_DIR}/Module.symvers ${KMOD_OUT_DIR}/Module.symvers.uio mdev: KOPT+=$(ETH_KOPT) +mdev: KSYMS+=$(KSYMS_MNIC) +mdev: KSYMS+=$(KSYMS_UIO) mdev: @echo "===> Building MDEV driver " - $(MAKE) -C $(KSRC) $(KSYMS) V=1 M=$(KMOD_OUT_DIR) src=$(KMOD_SRC_DIR)/mdev $(KOPT) + $(MAKE) -C $(KSRC) V=1 M=$(KMOD_OUT_DIR) src=$(KMOD_SRC_DIR)/mdev $(KOPT) eth: KOPT+=$(ETH_KOPT) eth: - $(KBUILD_RULE) + @echo "===> Building ETH driver " + +$(KBUILD_RULE) + mv $(CURDIR)/Module.symvers $(CURDIR)/Module.symvers.ionic clean: KOPT+=$(ETH_KOPT) clean: $(KBUILD_RULE) clean + rm -f $(CURDIR)/Module.symvers* + +KBUILD_INSTALL_RULE = $(MAKE) -C $(KSRC) $(KOPT) \ + $(if ${DISABLE_MODULE_SIGNING},CONFIG_MODULE_SIG=n) \ + $(if ${DISABLE_MODULE_SIGNING},CONFIG_MODULE_SIG_ALL=) \ + INSTALL_MOD_DIR=updates \ + M=$(CURDIR) install: modules_install modules_install: KOPT+=$(ETH_KOPT) modules_install: - $(KBUILD_RULE) modules_install + @$(call warn_signed_modules) + $(KBUILD_INSTALL_RULE) modules_install + $(call cmd_depmod) cscope: find $(IONIC_ETH_SRC) -name '*.[ch]' > cscope.files diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/Makefile b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/Makefile index d5e2808fc659..15b11bcb10e3 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/Makefile +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/Makefile @@ -4,7 +4,7 @@ obj-$(CONFIG_IONIC) := ionic.o obj-$(CONFIG_IONIC_MNIC) := ionic_mnic.o -ccflags-y := -g -I$(KMOD_SRC_DIR)/../common +ccflags-y := -g -I$(M)/../common -I$(M)/../../common -I$(src) ionic-y := ionic_main.o ionic_bus_pci.o ionic_dev.o ionic_ethtool.o \ ionic_lif.o ionic_rx_filter.o ionic_txrx.o ionic_debugfs.o \ diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic.h index d9e9e4d3ef5c..e55b1eb1e8a8 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic.h @@ -22,10 +22,10 @@ struct ionic_lif; #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_VF 0x1003 #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_MGMT 0x1004 -#define DEVCMD_TIMEOUT 5 +#define DEVCMD_TOUT_DEF 5 +#define DEVCMD_TIMEOUT devcmd_timeout #define SHORT_TIMEOUT 1 #define IONIC_ADMINQ_TIME_SLICE msecs_to_jiffies(100) -#define MAX_ETH_EQS 64 #define IONIC_PHC_UPDATE_NS 10000000000L /* 10s in nanoseconds */ #define NORMAL_PPB 1000000000 /* one billion parts per billion */ @@ -62,15 +62,11 @@ struct ionic { struct ionic_identity ident; bool is_mgmt_nic; struct ionic_lif *lif; - struct ionic_eq **eqs; unsigned int nnqs_per_lif; unsigned int nrdma_eqs_per_lif; unsigned int ntxqs_per_lif; unsigned int nrxqs_per_lif; unsigned int nlifs; - unsigned int neth_eqs; - DECLARE_BITMAP(lifbits, IONIC_LIFS_MAX); - DECLARE_BITMAP(ethbits, IONIC_LIFS_MAX); unsigned int nintrs; DECLARE_BITMAP(intrs, IONIC_INTR_CTRL_REGS_MAX); #ifndef HAVE_PCI_IRQ_API @@ -111,6 +107,4 @@ int ionic_port_identify(struct ionic *ionic); int ionic_port_init(struct ionic *ionic); int ionic_port_reset(struct ionic *ionic); -const char *ionic_vf_attr_to_str(enum ionic_vf_attr attr); - #endif /* _IONIC_H_ */ diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus.h index 6cbe6f17ada7..5996d7dc8dcf 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus.h @@ -15,6 +15,9 @@ void __iomem *ionic_bus_map_dbpage(struct ionic *ionic, int page_num); void ionic_bus_unmap_dbpage(struct ionic *ionic, void __iomem *page); phys_addr_t ionic_bus_phys_dbpage(struct ionic *ionic, int page_num); +void ionic_reset_prepare(struct pci_dev *pdev); +void ionic_reset_done(struct pci_dev *pdev); + static inline bool ionic_bus_dbpage_per_pid(struct ionic *ionic) { return ionic->pdev; diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_pci.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_pci.c index b44e414e6e2b..50b49c7470fa 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_pci.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_pci.c @@ -78,8 +78,8 @@ void ionic_bus_free_irq_vectors(struct ionic *ionic) struct net_device *ionic_alloc_netdev(struct ionic *ionic) { - dev_dbg(ionic->dev, "nxqs=%d nlifs=%d nintrs=%d\n", - ionic->ntxqs_per_lif, ionic->nlifs, ionic->nintrs); + dev_dbg(ionic->dev, "nxqs=%d nintrs=%d\n", + ionic->ntxqs_per_lif, ionic->nintrs); return alloc_etherdev_mqs(sizeof(struct ionic_lif), ionic->ntxqs_per_lif, ionic->ntxqs_per_lif); @@ -137,6 +137,7 @@ static void ionic_unmap_bars(struct ionic *ionic) bars[i].len = 0; } } + ionic->num_bars = 0; } void __iomem *ionic_bus_map_dbpage(struct ionic *ionic, int page_num) @@ -179,7 +180,7 @@ static void ionic_vf_dealloc_locked(struct ionic *ionic) if (v->stats_pa) { vfc.stats_pa = 0; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); dma_unmap_single(ionic->dev, v->stats_pa, sizeof(v->stats), DMA_FROM_DEVICE); v->stats_pa = 0; @@ -228,7 +229,7 @@ static int ionic_vf_alloc(struct ionic *ionic, int num_vfs) /* ignore failures from older FW, we just won't get stats */ vfc.stats_pa = cpu_to_le64(v->stats_pa); - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); } out: @@ -272,31 +273,27 @@ static int ionic_sriov_configure(struct pci_dev *pdev, int num_vfs) return ret; } -static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +static void ionic_clear_pci(struct ionic *ionic) { - struct device *dev = &pdev->dev; - struct ionic *ionic; - int num_vfs; - int err; - - ionic = ionic_devlink_alloc(dev); - if (!ionic) - return -ENOMEM; - - ionic->pdev = pdev; - ionic->dev = dev; - pci_set_drvdata(pdev, ionic); - mutex_init(&ionic->dev_cmd_lock); + if (ionic->num_bars) { + ionic->idev.dev_info_regs = NULL; + ionic->idev.dev_cmd_regs = NULL; + ionic->idev.intr_status = NULL; + ionic->idev.intr_ctrl = NULL; + + ionic_unmap_bars(ionic); + pci_release_regions(ionic->pdev); + } - ionic->is_mgmt_nic = - ent->device == PCI_DEVICE_ID_PENSANDO_IONIC_ETH_MGMT; - ionic->pfdev = NULL; + if (atomic_read(&ionic->pdev->enable_cnt) > 0) + pci_disable_device(ionic->pdev); +} - err = ionic_set_dma_mask(ionic); - if (err) { - dev_err(dev, "Cannot set DMA mask: %d, aborting\n", err); - goto err_out_clear_drvdata; - } +static int ionic_setup_one(struct ionic *ionic) +{ + struct pci_dev *pdev = ionic->pdev; + struct device *dev = ionic->dev; + int err; ionic_debugfs_add_dev(ionic); @@ -310,19 +307,19 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err = pci_request_regions(pdev, IONIC_DRV_NAME); if (err) { dev_err(dev, "Cannot request PCI regions: %d, aborting\n", err); - goto err_out_pci_disable_device; + goto err_out_clear_pci; } pcie_print_link_status(pdev); err = ionic_map_bars(ionic); if (err) - goto err_out_pci_release_regions; + goto err_out_clear_pci; /* Configure the device */ err = ionic_setup(ionic); if (err) { dev_err(dev, "Cannot setup device: %d, aborting\n", err); - goto err_out_unmap_bars; + goto err_out_clear_pci; } pci_set_master(pdev); @@ -339,24 +336,73 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto err_out_teardown; } - /* Configure the ports */ + /* Configure the port */ + ionic_port_reset(ionic); + if (err) { + dev_err(dev, "Cannot reset port: %d, aborting\n", err); + goto err_out_teardown; + } + err = ionic_port_identify(ionic); if (err) { dev_err(dev, "Cannot identify port: %d, aborting\n", err); - goto err_out_reset; + goto err_out_teardown; } err = ionic_port_init(ionic); if (err) { dev_err(dev, "Cannot init port: %d, aborting\n", err); - goto err_out_reset; + goto err_out_teardown; } + return 0; + +err_out_teardown: + ionic_dev_teardown(ionic); +err_out_clear_pci: + ionic_clear_pci(ionic); +err_out_debugfs_del_dev: + ionic_debugfs_del_dev(ionic); + + return err; +} + +static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + struct device *dev = &pdev->dev; + struct ionic *ionic; + int num_vfs; + int err; + + ionic = ionic_devlink_alloc(dev); + if (!ionic) + return -ENOMEM; + + ionic->pdev = pdev; + ionic->dev = dev; + pci_set_drvdata(pdev, ionic); + mutex_init(&ionic->dev_cmd_lock); + + ionic->is_mgmt_nic = + ent->device == PCI_DEVICE_ID_PENSANDO_IONIC_ETH_MGMT; + ionic->pfdev = NULL; + + err = ionic_set_dma_mask(ionic); + if (err) { + dev_err(dev, "Unable to obtain 64-bit DMA for consistent allocations, aborting. err=%d\n", + err); + goto err_out; + } + + err = ionic_setup_one(ionic); + if (err) + goto err_out; + /* Allocate and init the LIF */ err = ionic_lif_size(ionic); if (err) { dev_err(dev, "Cannot size LIF: %d, aborting\n", err); - goto err_out_port_reset; + goto err_out_pci; } err = ionic_lif_alloc(ionic); @@ -407,30 +453,12 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ionic->lif = NULL; err_out_free_irqs: ionic_bus_free_irq_vectors(ionic); -err_out_port_reset: - ionic_port_reset(ionic); -err_out_reset: - ionic_reset(ionic); -err_out_teardown: +err_out_pci: ionic_dev_teardown(ionic); - pci_clear_master(pdev); - /* Don't fail the probe for these errors, keep - * the hw interface around for inspection - */ - return 0; - -err_out_unmap_bars: - ionic_unmap_bars(ionic); -err_out_pci_release_regions: - pci_release_regions(pdev); -err_out_pci_disable_device: - pci_disable_device(pdev); -err_out_debugfs_del_dev: - ionic_debugfs_del_dev(ionic); -err_out_clear_drvdata: + ionic_clear_pci(ionic); +err_out: mutex_destroy(&ionic->dev_cmd_lock); ionic_devlink_free(ionic); - pci_set_drvdata(pdev, NULL); return err; } @@ -439,12 +467,16 @@ static void ionic_remove(struct pci_dev *pdev) { struct ionic *ionic = pci_get_drvdata(pdev); - if (!ionic) - return; + if (ionic->lif) + set_bit(IONIC_LIF_F_IN_SHUTDOWN, ionic->lif->state); del_timer_sync(&ionic->watchdog_timer); if (ionic->lif) { + /* prevent adminq cmds if already known as down */ + if (test_and_clear_bit(IONIC_LIF_F_FW_RESET, ionic->lif->state)) + set_bit(IONIC_LIF_F_FW_STOPPING, ionic->lif->state); + ionic_lif_unregister(ionic->lif); ionic_devlink_unregister(ionic); ionic_lif_deinit(ionic->lif); @@ -456,21 +488,112 @@ static void ionic_remove(struct pci_dev *pdev) ionic_port_reset(ionic); ionic_reset(ionic); ionic_dev_teardown(ionic); - pci_clear_master(pdev); - ionic_unmap_bars(ionic); - pci_release_regions(pdev); - pci_disable_device(pdev); + ionic_clear_pci(ionic); ionic_debugfs_del_dev(ionic); mutex_destroy(&ionic->dev_cmd_lock); ionic_devlink_free(ionic); } +void ionic_reset_prepare(struct pci_dev *pdev) +{ + struct ionic *ionic = pci_get_drvdata(pdev); + struct ionic_lif *lif = ionic->lif; + + dev_dbg(ionic->dev, "%s: device stopping\n", __func__); + + set_bit(IONIC_LIF_F_FW_RESET, lif->state); + + /* Stop the timer first so it can't re-schedule more work, but note + * that there is a small chance the device could send an + * IONIC_EVENT_RESET, which could cause another work item to be + * scheduled and render these del/cancel calls useless (i.e. don't mix + * device triggered resets with userspace triggered resets). + */ + del_timer_sync(&ionic->watchdog_timer); + + mutex_lock(&lif->queue_lock); + ionic_stop_queues_reconfig(lif); + ionic_txrx_free(lif); + ionic_lif_deinit(lif); + ionic_qcqs_free(lif); + ionic_debugfs_del_lif(lif); + mutex_unlock(&lif->queue_lock); + + ionic_dev_teardown(ionic); + ionic_clear_pci(ionic); + ionic_debugfs_del_dev(ionic); + clear_bit(IONIC_LIF_F_FW_STOPPING, lif->state); +} + +void ionic_reset_done(struct pci_dev *pdev) +{ + struct ionic *ionic = pci_get_drvdata(pdev); + struct ionic_lif *lif = ionic->lif; + int err; + + err = ionic_setup_one(ionic); + if (err) + goto err_out; + + ionic_debugfs_add_sizes(ionic); + ionic_debugfs_add_lif(ionic->lif); + + err = ionic_restart_lif(lif); + if (err) + goto err_out; + + mod_timer(&ionic->watchdog_timer, jiffies + 1); + +err_out: + dev_dbg(ionic->dev, "%s: device recovery %s\n", + __func__, err ? "failed" : "done"); +} + +#if (KERNEL_VERSION(4, 13, 0) <= LINUX_VERSION_CODE) +static pci_ers_result_t ionic_pci_error_detected(struct pci_dev *pdev, + pci_channel_state_t error) +{ + pci_ers_result_t result = PCI_ERS_RESULT_NONE; + + if (error == pci_channel_io_frozen) { + ionic_reset_prepare(pdev); + result = PCI_ERS_RESULT_NEED_RESET; + } + + return result; +} + +static void ionic_pci_error_resume(struct pci_dev *pdev) +{ + struct ionic *ionic = pci_get_drvdata(pdev); + struct ionic_lif *lif = ionic->lif; + + if (lif && test_bit(IONIC_LIF_F_FW_RESET, lif->state)) + pci_reset_function_locked(pdev); +} + +static const struct pci_error_handlers ionic_err_handler = { + /* FLR handling */ + .reset_prepare = ionic_reset_prepare, + .reset_done = ionic_reset_done, + + /* PCI bus error detected on this device */ + .error_detected = ionic_pci_error_detected, + + /* Device driver may resume normal operations */ + .resume = ionic_pci_error_resume, +}; +#endif + static struct pci_driver ionic_driver = { .name = IONIC_DRV_NAME, .id_table = ionic_id_table, .probe = ionic_probe, .remove = ionic_remove, .sriov_configure = ionic_sriov_configure, +#if (KERNEL_VERSION(4, 13, 0) <= LINUX_VERSION_CODE) + .err_handler = &ionic_err_handler +#endif }; int ionic_bus_register_driver(void) diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_platform.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_platform.c index dae106b986ba..dca083ff9dab 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_platform.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_bus_platform.c @@ -94,14 +94,17 @@ static void __iomem *ionic_ioremap_shared_resource(struct ionic_shared_resource return base; } -static void ionic_iounmap_shared_resource(struct ionic_shared_resource *shres, +static void ionic_iounmap_shared_resource(struct ionic *ionic, + struct ionic_shared_resource *shres, void __iomem *vaddr, resource_size_t start, resource_size_t n) { mutex_lock(&shres->lock); - if (WARN_ON(!shres->refs)) { + if (!shres->refs) { + dev_warn(ionic->dev, "%s: no references exist for shared resource\n", + __func__); mutex_unlock(&shres->lock); return; } @@ -274,7 +277,8 @@ static void ionic_unmap_bars(struct ionic *ionic) dev_info(dev, "Unmapping BAR %d @%p, bus_addr: %llx\n", i, bars[i].vaddr, bars[i].bus_addr); if (i == IONIC_TSTAMP_BAR) { - ionic_iounmap_shared_resource(&tstamp_res, bars[i].vaddr, bars[i].bus_addr, bars[i].len); + ionic_iounmap_shared_resource(ionic, &tstamp_res, bars[i].vaddr, + bars[i].bus_addr, bars[i].len); } else { devm_iounmap(dev, bars[i].vaddr); devm_release_mem_region(dev, bars[i].bus_addr, bars[i].len); @@ -446,6 +450,16 @@ int ionic_remove(struct platform_device *pfdev) } EXPORT_SYMBOL_GPL(ionic_remove); +void ionic_reset_prepare(struct pci_dev *pdev) +{ + dev_info(&pdev->dev, "reset_prepare not supported\n"); +} + +void ionic_reset_done(struct pci_dev *pdev) +{ + dev_info(&pdev->dev, "reset_done not supported\n"); +} + static const struct of_device_id mnic_of_match[] = { {.compatible = "pensando,ionic-mnic"}, {/* end of table */} diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.c index 9ddb8f2fb6e1..cf2e6385f94c 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.c @@ -359,6 +359,8 @@ void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq) &intr->vector); debugfs_create_u32("dim_coal_hw", 0400, intr_dentry, &intr->dim_coal_hw); + debugfs_create_u16("dim_coal_usecs", 0400, intr_dentry, + &intr->dim_coal_usecs); intr_ctrl_regset = devm_kzalloc(dev, sizeof(*intr_ctrl_regset), GFP_KERNEL); @@ -539,40 +541,11 @@ void ionic_debugfs_add_lif(struct ionic_lif *lif) void ionic_debugfs_del_lif(struct ionic_lif *lif) { - debugfs_remove_recursive(lif->dentry); - lif->dentry = NULL; -} - -void ionic_debugfs_add_eq(struct ionic_eq *eq) -{ - const int ring_bytes = sizeof(struct ionic_eq_comp) * IONIC_EQ_DEPTH; - struct device *dev = eq->ionic->dev; - struct debugfs_blob_wrapper *blob; - struct debugfs_regset32 *regset; - struct dentry *ent; - char name[40]; - - snprintf(name, sizeof(name), "eq%02u", eq->index); - - ent = debugfs_create_dir(name, eq->ionic->dentry); - if (IS_ERR_OR_NULL(ent)) + if (!lif->dentry) return; - blob = devm_kzalloc(dev, sizeof(*blob), GFP_KERNEL); - blob->data = eq->ring[0].base; - blob->size = ring_bytes; - debugfs_create_blob("ring0", 0400, ent, blob); - - blob = devm_kzalloc(dev, sizeof(*blob), GFP_KERNEL); - blob->data = eq->ring[1].base; - blob->size = ring_bytes; - debugfs_create_blob("ring1", 0400, ent, blob); - - regset = devm_kzalloc(dev, sizeof(*regset), GFP_KERNEL); - regset->regs = intr_ctrl_regs; - regset->nregs = ARRAY_SIZE(intr_ctrl_regs); - regset->base = &eq->ionic->idev.intr_ctrl[eq->intr.index]; - debugfs_create_regset32("intr_ctrl", 0400, ent, regset); + debugfs_remove_recursive(lif->dentry); + lif->dentry = NULL; } void ionic_debugfs_del_qcq(struct ionic_qcq *qcq) diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.h index 5849ccb4d318..19634795f4f5 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_debugfs.h @@ -19,7 +19,6 @@ void ionic_debugfs_add_bars(struct ionic *ionic); void ionic_debugfs_add_dev_cmd(struct ionic *ionic); void ionic_debugfs_add_ident(struct ionic *ionic); void ionic_debugfs_add_sizes(struct ionic *ionic); -void ionic_debugfs_add_eq(struct ionic_eq *eq); void ionic_debugfs_add_lif(struct ionic_lif *lif); void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq); void ionic_debugfs_del_lif(struct ionic_lif *lif); @@ -33,7 +32,6 @@ static inline void ionic_debugfs_add_bars(struct ionic *ionic) { } static inline void ionic_debugfs_add_dev_cmd(struct ionic *ionic) { } static inline void ionic_debugfs_add_ident(struct ionic *ionic) { } static inline void ionic_debugfs_add_sizes(struct ionic *ionic) { } -static inline void ionic_debugfs_add_eq(struct ionic_eq *eq) { } static inline void ionic_debugfs_add_lif(struct ionic_lif *lif) { } static inline void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq) { } static inline void ionic_debugfs_del_lif(struct ionic_lif *lif) { } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.c index 42ba5ddf909a..bc7c1ff0051c 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.c @@ -20,12 +20,15 @@ void ionic_watchdog_cb(struct timer_list *t) struct ionic_deferred_work *work; int hb; - mod_timer(&ionic->watchdog_timer, - round_jiffies(jiffies + ionic->watchdog_period)); - if (!lif) return; + if (test_bit(IONIC_LIF_F_IN_SHUTDOWN, lif->state)) + return; + + mod_timer(&ionic->watchdog_timer, + round_jiffies(jiffies + ionic->watchdog_period)); + hb = ionic_heartbeat_check(ionic); dev_dbg(ionic->dev, "%s: hb %d running %d UP %d\n", __func__, hb, netif_running(lif->netdev), @@ -176,7 +179,12 @@ void ionic_dev_teardown(struct ionic *ionic) /* Devcmd Interface */ bool ionic_is_fw_running(struct ionic_dev *idev) { - u8 fw_status = ioread8(&idev->dev_info_regs->fw_status); + u8 fw_status; + + if (!idev->dev_info_regs) + return false; + + fw_status = ioread8(&idev->dev_info_regs->fw_status); /* firmware is useful only if the running bit is set and * fw_status != 0xff (bad PCI read) @@ -211,7 +219,7 @@ int ionic_heartbeat_check(struct ionic *ionic) fw_status = ioread8(&idev->dev_info_regs->fw_status); - /* If fw_status is not ready don't bother with the generation */ + /* If fw_status is not ready don't bother with the generation */ if (!ionic_is_fw_running(idev)) { fw_status_ready = false; } else { @@ -230,7 +238,8 @@ int ionic_heartbeat_check(struct ionic *ionic) * * If we had already moved to FW_RESET from a RESET event, * it is possible that we never saw the fw_status go to 0, - * so we fake it a bit here to get FW up again. + * so we fake the current idev->fw_status_ready here to + * force the transition and get FW up again. */ if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) idev->fw_status_ready = false; /* go to running */ @@ -250,14 +259,14 @@ int ionic_heartbeat_check(struct ionic *ionic) idev->fw_status_ready = fw_status_ready; - if (!fw_status_ready && lif && + if (!fw_status_ready && !test_bit(IONIC_LIF_F_FW_RESET, lif->state) && !test_and_set_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { dev_info(ionic->dev, "FW stopped 0x%02x\n", fw_status); trigger = true; - } else if (fw_status_ready && lif && + } else if (fw_status_ready && test_bit(IONIC_LIF_F_FW_RESET, lif->state) && !test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { @@ -281,11 +290,11 @@ int ionic_heartbeat_check(struct ionic *ionic) return -ENXIO; /* Because of some variability in the actual FW heartbeat, we - * wait longer than the current devcmd_timeout before checking + * wait longer than the current DEVCMD_TIMEOUT before checking * again, but never less than 5 seconds. */ last_check_time = idev->last_hb_time; - wt = max_t(int, (devcmd_timeout * 2), DEVCMD_TIMEOUT); + wt = max_t(int, (DEVCMD_TIMEOUT * 2), DEVCMD_TOUT_DEF); if (time_before(check_time, last_check_time + wt * HZ)) return 0; @@ -335,6 +344,7 @@ void ionic_dev_cmd_comp(struct ionic_dev *idev, union ionic_dev_cmd_comp *comp) void ionic_dev_cmd_go(struct ionic_dev *idev, union ionic_dev_cmd *cmd) { + idev->opcode = cmd->cmd.opcode; memcpy_toio(&idev->dev_cmd_regs->cmd, cmd, sizeof(*cmd)); iowrite32(0, &idev->dev_cmd_regs->done); iowrite32(1, &idev->dev_cmd_regs->doorbell); @@ -480,71 +490,25 @@ int ionic_set_vf_config(struct ionic *ionic, int vf, mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_go(&ionic->idev, &cmd); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); return err; } -int ionic_dev_cmd_vf_getattr(struct ionic *ionic, int vf, u8 attr, - struct ionic_vf_getattr_comp *comp) -{ - union ionic_dev_cmd cmd = { - .vf_getattr.opcode = IONIC_CMD_VF_GETATTR, - .vf_getattr.attr = attr, - .vf_getattr.vf_index = cpu_to_le16(vf), - }; - int err; - - if (vf >= ionic->num_vfs) - return -EINVAL; - - switch (attr) { - case IONIC_VF_ATTR_SPOOFCHK: - case IONIC_VF_ATTR_TRUST: - case IONIC_VF_ATTR_LINKSTATE: - case IONIC_VF_ATTR_MAC: - case IONIC_VF_ATTR_VLAN: - case IONIC_VF_ATTR_RATE: - break; - case IONIC_VF_ATTR_STATSADDR: - default: - return -EINVAL; - } - - mutex_lock(&ionic->dev_cmd_lock); - ionic_dev_cmd_go(&ionic->idev, &cmd); - err = ionic_dev_cmd_wait_nomsg(ionic, devcmd_timeout); - memcpy_fromio(comp, &ionic->idev.dev_cmd_regs->comp.vf_getattr, - sizeof(*comp)); - mutex_unlock(&ionic->dev_cmd_lock); - - if (err && comp->status != IONIC_RC_ENOSUPP) - ionic_dev_cmd_dev_err_print(ionic, cmd.vf_getattr.opcode, - comp->status, err); - - return err; -} - -void ionic_vf_start(struct ionic *ionic, int vf) +void ionic_vf_start(struct ionic *ionic) { #ifdef IONIC_DEV_IDENTITY_VERSION_2 union ionic_dev_cmd cmd = { .vf_ctrl.opcode = IONIC_CMD_VF_CTRL, + .vf_ctrl.ctrl_opcode = IONIC_VF_CTRL_START_ALL, }; - if (!(ionic->ident.dev.capabilities & IONIC_DEV_CAP_VF_CTRL)) + if (!(ionic->ident.dev.capabilities & cpu_to_le64(IONIC_DEV_CAP_VF_CTRL))) return; - if (vf == -1) { - cmd.vf_ctrl.ctrl_opcode = IONIC_VF_CTRL_START_ALL; - } else { - cmd.vf_ctrl.ctrl_opcode = IONIC_VF_CTRL_START; - cmd.vf_ctrl.vf_index = cpu_to_le16(vf); - } - ionic_dev_cmd_go(&ionic->idev, &cmd); - (void)ionic_dev_cmd_wait(ionic, devcmd_timeout); + ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); #endif } @@ -651,350 +615,6 @@ void ionic_put_cmb(struct ionic_lif *lif, u32 pgid, int order) mutex_unlock(&idev->cmb_inuse_lock); } -static void ionic_txrx_notify(struct ionic *ionic, - int lif_index, int qcq_id, bool is_tx) -{ - struct ionic_lif *lif = ionic->lif; - - if (!lif) - return; - - if (is_tx) - lif->txqcqs[qcq_id]->armed = false; - else - lif->rxqcqs[qcq_id]->armed = false; - - /* We schedule rx napi, it handles both tx and rx */ - napi_schedule_irqoff(&lif->rxqcqs[qcq_id]->napi); -} - -static bool ionic_next_eq_comp(struct ionic_eq *eq, int ring_index, - struct ionic_eq_comp *comp) -{ - struct ionic_eq_ring *ring = &eq->ring[ring_index]; - struct ionic_eq_comp *qcomp; - u8 gen_color; - - qcomp = &ring->base[ring->index]; - gen_color = qcomp->gen_color; - - if (gen_color == (u8)(ring->gen_color - 1)) - return false; - - /* Make sure ring descriptor is up-to-date before reading */ - smp_rmb(); - *comp = *qcomp; - gen_color = comp->gen_color; - - if (gen_color != ring->gen_color) { - dev_err(eq->ionic->dev, - "eq %u ring %u missed %u events\n", - eq->index, ring_index, - eq->depth * (gen_color - ring->gen_color)); - - ring->gen_color = gen_color; - } - - ring->index = (ring->index + 1) & (eq->depth - 1); - ring->gen_color += ring->index == 0; - - return true; -} - -static int ionic_poll_eq_ring(struct ionic_eq *eq, int ring_index) -{ - struct ionic_eq_comp comp; - int budget = eq->depth; - int credits = 0; - int code; - - while (credits < budget && ionic_next_eq_comp(eq, ring_index, &comp)) { - code = le16_to_cpu(comp.code); - - switch (code) { - case IONIC_EQ_COMP_CODE_NONE: - break; - case IONIC_EQ_COMP_CODE_RX_COMP: - case IONIC_EQ_COMP_CODE_TX_COMP: - ionic_txrx_notify(eq->ionic, - le16_to_cpu(comp.lif_index), - le32_to_cpu(comp.qid), - code == IONIC_EQ_COMP_CODE_TX_COMP); - break; - default: - dev_warn(eq->ionic->dev, - "eq %u ring %u unrecognized event %u\n", - eq->index, ring_index, code); - break; - } - - credits++; - } - - return credits; -} - -static irqreturn_t ionic_eq_isr(int irq, void *data) -{ - struct ionic_eq *eq = data; - int credits; - - credits = ionic_poll_eq_ring(eq, 0) + ionic_poll_eq_ring(eq, 1); - ionic_intr_credits(eq->ionic->idev.intr_ctrl, eq->intr.index, - credits, IONIC_INTR_CRED_UNMASK); - - return IRQ_HANDLED; -} - -static int ionic_request_eq_irq(struct ionic *ionic, struct ionic_eq *eq) -{ - struct device *dev = ionic->dev; - struct ionic_intr_info *intr = &eq->intr; - const char *name = dev_name(dev); - - snprintf(intr->name, sizeof(intr->name), - "%s-%s-eq%d", IONIC_DRV_NAME, name, eq->index); - - return devm_request_irq(dev, intr->vector, ionic_eq_isr, - 0, intr->name, eq); -} - -static int ionic_eq_alloc(struct ionic *ionic, int index) -{ - const int ring_bytes = sizeof(struct ionic_eq_comp) * IONIC_EQ_DEPTH; - struct ionic_eq *eq; - int err; - - eq = kzalloc(sizeof(*eq), GFP_KERNEL); - eq->ionic = ionic; - eq->index = index; - eq->depth = IONIC_EQ_DEPTH; - - err = ionic_intr_alloc(ionic, &eq->intr); - if (err) { - dev_warn(ionic->dev, "no intr for eq %u: %d\n", index, err); - goto err_out; - } - - err = ionic_bus_get_irq(ionic, eq->intr.index); - if (err < 0) { - dev_warn(ionic->dev, "no vector for eq %u: %d\n", index, err); - goto err_out_free_intr; - } - eq->intr.vector = err; - - ionic_intr_mask_assert(ionic->idev.intr_ctrl, eq->intr.index, - IONIC_INTR_MASK_SET); - - /* try to get the irq on the local numa node first */ - eq->intr.cpu = cpumask_local_spread(eq->intr.index, - dev_to_node(ionic->dev)); - if (eq->intr.cpu != -1) - cpumask_set_cpu(eq->intr.cpu, &eq->intr.affinity_mask); - - eq->ring[0].gen_color = 1; - eq->ring[0].base = dma_alloc_coherent(ionic->dev, ring_bytes, - &eq->ring[0].base_pa, - GFP_KERNEL); - - eq->ring[1].gen_color = 1; - eq->ring[1].base = dma_alloc_coherent(ionic->dev, ring_bytes, - &eq->ring[1].base_pa, - GFP_KERNEL); - - ionic->eqs[index] = eq; - - ionic_debugfs_add_eq(eq); - - return 0; - -err_out_free_intr: - ionic_intr_free(ionic, eq->intr.index); -err_out: - kfree(eq); - return err; -} - -int ionic_eqs_alloc(struct ionic *ionic) -{ - size_t eq_size; - int i, err; - - eq_size = sizeof(*ionic->eqs) * ionic->neth_eqs; - ionic->eqs = kzalloc(eq_size, GFP_KERNEL); - if (!ionic->eqs) - return -ENOMEM; - - for (i = 0; i < ionic->neth_eqs; i++) { - err = ionic_eq_alloc(ionic, i); - if (err) - return err; - } - - return 0; -} - -static void ionic_eq_free(struct ionic_eq *eq) -{ - const int ring_bytes = sizeof(struct ionic_eq_comp) * IONIC_EQ_DEPTH; - struct ionic *ionic = eq->ionic; - - eq->ionic->eqs[eq->index] = NULL; - - dma_free_coherent(ionic->dev, ring_bytes, - eq->ring[0].base, - eq->ring[0].base_pa); - dma_free_coherent(ionic->dev, ring_bytes, - eq->ring[1].base, - eq->ring[1].base_pa); - ionic_intr_free(ionic, eq->intr.index); - kfree(eq); -} - -void ionic_eqs_free(struct ionic *ionic) -{ - int i; - - if (!ionic->eqs) - return; - - for (i = 0; i < ionic->neth_eqs; i++) { - if (ionic->eqs[i]) - ionic_eq_free(ionic->eqs[i]); - } - - kfree(ionic->eqs); - ionic->eqs = NULL; - ionic->neth_eqs = 0; -} - -static void ionic_eq_deinit(struct ionic_eq *eq) -{ - struct ionic *ionic = eq->ionic; - union ionic_dev_cmd cmd = { - .q_control = { - .opcode = IONIC_CMD_Q_CONTROL, - .type = IONIC_QTYPE_EQ, - .index = cpu_to_le32(eq->index), - .oper = IONIC_Q_DISABLE, - }, - }; - - if (!eq->is_init) - return; - eq->is_init = false; - - mutex_lock(&ionic->dev_cmd_lock); - ionic_dev_cmd_go(&ionic->idev, &cmd); - ionic_dev_cmd_wait(ionic, devcmd_timeout); - mutex_unlock(&ionic->dev_cmd_lock); - - ionic_intr_mask(ionic->idev.intr_ctrl, eq->intr.index, - IONIC_INTR_MASK_SET); - synchronize_irq(eq->intr.vector); - - irq_set_affinity_hint(eq->intr.vector, NULL); - devm_free_irq(ionic->dev, eq->intr.vector, eq); -} - -void ionic_eqs_deinit(struct ionic *ionic) -{ - int i; - - if (!ionic->eqs) - return; - - for (i = 0; i < ionic->neth_eqs; i++) { - if (ionic->eqs[i]) - ionic_eq_deinit(ionic->eqs[i]); - } -} - -static int ionic_eq_init(struct ionic_eq *eq) -{ - struct ionic *ionic = eq->ionic; - union ionic_q_identity __iomem *q_ident; - union ionic_dev_cmd cmd = { - .q_init = { - .opcode = IONIC_CMD_Q_INIT, - .type = IONIC_QTYPE_EQ, - .ver = 0, - .index = cpu_to_le32(eq->index), - .intr_index = cpu_to_le16(eq->intr.index), - .flags = cpu_to_le16(IONIC_QINIT_F_IRQ | - IONIC_QINIT_F_ENA), - .ring_size = ilog2(eq->depth), - .ring_base = cpu_to_le64(eq->ring[0].base_pa), - .cq_ring_base = cpu_to_le64(eq->ring[1].base_pa), - }, - }; - int err; - - q_ident = (union ionic_q_identity __iomem *)&ionic->idev.dev_cmd_regs->data; - - mutex_lock(&ionic->dev_cmd_lock); - ionic_dev_cmd_queue_identify(&ionic->idev, IONIC_LIF_TYPE_CLASSIC, - IONIC_QTYPE_EQ, 0); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); - cmd.q_init.ver = ioread8(&q_ident->version); - mutex_unlock(&ionic->dev_cmd_lock); - - if (err == -EINVAL) { - dev_err(ionic->dev, "eq init failed, not supported\n"); - return err; - } else if (err == -EIO) { - dev_err(ionic->dev, "q_ident eq failed, not supported on older FW\n"); - return err; - } else if (err) { - dev_warn(ionic->dev, "eq version type request failed %d, defaulting to %d\n", - err, cmd.q_init.ver); - } - - ionic_intr_mask(ionic->idev.intr_ctrl, eq->intr.index, - IONIC_INTR_MASK_SET); - ionic_intr_clean(ionic->idev.intr_ctrl, eq->intr.index); - - err = ionic_request_eq_irq(ionic, eq); - if (err) { - dev_warn(ionic->dev, "eq %d irq request failed %d\n", - eq->index, err); - return err; - } - - mutex_lock(&ionic->dev_cmd_lock); - ionic_dev_cmd_go(&ionic->idev, &cmd); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); - mutex_unlock(&ionic->dev_cmd_lock); - - if (err) { - dev_err(ionic->dev, "eq %d init failed %d\n", - eq->index, err); - return err; - } - - ionic_intr_mask(ionic->idev.intr_ctrl, eq->intr.index, - IONIC_INTR_MASK_CLEAR); - - eq->is_init = true; - - return 0; -} - -int ionic_eqs_init(struct ionic *ionic) -{ - int i, err; - - for (i = 0; i < ionic->neth_eqs; i++) { - if (ionic->eqs[i]) { - err = ionic_eq_init(ionic->eqs[i]); - if (err) - return err; - } - } - - return 0; -} - int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, struct ionic_intr_info *intr, unsigned int num_descs, size_t desc_size) diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.h index 884038d4bda0..fdd7c0131cbe 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_dev.h @@ -149,6 +149,7 @@ struct ionic_dev { bool fw_hb_ready; bool fw_status_ready; u8 fw_generation; + u8 opcode; u64 __iomem *db_pages; dma_addr_t phy_db_pages; @@ -185,12 +186,12 @@ typedef void (*ionic_desc_cb)(struct ionic_queue *q, struct ionic_desc_info *desc_info, struct ionic_cq_info *cq_info, void *cb_arg); - +#define IONIC_MAX_BUF_LEN ((u16)-1) #define IONIC_PAGE_ORDER 0 #define IONIC_PAGE_SIZE (PAGE_SIZE << IONIC_PAGE_ORDER) #define IONIC_PAGE_SPLIT_SZ (PAGE_SIZE / 4) #define IONIC_PAGE_GFP_MASK (GFP_ATOMIC | __GFP_NOWARN |\ - __GFP_COMP | __GFP_MEMALLOC) + __GFP_COMP | __GFP_MEMALLOC) struct ionic_buf_info { struct page *page; @@ -224,12 +225,12 @@ struct ionic_desc_info { }; unsigned int bytes; unsigned int nbufs; - struct ionic_buf_info bufs[IONIC_MAX_FRAGS]; + struct ionic_buf_info bufs[MAX_SKB_FRAGS + 1]; ionic_desc_cb cb; void *cb_arg; }; -#define IONIC_QUEUE_NAME_MAX_SZ 32 +#define IONIC_QUEUE_NAME_MAX_SZ 16 struct ionic_queue { struct device *dev; @@ -274,7 +275,7 @@ struct ionic_queue { unsigned int desc_size; unsigned int sg_desc_size; unsigned int pid; - struct ionic_page_cache page_cache; + struct ionic_page_cache *page_cache; char name[IONIC_QUEUE_NAME_MAX_SZ]; } ____cacheline_aligned_in_smp; @@ -283,12 +284,13 @@ struct ionic_queue { struct ionic_intr_info { char name[IONIC_INTR_NAME_MAX_SZ]; + u64 rearm_count; unsigned int index; unsigned int vector; - u64 rearm_count; unsigned int cpu; - cpumask_t affinity_mask; u32 dim_coal_hw; + u16 dim_coal_usecs; + cpumask_t affinity_mask; }; struct ionic_cq { @@ -307,27 +309,6 @@ struct ionic_cq { dma_addr_t base_pa; /* must be page aligned */ } ____cacheline_aligned_in_smp; -struct ionic_eq_ring { - struct ionic_eq_comp *base; - dma_addr_t base_pa; - - int index; - u8 gen_color; -}; - -struct ionic_eq { - struct ionic *ionic; - struct ionic_eq_ring ring[2]; - struct ionic_intr_info intr; - - int index; - int depth; - - bool is_init; -}; - -#define IONIC_EQ_DEPTH 0x1000 - struct ionic; static inline void ionic_intr_init(struct ionic_dev *idev, @@ -379,12 +360,10 @@ void ionic_dev_cmd_port_pause(struct ionic_dev *idev, u8 pause_type); int ionic_set_vf_config(struct ionic *ionic, int vf, struct ionic_vf_setattr_cmd *vfc); -int ionic_dev_cmd_vf_getattr(struct ionic *ionic, int vf, u8 attr, - struct ionic_vf_getattr_comp *comp); -void ionic_vf_start(struct ionic *ionic, int vf); void ionic_dev_cmd_queue_identify(struct ionic_dev *idev, u16 lif_type, u8 qtype, u8 qver); +void ionic_vf_start(struct ionic *ionic); void ionic_dev_cmd_lif_identify(struct ionic_dev *idev, u8 type, u8 ver); void ionic_dev_cmd_lif_init(struct ionic_dev *idev, u16 lif_index, dma_addr_t addr); @@ -397,11 +376,6 @@ int ionic_db_page_num(struct ionic_lif *lif, int pid); int ionic_get_cmb(struct ionic_lif *lif, u32 *pgid, phys_addr_t *pgaddr, int order); void ionic_put_cmb(struct ionic_lif *lif, u32 pgid, int order); -int ionic_eqs_alloc(struct ionic *ionic); -void ionic_eqs_free(struct ionic *ionic); -void ionic_eqs_deinit(struct ionic *ionic); -int ionic_eqs_init(struct ionic *ionic); - int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, struct ionic_intr_info *intr, unsigned int num_descs, size_t desc_size); @@ -422,7 +396,6 @@ void ionic_q_cmb_map(struct ionic_queue *q, void __iomem *base, dma_addr_t base_ void ionic_q_sg_map(struct ionic_queue *q, void *base, dma_addr_t base_pa); void ionic_q_post(struct ionic_queue *q, bool ring_doorbell, ionic_desc_cb cb, void *cb_arg); -void ionic_q_rewind(struct ionic_queue *q, struct ionic_desc_info *start); void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, unsigned int stop_index); int ionic_heartbeat_check(struct ionic *ionic); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_devlink.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_devlink.c index ac11d6846563..f5813a652723 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_devlink.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_devlink.c @@ -98,6 +98,8 @@ struct ionic *ionic_devlink_alloc(struct device *dev) struct devlink *dl; dl = devlink_alloc(&ionic_dl_ops, sizeof(struct ionic), dev); + if (!dl) + return NULL; return devlink_priv(dl); } @@ -122,7 +124,7 @@ int ionic_devlink_register(struct ionic *ionic) return err; } - devlink_port_type_eth_set(&ionic->dl_port, ionic->lif->netdev); + SET_NETDEV_DEVLINK_PORT(ionic->lif->netdev, &ionic->dl_port); devlink_register(dl); #else err = devlink_register(dl, ionic->dev); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_ethtool.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_ethtool.c index 67d004ed7714..8cfe461e8ca3 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_ethtool.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_ethtool.c @@ -40,31 +40,6 @@ static const char ionic_priv_flags_strings[][ETH_GSTRING_LEN] = { #define IONIC_PRIV_FLAGS_COUNT ARRAY_SIZE(ionic_priv_flags_strings) -static int ionic_validate_cmb_config(struct ionic_lif *lif, - struct ionic_queue_params *qparam) -{ - int pages_have, pages_required = 0; - unsigned long sz; - - if (!qparam->cmb_enabled) - return 0; - - sz = sizeof(struct ionic_txq_desc) * qparam->ntxq_descs * qparam->nxqs; - pages_required += ALIGN(sz, PAGE_SIZE) / PAGE_SIZE; - - sz = sizeof(struct ionic_rxq_desc) * qparam->nrxq_descs * qparam->nxqs; - pages_required += ALIGN(sz, PAGE_SIZE) / PAGE_SIZE; - - pages_have = lif->ionic->bars[IONIC_PCI_BAR_CMB].len / PAGE_SIZE; - if (pages_required > pages_have) { - netdev_info(lif->netdev, "Not enough CMB pages for number of queues and size of descriptor rings, need %d have %d", - pages_required, pages_have); - return -ENOMEM; - } - - return pages_required; -} - static void ionic_get_stats_strings(struct ionic_lif *lif, u8 *buf) { u32 i; @@ -166,6 +141,17 @@ static void ionic_get_regs(struct net_device *netdev, struct ethtool_regs *regs, memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size); } +#if (KERNEL_VERSION(6, 2, 0) <= LINUX_VERSION_CODE) +static void ionic_get_link_ext_stats(struct net_device *netdev, + struct ethtool_link_ext_stats *stats) +{ + struct ionic_lif *lif = netdev_priv(netdev); + + if (!lif->ionic->pdev || lif->ionic->pdev->is_physfn) + stats->link_down_events = lif->link_down_count; +} +#endif + static int ionic_get_link_ksettings(struct net_device *netdev, struct ethtool_link_ksettings *ks) { @@ -377,7 +363,7 @@ static int ionic_set_link_ksettings(struct net_device *netdev, if (ks->base.autoneg != idev->port_info->config.an_enable) { mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_autoneg(idev, ks->base.autoneg); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); if (err) return err; @@ -387,7 +373,7 @@ static int ionic_set_link_ksettings(struct net_device *netdev, if (ks->base.speed != le32_to_cpu(idev->port_info->config.speed)) { mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_speed(idev, ks->base.speed); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); if (err) return err; @@ -437,7 +423,7 @@ static int ionic_set_pauseparam(struct net_device *netdev, mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); if (err) return err; @@ -514,15 +500,15 @@ static int ionic_set_fecparam(struct net_device *netdev, break; case ETHTOOL_FEC_AUTO: default: - netdev_err(netdev, "FEC request 0x%04x not supported\n", + netdev_dbg(netdev, "FEC request 0x%04x not supported\n", fec->fec); - return -EINVAL; + return -EOPNOTSUPP; } if (fec_type != lif->ionic->idev.port_info->config.fec_type) { mutex_lock(&lif->ionic->dev_cmd_lock); ionic_dev_cmd_port_fec(&lif->ionic->idev, fec_type); - ret = ionic_dev_cmd_wait(lif->ionic, devcmd_timeout); + ret = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); mutex_unlock(&lif->ionic->dev_cmd_lock); } @@ -591,12 +577,6 @@ static int ionic_set_coalesce(struct net_device *netdev, coalesce->rate_sample_interval) return -EINVAL; - if (lif->ionic->neth_eqs && - (coalesce->use_adaptive_rx_coalesce || - coalesce->use_adaptive_tx_coalesce)) { - return -EINVAL; - } - ident = &lif->ionic->ident; if (ident->dev.intr_coal_div == 0) { netdev_warn(netdev, "bad HW value in dev.intr_coal_div = %d\n", @@ -659,6 +639,8 @@ static int ionic_set_coalesce(struct net_device *netdev, lif->rxqcqs[i]->intr.index, lif->rx_coalesce_hw); lif->rxqcqs[i]->intr.dim_coal_hw = rx_dim; + lif->rxqcqs[i]->intr.dim_coal_usecs = + lif->rx_coalesce_usecs; } if (lif->txqcqs[i]->flags & IONIC_QCQ_F_INTR) { @@ -666,6 +648,8 @@ static int ionic_set_coalesce(struct net_device *netdev, lif->txqcqs[i]->intr.index, lif->tx_coalesce_hw); lif->txqcqs[i]->intr.dim_coal_hw = tx_dim; + lif->txqcqs[i]->intr.dim_coal_usecs = + lif->tx_coalesce_usecs; } } } @@ -673,6 +657,95 @@ static int ionic_set_coalesce(struct net_device *netdev, return 0; } +static int ionic_validate_cmb_config(struct ionic_lif *lif, + struct ionic_queue_params *qparam) +{ + int pages_have, pages_required = 0; + unsigned long sz; + + if (!lif->ionic->idev.cmb_inuse && + (qparam->cmb_tx || qparam->cmb_rx)) { + netdev_info(lif->netdev, "CMB rings are not supported on this device\n"); + return -EOPNOTSUPP; + } + + if (qparam->cmb_tx) { + if (!(lif->qtype_info[IONIC_QTYPE_TXQ].features & IONIC_QIDENT_F_CMB)) { + netdev_info(lif->netdev, + "CMB rings for tx-push are not supported on this device\n"); + return -EOPNOTSUPP; + } + + sz = sizeof(struct ionic_txq_desc) * qparam->ntxq_descs * qparam->nxqs; + pages_required += ALIGN(sz, PAGE_SIZE) / PAGE_SIZE; + } + + if (qparam->cmb_rx) { + if (!(lif->qtype_info[IONIC_QTYPE_RXQ].features & IONIC_QIDENT_F_CMB)) { + netdev_info(lif->netdev, + "CMB rings for rx-push are not supported on this device\n"); + return -EOPNOTSUPP; + } + + sz = sizeof(struct ionic_rxq_desc) * qparam->nrxq_descs * qparam->nxqs; + pages_required += ALIGN(sz, PAGE_SIZE) / PAGE_SIZE; + } + + pages_have = lif->ionic->bars[IONIC_PCI_BAR_CMB].len / PAGE_SIZE; + if (pages_required > pages_have) { + netdev_info(lif->netdev, + "Not enough CMB pages for number of queues and size of descriptor rings, need %d have %d", + pages_required, pages_have); + return -ENOMEM; + } + + return pages_required; +} + +int ionic_cmb_pages_in_use(struct ionic_lif *lif) +{ + struct ionic_queue_params qparam; + + ionic_init_queue_params(lif, &qparam); + return ionic_validate_cmb_config(lif, &qparam); +} + +static int ionic_cmb_rings_toggle(struct ionic_lif *lif, bool cmb_tx, bool cmb_rx) +{ + struct ionic_queue_params qparam; + int pages_used; + + if (netif_running(lif->netdev)) { + netdev_info(lif->netdev, "Please stop device to toggle CMB for tx/rx-push\n"); + return -EBUSY; + } + + ionic_init_queue_params(lif, &qparam); + qparam.cmb_tx = cmb_tx; + qparam.cmb_rx = cmb_rx; + pages_used = ionic_validate_cmb_config(lif, &qparam); + if (pages_used < 0) + return pages_used; + + if (cmb_tx) + set_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); + else + clear_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); + + if (cmb_rx) + set_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); + else + clear_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); + + if (cmb_tx || cmb_rx) + netdev_info(lif->netdev, "Enabling CMB %s %s rings - %d pages\n", + cmb_tx ? "TX" : "", cmb_rx ? "RX" : "", pages_used); + else + netdev_info(lif->netdev, "Disabling CMB rings\n"); + + return 0; +} + #ifdef HAVE_RINGPARAM_EXTACK static void ionic_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring, @@ -689,6 +762,10 @@ static void ionic_get_ringparam(struct net_device *netdev, ring->tx_pending = lif->ntxq_descs; ring->rx_max_pending = IONIC_MAX_RX_DESC; ring->rx_pending = lif->nrxq_descs; +#ifdef HAVE_RX_PUSH + kernel_ring->tx_push = test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); + kernel_ring->rx_push = test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); +#endif } #ifdef HAVE_RINGPARAM_EXTACK @@ -705,6 +782,9 @@ static int ionic_set_ringparam(struct net_device *netdev, struct ionic_queue_params qparam; int err; + if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) + return -EBUSY; + ionic_init_queue_params(lif, &qparam); if (ring->rx_mini_pending || ring->rx_jumbo_pending) { @@ -734,16 +814,36 @@ static int ionic_set_ringparam(struct net_device *netdev, /* if nothing to do return success */ if (ring->tx_pending == lif->ntxq_descs && - ring->rx_pending == lif->nrxq_descs) + ring->rx_pending == lif->nrxq_descs +#ifdef HAVE_RX_PUSH + && + kernel_ring->tx_push == test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) && + kernel_ring->rx_push == test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state) +#endif + ) return 0; qparam.ntxq_descs = ring->tx_pending; qparam.nrxq_descs = ring->rx_pending; +#ifdef HAVE_RX_PUSH + qparam.cmb_tx = kernel_ring->tx_push; + qparam.cmb_rx = kernel_ring->rx_push; +#endif err = ionic_validate_cmb_config(lif, &qparam); if (err < 0) return err; +#ifdef HAVE_RX_PUSH + if (kernel_ring->tx_push != test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) || + kernel_ring->rx_push != test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state)) { + err = ionic_cmb_rings_toggle(lif, kernel_ring->tx_push, + kernel_ring->rx_push); + if (err < 0) + return err; + } + +#endif if (ring->tx_pending != lif->ntxq_descs) netdev_info(netdev, "Changing Tx ring size from %d to %d\n", lif->ntxq_descs, ring->tx_pending); @@ -775,10 +875,8 @@ static void ionic_get_channels(struct net_device *netdev, /* report maximum channels */ ch->max_combined = lif->ionic->ntxqs_per_lif; - if (!ionic_use_eqs(lif)) { - ch->max_rx = lif->ionic->ntxqs_per_lif / 2; - ch->max_tx = lif->ionic->ntxqs_per_lif / 2; - } + ch->max_rx = lif->ionic->ntxqs_per_lif / 2; + ch->max_tx = lif->ionic->ntxqs_per_lif / 2; /* report current channels */ if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) { @@ -797,6 +895,9 @@ static int ionic_set_channels(struct net_device *netdev, int max_cnt; int err; + if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) + return -EBUSY; + ionic_init_queue_params(lif, &qparam); /* Valid cases @@ -819,11 +920,6 @@ static int ionic_set_channels(struct net_device *netdev, return -EINVAL; } - if (ionic_use_eqs(lif) && ch->rx_count) { - netdev_info(netdev, "Separate rx and tx count not available when using EventQueues\n"); - return -EINVAL; - } - if (ch->combined_count && ch->rx_count) { netdev_info(netdev, "Use either combined or rx and tx, not both\n"); return -EINVAL; @@ -890,52 +986,23 @@ static int ionic_set_channels(struct net_device *netdev, return err; } -int ionic_cmb_pages_in_use(struct ionic_lif *lif) -{ - struct ionic_queue_params qparam; - - ionic_init_queue_params(lif, &qparam); - return ionic_validate_cmb_config(lif, &qparam); -} - -static int ionic_cmb_rings_toggle(struct ionic_lif *lif, bool cmb_enable) +static int ionic_get_rxnfc(struct net_device *netdev, + struct ethtool_rxnfc *info, u32 *rules) { - struct ionic_queue_params qparam; - int pages_used; - - if (!(lif->qtype_info[IONIC_QTYPE_TXQ].features & IONIC_QIDENT_F_CMB) || - !(lif->qtype_info[IONIC_QTYPE_RXQ].features & IONIC_QIDENT_F_CMB) || - !lif->ionic->idev.cmb_npages) { - netdev_info(lif->netdev, "CMB rings are not supported on this device\n"); - return -EOPNOTSUPP; - } - - if (netif_running(lif->netdev)) - return -EBUSY; - - ionic_init_queue_params(lif, &qparam); - qparam.cmb_enabled = cmb_enable; - pages_used = ionic_validate_cmb_config(lif, &qparam); - if (pages_used < 0) - return pages_used; + struct ionic_lif *lif = netdev_priv(netdev); + int err = 0; - if (cmb_enable) { - netdev_info(lif->netdev, "Enabling CMB rings - %d pages\n", - pages_used); - set_bit(IONIC_LIF_F_CMB_RINGS, lif->state); - } else { - netdev_info(lif->netdev, "Disabling CMB rings\n"); - clear_bit(IONIC_LIF_F_CMB_RINGS, lif->state); + switch (info->cmd) { + case ETHTOOL_GRXRINGS: + info->data = lif->nxqs; + break; + default: + netdev_dbg(netdev, "Command parameter %d is not supported\n", + info->cmd); + err = -EOPNOTSUPP; } - /* We are currently restricting CMB mode enable/disable to - * only when the driver is DOWN, in order to keep reconfig - * thrash to a minimum and to keep the reconfig code simpler. - * In the future when we relax this requirement we can call - * ionic_reconfigure_queues() here. - */ - - return 0; + return err; } static u32 ionic_get_priv_flags(struct net_device *netdev) @@ -949,7 +1016,8 @@ static u32 ionic_get_priv_flags(struct net_device *netdev) if (test_bit(IONIC_LIF_F_RDMA_SNIFFER, lif->state)) priv_flags |= IONIC_PRIV_F_RDMA_SNIFFER; - if (test_bit(IONIC_LIF_F_CMB_RINGS, lif->state)) + if (test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) || + test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state)) priv_flags |= IONIC_PRIV_F_CMB_RINGS; return priv_flags; @@ -958,12 +1026,14 @@ static u32 ionic_get_priv_flags(struct net_device *netdev) static int ionic_set_priv_flags(struct net_device *netdev, u32 priv_flags) { struct ionic_lif *lif = netdev_priv(netdev); - bool cmb_now, cmb_req; + bool cmb_req; int rdma; int ret; - if (priv_flags & IONIC_PRIV_F_DEVICE_RESET) - ionic_device_reset(lif); + if (priv_flags & IONIC_PRIV_F_DEVICE_RESET) { + ionic_reset_prepare(lif->ionic->pdev); + ionic_reset_done(lif->ionic->pdev); + } clear_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state); if (priv_flags & IONIC_PRIV_F_SW_DBG_STATS) @@ -977,10 +1047,12 @@ static int ionic_set_priv_flags(struct net_device *netdev, u32 priv_flags) if (rdma != test_bit(IONIC_LIF_F_RDMA_SNIFFER, lif->state)) ionic_lif_rx_mode(lif); - cmb_now = test_bit(IONIC_LIF_F_CMB_RINGS, lif->state); cmb_req = !!(priv_flags & IONIC_PRIV_F_CMB_RINGS); - if (cmb_now != cmb_req) { - ret = ionic_cmb_rings_toggle(lif, cmb_req); + if ((cmb_req && !(test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) && + test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state))) || + (!cmb_req && (test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) || + test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state)))) { + ret = ionic_cmb_rings_toggle(lif, cmb_req, cmb_req); if (ret < 0) return ret; } @@ -988,25 +1060,6 @@ static int ionic_set_priv_flags(struct net_device *netdev, u32 priv_flags) return 0; } -static int ionic_get_rxnfc(struct net_device *netdev, - struct ethtool_rxnfc *info, u32 *rules) -{ - struct ionic_lif *lif = netdev_priv(netdev); - int err = 0; - - switch (info->cmd) { - case ETHTOOL_GRXRINGS: - info->data = lif->nxqs; - break; - default: - netdev_err(netdev, "Command parameter %d is not supported\n", - info->cmd); - err = -EOPNOTSUPP; - } - - return err; -} - static u32 ionic_get_rxfh_indir_size(struct net_device *netdev) { struct ionic_lif *lif = netdev_priv(netdev); @@ -1281,11 +1334,11 @@ static int ionic_nway_reset(struct net_device *netdev) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_DOWN); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); if (!err) { ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); } mutex_unlock(&ionic->dev_cmd_lock); @@ -1309,11 +1362,18 @@ static const struct ethtool_ops ionic_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_USECS | ETHTOOL_COALESCE_USE_ADAPTIVE_RX | ETHTOOL_COALESCE_USE_ADAPTIVE_TX, +#endif +#ifdef HAVE_RX_PUSH + .supported_ring_params = ETHTOOL_RING_USE_TX_PUSH | + ETHTOOL_RING_USE_RX_PUSH, #endif .get_drvinfo = ionic_get_drvinfo, .get_regs_len = ionic_get_regs_len, .get_regs = ionic_get_regs, .get_link = ethtool_op_get_link, +#if (KERNEL_VERSION(6, 2, 0) <= LINUX_VERSION_CODE) + .get_link_ext_stats = ionic_get_link_ext_stats, +#endif .get_link_ksettings = ionic_get_link_ksettings, .set_link_ksettings = ionic_set_link_ksettings, .get_coalesce = ionic_get_coalesce, diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_fw.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_fw.c index 88702a98c5bd..0336eff673e6 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_fw.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_fw.c @@ -105,7 +105,7 @@ int ionic_firmware_update(struct ionic_lif *lif, const struct firmware *fw) ionic_dev_cmd_firmware_download(idev, offsetof(union ionic_dev_cmd_regs, data), offset, copy_sz); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); if (err) { netdev_err(netdev, @@ -129,7 +129,7 @@ int ionic_firmware_update(struct ionic_lif *lif, const struct firmware *fw) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_firmware_install(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); ionic_dev_cmd_comp(idev, (union ionic_dev_cmd_comp *)&comp); fw_slot = comp.fw_control.slot; mutex_unlock(&ionic->dev_cmd_lock); @@ -154,7 +154,7 @@ int ionic_firmware_update(struct ionic_lif *lif, const struct firmware *fw) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_firmware_activate(idev, fw_slot); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); if (err) { netdev_err(netdev, "failed to start firmware select\n"); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.c index 021cc604f97b..2ab653da0187 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.c @@ -36,6 +36,7 @@ static const u8 ionic_qtype_versions[IONIC_QTYPE_MAX] = { static void ionic_link_status_check(struct ionic_lif *lif); static void ionic_lif_handle_fw_down(struct ionic_lif *lif); static void ionic_lif_handle_fw_up(struct ionic_lif *lif); +static void ionic_lif_set_netdev_info(struct ionic_lif *lif); static void ionic_txrx_deinit(struct ionic_lif *lif); static int ionic_txrx_init(struct ionic_lif *lif); @@ -44,29 +45,49 @@ static int ionic_open(struct net_device *netdev); static void ionic_stop_queues(struct ionic_lif *lif); static int ionic_stop(struct net_device *netdev); static void ionic_lif_queue_identify(struct ionic_lif *lif); -static void ionic_lif_set_netdev_info(struct ionic_lif *lif); + +struct ionic_dim { + u16 coal_usecs; +}; + +#define IONIC_DIM_DEFAULT_PROFILE_IX 3 +static const struct ionic_dim dim_profile[] = { + {1}, + {2}, + {4}, + {8}, + {16}, +}; + +static u16 ionic_net_dim_get_moderation(u8 profile_ix) +{ + profile_ix = min_t(u8, profile_ix, ARRAY_SIZE(dim_profile)); + + return dim_profile[profile_ix].coal_usecs; +} static void ionic_dim_work(struct work_struct *work) { struct dim *dim = container_of(work, struct dim, work); - struct dim_cq_moder cur_moder; + struct ionic_intr_info *intr; struct ionic_qcq *qcq; + struct ionic_lif *lif; + u16 coal_usecs; u32 new_coal; - cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix); + coal_usecs = ionic_net_dim_get_moderation(dim->profile_ix); qcq = container_of(dim, struct ionic_qcq, dim); - new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec); + lif = qcq->q.lif; + new_coal = ionic_coal_usec_to_hw(lif->ionic, coal_usecs); new_coal = new_coal ? new_coal : 1; - if (qcq->intr.dim_coal_hw != new_coal) { - unsigned int qi = qcq->cq.bound_q->index; - struct ionic_lif *lif = qcq->q.lif; - - qcq->intr.dim_coal_hw = new_coal; + intr = &qcq->intr; + if (intr->dim_coal_hw != new_coal) { + intr->dim_coal_hw = new_coal; + intr->dim_coal_usecs = coal_usecs; ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, - lif->rxqcqs[qi]->intr.index, - qcq->intr.dim_coal_hw); + intr->index, intr->dim_coal_hw); } dim->state = DIM_START_MEASURE; @@ -107,7 +128,8 @@ static void ionic_lif_deferred_work(struct work_struct *work) * if the FW is already back rather than * waiting another whole cycle */ - mod_timer(&lif->ionic->watchdog_timer, jiffies + 1); + if (!test_bit(IONIC_LIF_F_IN_SHUTDOWN, lif->state)) + mod_timer(&lif->ionic->watchdog_timer, jiffies + 1); } break; default: @@ -158,7 +180,7 @@ static void ionic_link_status_check(struct ionic_lif *lif) netdev_err(netdev, "Failed to start queues: %d\n", err); set_bit(IONIC_LIF_F_BROKEN, lif->state); - netif_carrier_off(netdev); + netif_carrier_off(lif->netdev); } mutex_unlock(&lif->queue_lock); } @@ -170,6 +192,7 @@ static void ionic_link_status_check(struct ionic_lif *lif) } } else { if (netif_carrier_ok(netdev)) { + lif->link_down_count++; netdev_info(netdev, "Link down\n"); netif_carrier_off(netdev); } @@ -213,7 +236,7 @@ static void ionic_napi_deadline(struct timer_list *timer) napi_schedule(&qcq->napi); } -static irqreturn_t ionic_napi_isr(int irq, void *data) +static irqreturn_t ionic_isr(int irq, void *data) { struct napi_struct *napi = data; @@ -222,7 +245,7 @@ static irqreturn_t ionic_napi_isr(int irq, void *data) return IRQ_HANDLED; } -static int ionic_request_napi_irq(struct ionic_lif *lif, struct ionic_qcq *qcq) +static int ionic_request_irq(struct ionic_lif *lif, struct ionic_qcq *qcq) { struct ionic_intr_info *intr = &qcq->intr; struct device *dev = lif->ionic->dev; @@ -237,7 +260,7 @@ static int ionic_request_napi_irq(struct ionic_lif *lif, struct ionic_qcq *qcq) snprintf(intr->name, sizeof(intr->name), "%s-%s-%s", IONIC_DRV_NAME, name, q->name); - return devm_request_irq(dev, intr->vector, ionic_napi_isr, + return devm_request_irq(dev, intr->vector, ionic_isr, 0, intr->name, &qcq->napi); } @@ -299,14 +322,7 @@ static int ionic_qcq_enable(struct ionic_qcq *qcq) if (qcq->napi.poll) napi_enable(&qcq->napi); - if (lif->ionic->neth_eqs) { - qcq->armed = true; - ionic_dbell_ring(lif->kern_dbpage, - qcq->q.hw_type, - IONIC_DBELL_RING_1 | - IONIC_DBELL_QID(qcq->q.hw_index) | - qcq->cq.tail_idx); - } else if (qcq->flags & IONIC_QCQ_F_INTR) { + if (qcq->flags & IONIC_QCQ_F_INTR) { irq_set_affinity_hint(qcq->intr.vector, &qcq->intr.affinity_mask); ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, @@ -338,6 +354,7 @@ static int ionic_qcq_disable(struct ionic_lif *lif, struct ionic_qcq *qcq, int f if (qcq->napi.poll) { napi_disable(&qcq->napi); del_timer_sync(&qcq->napi_deadline); + synchronize_net(); } if (qcq->flags & IONIC_QCQ_F_INTR) { @@ -379,6 +396,7 @@ static void ionic_lif_qcq_deinit(struct ionic_lif *lif, struct ionic_qcq *qcq) ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, IONIC_INTR_MASK_SET); netif_napi_del(&qcq->napi); + synchronize_net(); } qcq->flags &= ~IONIC_QCQ_F_INITED; @@ -434,17 +452,15 @@ static void ionic_qcq_free(struct ionic_lif *lif, struct ionic_qcq *qcq) ionic_qcq_intr_free(lif, qcq); - if (qcq->cq.info) { - vfree(qcq->cq.info); - qcq->cq.info = NULL; - } - if (qcq->q.info) { - vfree(qcq->q.info); - qcq->q.info = NULL; - } + vfree(qcq->cq.info); + qcq->cq.info = NULL; + vfree(qcq->q.page_cache); + qcq->q.page_cache = NULL; + vfree(qcq->q.info); + qcq->q.info = NULL; } -static void ionic_qcqs_free(struct ionic_lif *lif) +void ionic_qcqs_free(struct ionic_lif *lif) { struct device *dev = lif->ionic->dev; struct ionic_qcq *adminqcq; @@ -485,7 +501,9 @@ static void ionic_qcqs_free(struct ionic_lif *lif) static void ionic_link_qcq_interrupts(struct ionic_qcq *src_qcq, struct ionic_qcq *n_qcq) { - if (WARN_ON(n_qcq->flags & IONIC_QCQ_F_INTR)) { + if (n_qcq->flags & IONIC_QCQ_F_INTR) { + dev_warn(n_qcq->q.dev, "%s: n_qcq->flags and IONIC_QCQ_F_INTR set\n", + __func__); ionic_intr_free(n_qcq->cq.lif->ionic, n_qcq->intr.index); n_qcq->flags &= ~IONIC_QCQ_F_INTR; } @@ -522,7 +540,7 @@ static int ionic_alloc_qcq_interrupt(struct ionic_lif *lif, struct ionic_qcq *qc ionic_intr_mask_assert(lif->ionic->idev.intr_ctrl, qcq->intr.index, IONIC_INTR_MASK_SET); - err = ionic_request_napi_irq(lif, qcq); + err = ionic_request_irq(lif, qcq); if (err) { netdev_warn(lif->netdev, "irq request failed %d\n", err); goto err_out_free_intr; @@ -589,11 +607,29 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, new->q.dev = dev; new->flags = flags; - new->q.info = vzalloc(num_descs * sizeof(*new->q.info)); + new->q.info = vzalloc_node(num_descs * sizeof(*new->q.info), + dev_to_node(dev)); if (!new->q.info) { - netdev_err(lif->netdev, "Cannot allocate queue info\n"); - err = -ENOMEM; - goto err_out_free_qcq; + new->q.info = vcalloc(num_descs, sizeof(*new->q.info)); + if (!new->q.info) { + netdev_err(lif->netdev, "Cannot allocate queue info\n"); + err = -ENOMEM; + goto err_out_free_qcq; + } + } + + if (type == IONIC_QTYPE_RXQ) { + new->q.page_cache = vzalloc_node(sizeof(*new->q.page_cache), + dev_to_node(dev)); + if (!new->q.page_cache) { + new->q.page_cache = vzalloc(sizeof(*new->q.page_cache)); + if (!new->q.page_cache) { + netdev_err(lif->netdev, + "Cannot allocate page cache\n"); + err = -ENOMEM; + goto err_out_free_q_info; + } + } } new->q.type = type; @@ -603,18 +639,23 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, desc_size, sg_desc_size, pid); if (err) { netdev_err(lif->netdev, "Cannot initialize queue\n"); - goto err_out_free_q_info; + goto err_out_free_q_page_cache; } err = ionic_alloc_qcq_interrupt(lif, new); if (err) goto err_out; - new->cq.info = vzalloc(num_descs * sizeof(*new->cq.info)); + new->cq.info = vzalloc_node(num_descs * sizeof(*new->cq.info), + dev_to_node(dev)); if (!new->cq.info) { - netdev_err(lif->netdev, "Cannot allocate completion queue info\n"); - err = -ENOMEM; - goto err_out_free_irq; + new->cq.info = vcalloc(num_descs, sizeof(*new->cq.info)); + if (!new->cq.info) { + netdev_err(lif->netdev, + "Cannot allocate completion queue info\n"); + err = -ENOMEM; + goto err_out_free_irq; + } } err = ionic_cq_init(lif, &new->cq, &new->intr, num_descs, cq_desc_size); @@ -624,11 +665,17 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, } if (flags & IONIC_QCQ_F_NOTIFYQ) { - /* q & cq need to be contiguous in case of notifyq */ - new->q_size = PAGE_SIZE + ALIGN(num_descs * desc_size, PAGE_SIZE) + - ALIGN(num_descs * cq_desc_size, PAGE_SIZE); - new->q_base = dma_alloc_coherent(dev, new->q_size + new->cq_size, - &new->q_base_pa, GFP_KERNEL); + int q_size; + + /* q & cq need to be contiguous in NotifyQ, so alloc it all in q + * and don't alloc qc. We leave new->qc_size and new->qc_base + * as 0 to be sure we don't try to free it later. + */ + q_size = ALIGN(num_descs * desc_size, PAGE_SIZE); + new->q_size = PAGE_SIZE + q_size + + ALIGN(num_descs * cq_desc_size, PAGE_SIZE); + new->q_base = dma_alloc_coherent(dev, new->q_size, + &new->q_base_pa, GFP_KERNEL); if (!new->q_base) { netdev_err(lif->netdev, "Cannot allocate qcq DMA memory\n"); err = -ENOMEM; @@ -638,10 +685,8 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, q_base_pa = ALIGN(new->q_base_pa, PAGE_SIZE); ionic_q_map(&new->q, q_base, q_base_pa); - cq_base = PTR_ALIGN(q_base + - ALIGN(num_descs * desc_size, PAGE_SIZE), PAGE_SIZE); - cq_base_pa = ALIGN(new->q_base_pa + - ALIGN(num_descs * desc_size, PAGE_SIZE), PAGE_SIZE); + cq_base = PTR_ALIGN(q_base + q_size, PAGE_SIZE); + cq_base_pa = ALIGN(new->q_base_pa + q_size, PAGE_SIZE); ionic_cq_map(&new->cq, cq_base, cq_base_pa); ionic_cq_bind(&new->cq, &new->q); } else { @@ -715,6 +760,7 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, INIT_WORK(&new->dim.work, ionic_dim_work); new->dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE; + new->dim.profile_ix = IONIC_DIM_DEFAULT_PROFILE_IX; *qcq = new; @@ -735,6 +781,8 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type, devm_free_irq(dev, new->intr.vector, &new->napi); ionic_intr_free(lif->ionic, new->intr.index); } +err_out_free_q_page_cache: + vfree(new->q.page_cache); err_out_free_q_info: vfree(new->q.info); err_out_free_qcq: @@ -801,25 +849,12 @@ static int ionic_qcqs_alloc(struct ionic_lif *lif) return err; } -static inline int ionic_choose_eq(struct ionic_lif *lif, int q_index) -{ - unsigned int abs_q; - - if (lif->index) - abs_q = (lif->ionic->nrxqs_per_lif + lif->index); - else - abs_q = q_index; - - return abs_q % lif->ionic->neth_eqs; -} - static void ionic_qcq_sanitize(struct ionic_qcq *qcq) { qcq->q.tail_idx = 0; qcq->q.head_idx = 0; qcq->cq.tail_idx = 0; qcq->cq.done_color = 1; - memset(qcq->q_base, 0, qcq->q_size); if (qcq->cmb_q_base) memset_io(qcq->cmb_q_base, 0, qcq->cmb_q_size); @@ -840,6 +875,9 @@ static int ionic_lif_txq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) .type = q->type, .ver = lif->qtype_info[q->type].version, .index = cpu_to_le32(q->index), + .flags = cpu_to_le16(IONIC_QINIT_F_IRQ | + IONIC_QINIT_F_SG), + .intr_index = cpu_to_le16(qcq->intr.index), .pid = cpu_to_le16(q->pid), .ring_size = ilog2(q->num_descs), .ring_base = cpu_to_le64(q->base_pa), @@ -850,23 +888,6 @@ static int ionic_lif_txq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) }; int err; - if (lif->ionic->neth_eqs && - lif->qtype_info[q->type].features & IONIC_QIDENT_F_EQ) { - unsigned int eq_index = ionic_choose_eq(lif, q->index); - - ctx.cmd.q_init.flags = cpu_to_le16(IONIC_QINIT_F_EQ | - IONIC_QINIT_F_SG); - ctx.cmd.q_init.intr_index = cpu_to_le16(eq_index); - } else { - unsigned int intr_index; - - intr_index = qcq->intr.index; - - ctx.cmd.q_init.flags = cpu_to_le16(IONIC_QINIT_F_IRQ | - IONIC_QINIT_F_SG); - ctx.cmd.q_init.intr_index = cpu_to_le16(intr_index); - } - if (qcq->flags & IONIC_QCQ_F_CMB_RINGS) { ctx.cmd.q_init.flags |= cpu_to_le16(IONIC_QINIT_F_CMB); ctx.cmd.q_init.ring_base = cpu_to_le64(qcq->cmb_q_base_pa); @@ -922,6 +943,9 @@ static int ionic_lif_rxq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) .type = q->type, .ver = lif->qtype_info[q->type].version, .index = cpu_to_le32(q->index), + .flags = cpu_to_le16(IONIC_QINIT_F_IRQ | + IONIC_QINIT_F_SG), + .intr_index = cpu_to_le16(cq->bound_intr->index), .pid = cpu_to_le16(q->pid), .ring_size = ilog2(q->num_descs), .ring_base = cpu_to_le64(q->base_pa), @@ -932,19 +956,6 @@ static int ionic_lif_rxq_init(struct ionic_lif *lif, struct ionic_qcq *qcq) }; int err; - if (lif->ionic->neth_eqs && - lif->qtype_info[q->type].features & IONIC_QIDENT_F_EQ) { - unsigned int eq_index = ionic_choose_eq(lif, q->index); - - ctx.cmd.q_init.flags = cpu_to_le16(IONIC_QINIT_F_EQ | - IONIC_QINIT_F_SG); - ctx.cmd.q_init.intr_index = cpu_to_le16(eq_index); - } else { - ctx.cmd.q_init.flags = cpu_to_le16(IONIC_QINIT_F_IRQ | - IONIC_QINIT_F_SG); - ctx.cmd.q_init.intr_index = cpu_to_le16(cq->bound_intr->index); - } - if (qcq->flags & IONIC_QCQ_F_CMB_RINGS) { ctx.cmd.q_init.flags |= cpu_to_le16(IONIC_QINIT_F_CMB); ctx.cmd.q_init.ring_base = cpu_to_le64(qcq->cmb_q_base_pa); @@ -1847,21 +1858,20 @@ static int ionic_program_mac(struct ionic_lif *lif, u8 *mac) * doesn't actually change the mac and doesn't return an error, so we * do the get attr to verify whether or not the set actually happened */ - if (ether_addr_equal(get_mac, mac)) - return 0; + if (!ether_addr_equal(get_mac, mac)) + return 1; - return 1; + return 0; } static int ionic_set_mac_address(struct net_device *netdev, void *sa) { struct ionic_lif *lif = netdev_priv(netdev); - struct sockaddr *addr = sa; - u8 *mac; + struct sockaddr *addr = sa; + u8 *mac; int err; mac = (u8 *)addr->sa_data; - if (ether_addr_equal(netdev->dev_addr, mac)) return 0; @@ -1870,7 +1880,7 @@ static int ionic_set_mac_address(struct net_device *netdev, void *sa) return err; if (err > 0) - netdev_dbg(netdev, "%s:SET and GET ATTR Mac is not equal-due to old FW running\n", + netdev_dbg(netdev, "%s: SET and GET ATTR Mac are not equal-due to old FW running\n", __func__); err = eth_prepare_mac_addr_change(netdev, addr); @@ -1889,7 +1899,7 @@ static int ionic_set_mac_address(struct net_device *netdev, void *sa) return ionic_lif_addr_add(netdev_priv(netdev), mac); } -static void ionic_stop_queues_reconfig(struct ionic_lif *lif) +void ionic_stop_queues_reconfig(struct ionic_lif *lif) { /* Stop and clean the queues before reconfiguration */ netif_device_detach(lif->netdev); @@ -1916,6 +1926,20 @@ static int ionic_start_queues_reconfig(struct ionic_lif *lif) return err; } +static int ionic_check_valid_mtu(struct ionic_lif *lif, int new_mtu) +{ + int fs; + + fs = new_mtu + ETH_HLEN + VLAN_HLEN; + if (fs < le32_to_cpu(lif->identity->eth.min_frame_size) || + fs > le32_to_cpu(lif->identity->eth.max_frame_size)) { + netdev_err(lif->netdev, "Invalid MTU %d\n", new_mtu); + return -EINVAL; + } + + return 0; +} + static int ionic_change_mtu(struct net_device *netdev, int new_mtu) { struct ionic_lif *lif = netdev_priv(netdev); @@ -1929,14 +1953,10 @@ static int ionic_change_mtu(struct net_device *netdev, int new_mtu) }, }; int err; - int fs; - fs = new_mtu + ETH_HLEN + VLAN_HLEN; - if (fs < le32_to_cpu(lif->identity->eth.min_frame_size) || - fs > le32_to_cpu(lif->identity->eth.max_frame_size)) { - netdev_err(netdev, "Invalid MTU %d\n", new_mtu); - return -EINVAL; - } + err = ionic_check_valid_mtu(lif, new_mtu); + if (err) + return err; err = ionic_adminq_post_wait(lif, &ctx); if (err) @@ -1963,12 +1983,11 @@ static int ionic_change_mtu(struct net_device *netdev, int new_mtu) static void ionic_tx_timeout_work(struct work_struct *ws) { struct ionic_lif *lif = container_of(ws, struct ionic_lif, tx_timeout_work); + int err; if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) return; - // TODO: queue specific reset - /* if we were stopped before this scheduled job was launched, * don't bother the queues as they are already stopped. */ @@ -1977,8 +1996,11 @@ static void ionic_tx_timeout_work(struct work_struct *ws) mutex_lock(&lif->queue_lock); ionic_stop_queues_reconfig(lif); - ionic_start_queues_reconfig(lif); + err = ionic_start_queues_reconfig(lif); mutex_unlock(&lif->queue_lock); + + if (err) + dev_err(lif->ionic->dev, "%s: Restarting queues failed\n", __func__); } #ifdef HAVE_TX_TIMEOUT_TXQUEUE @@ -2164,7 +2186,7 @@ static void ionic_txrx_deinit(struct ionic_lif *lif) } } -static void ionic_txrx_free(struct ionic_lif *lif) +void ionic_txrx_free(struct ionic_lif *lif) { unsigned int i; @@ -2216,12 +2238,10 @@ static int ionic_txrx_alloc(struct ionic_lif *lif) flags = IONIC_QCQ_F_TX_STATS | IONIC_QCQ_F_SG; - if (test_bit(IONIC_LIF_F_CMB_RINGS, lif->state)) + if (test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state)) flags |= IONIC_QCQ_F_CMB_RINGS; - if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state) && - !(lif->ionic->neth_eqs && - lif->qtype_info[IONIC_QTYPE_TXQ].features & IONIC_QIDENT_F_EQ)) + if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) flags |= IONIC_QCQ_F_INTR; for (i = 0; i < lif->nxqs; i++) { @@ -2235,18 +2255,18 @@ static int ionic_txrx_alloc(struct ionic_lif *lif) ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, lif->txqcqs[i]->intr.index, lif->tx_coalesce_hw); - if (test_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state)) + if (test_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state)) { lif->txqcqs[i]->intr.dim_coal_hw = lif->tx_coalesce_hw; + lif->txqcqs[i]->intr.dim_coal_usecs = lif->tx_coalesce_usecs; + } } ionic_debugfs_add_qcq(lif, lif->txqcqs[i]); } - flags = IONIC_QCQ_F_RX_STATS | IONIC_QCQ_F_SG; - if (!ionic_use_eqs(lif)) - flags |= IONIC_QCQ_F_INTR; + flags = IONIC_QCQ_F_RX_STATS | IONIC_QCQ_F_SG | IONIC_QCQ_F_INTR; - if (test_bit(IONIC_LIF_F_CMB_RINGS, lif->state)) + if (test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state)) flags |= IONIC_QCQ_F_CMB_RINGS; num_desc = lif->nrxq_descs; @@ -2266,18 +2286,18 @@ static int ionic_txrx_alloc(struct ionic_lif *lif) lif->rxqcqs[i]->q.features = lif->rxq_features; - if (flags & IONIC_QCQ_F_INTR) { - ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, - lif->rxqcqs[i]->intr.index, - lif->rx_coalesce_hw); - if (test_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state)) - lif->rxqcqs[i]->intr.dim_coal_hw = lif->rx_coalesce_hw; - - if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) - ionic_link_qcq_interrupts(lif->rxqcqs[i], - lif->txqcqs[i]); + ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, + lif->rxqcqs[i]->intr.index, + lif->rx_coalesce_hw); + if (test_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state)) { + lif->rxqcqs[i]->intr.dim_coal_hw = lif->rx_coalesce_hw; + lif->rxqcqs[i]->intr.dim_coal_usecs = lif->rx_coalesce_usecs; } + if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) + ionic_link_qcq_interrupts(lif->rxqcqs[i], + lif->txqcqs[i]); + ionic_debugfs_add_qcq(lif, lif->rxqcqs[i]); } @@ -2398,7 +2418,6 @@ static int ionic_start_queues(struct ionic_lif *lif) clear_bit(IONIC_LIF_F_UP, lif->state); return err; } - netif_tx_wake_all_queues(lif->netdev); return 0; @@ -2409,12 +2428,6 @@ static int ionic_open(struct net_device *netdev) struct ionic_lif *lif = netdev_priv(netdev); int err; - if (test_bit(IONIC_LIF_F_UP, lif->state)) { - dev_dbg(lif->ionic->dev, "%s: %s called when state=UP\n", - __func__, lif->name); - return 0; - } - /* If recovering from a broken state, clear the bit and we'll try again */ if (test_and_clear_bit(IONIC_LIF_F_BROKEN, lif->state)) netdev_info(netdev, "clearing broken state\n"); @@ -2500,82 +2513,11 @@ static int ionic_eth_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd } } -static int ionic_get_fw_vf_config(struct ionic *ionic, int vf, struct ionic_vf *vfdata) -{ - struct ionic_vf_getattr_comp comp = { 0 }; - int err; - u8 attr; - - attr = IONIC_VF_ATTR_VLAN; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) - vfdata->vlanid = comp.vlanid; - - attr = IONIC_VF_ATTR_SPOOFCHK; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) - vfdata->spoofchk = comp.spoofchk; - - attr = IONIC_VF_ATTR_LINKSTATE; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) { - switch (comp.linkstate) { - case IONIC_VF_LINK_STATUS_UP: - vfdata->linkstate = IFLA_VF_LINK_STATE_ENABLE; - break; - case IONIC_VF_LINK_STATUS_DOWN: - vfdata->linkstate = IFLA_VF_LINK_STATE_DISABLE; - break; - case IONIC_VF_LINK_STATUS_AUTO: - vfdata->linkstate = IFLA_VF_LINK_STATE_AUTO; - break; - default: - dev_warn(ionic->dev, "Unexpected link state %u\n", comp.linkstate); - break; - } - } - - attr = IONIC_VF_ATTR_RATE; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) - vfdata->maxrate = comp.maxrate; - - attr = IONIC_VF_ATTR_TRUST; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) - vfdata->trusted = comp.trust; - - attr = IONIC_VF_ATTR_MAC; - err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); - if (err && comp.status != IONIC_RC_ENOSUPP) - goto err_out; - if (!err) - ether_addr_copy(vfdata->macaddr, comp.macaddr); - -err_out: - if (err) - dev_err(ionic->dev, "Failed to get %s for VF %d\n", - ionic_vf_attr_to_str(attr), vf); - - return err; -} - static int ionic_get_vf_config(struct net_device *netdev, int vf, struct ifla_vf_info *ivf) { struct ionic_lif *lif = netdev_priv(netdev); struct ionic *ionic = lif->ionic; - struct ionic_vf vfdata = { 0 }; int ret = 0; if (!netif_device_present(netdev)) @@ -2586,18 +2528,16 @@ static int ionic_get_vf_config(struct net_device *netdev, if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { ret = -EINVAL; } else { - ivf->vf = vf; - ivf->qos = 0; - - ret = ionic_get_fw_vf_config(ionic, vf, &vfdata); - if (!ret) { - ivf->vlan = le16_to_cpu(vfdata.vlanid); - ivf->spoofchk = vfdata.spoofchk; - ivf->linkstate = vfdata.linkstate; - ivf->max_tx_rate = le32_to_cpu(vfdata.maxrate); - ivf->trusted = vfdata.trusted; - ether_addr_copy(ivf->mac, vfdata.macaddr); - } + struct ionic_vf *vfdata = &ionic->vfs[vf]; + + ivf->vf = vf; + ivf->qos = 0; + ivf->vlan = le16_to_cpu(vfdata->vlanid); + ivf->spoofchk = vfdata->spoofchk; + ivf->linkstate = vfdata->linkstate; + ivf->max_tx_rate = le32_to_cpu(vfdata->maxrate); + ivf->trusted = vfdata->trusted; + ether_addr_copy(ivf->mac, vfdata->macaddr); } up_read(&ionic->vf_op_lock); @@ -2757,7 +2697,6 @@ static int ionic_set_vf_spoofchk(struct net_device *netdev, int vf, bool set) struct ionic_vf_setattr_cmd vfc = { .attr = IONIC_VF_ATTR_SPOOFCHK }; struct ionic_lif *lif = netdev_priv(netdev); struct ionic *ionic = lif->ionic; - u8 data = set; /* convert to u8 for config */ int ret; if (!netif_device_present(netdev)) @@ -2774,7 +2713,7 @@ static int ionic_set_vf_spoofchk(struct net_device *netdev, int vf, bool set) ret = ionic_set_vf_config(ionic, vf, &vfc); if (!ret) - ionic->vfs[vf].spoofchk = data; + ionic->vfs[vf].spoofchk = set; } up_write(&ionic->vf_op_lock); @@ -2787,7 +2726,6 @@ static int ionic_set_vf_trust(struct net_device *netdev, int vf, bool set) struct ionic_vf_setattr_cmd vfc = { .attr = IONIC_VF_ATTR_TRUST }; struct ionic_lif *lif = netdev_priv(netdev); struct ionic *ionic = lif->ionic; - u8 data = set; /* convert to u8 for config */ int ret; if (!netif_device_present(netdev)) @@ -2804,7 +2742,7 @@ static int ionic_set_vf_trust(struct net_device *netdev, int vf, bool set) ret = ionic_set_vf_config(ionic, vf, &vfc); if (!ret) - ionic->vfs[vf].trusted = data; + ionic->vfs[vf].trusted = set; } up_write(&ionic->vf_op_lock); @@ -2817,18 +2755,18 @@ static int ionic_set_vf_link_state(struct net_device *netdev, int vf, int set) struct ionic_vf_setattr_cmd vfc = { .attr = IONIC_VF_ATTR_LINKSTATE }; struct ionic_lif *lif = netdev_priv(netdev); struct ionic *ionic = lif->ionic; - u8 data; + u8 vfls; int ret; switch (set) { case IFLA_VF_LINK_STATE_ENABLE: - data = IONIC_VF_LINK_STATUS_UP; + vfls = IONIC_VF_LINK_STATUS_UP; break; case IFLA_VF_LINK_STATE_DISABLE: - data = IONIC_VF_LINK_STATUS_DOWN; + vfls = IONIC_VF_LINK_STATUS_DOWN; break; case IFLA_VF_LINK_STATE_AUTO: - data = IONIC_VF_LINK_STATUS_AUTO; + vfls = IONIC_VF_LINK_STATUS_AUTO; break; default: return -EINVAL; @@ -2842,7 +2780,7 @@ static int ionic_set_vf_link_state(struct net_device *netdev, int vf, int set) if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { ret = -EINVAL; } else { - vfc.linkstate = data; + vfc.linkstate = vfls; dev_dbg(ionic->dev, "%s: vf %d linkstate %d\n", __func__, vf, vfc.linkstate); @@ -2873,56 +2811,56 @@ static void ionic_vf_attr_replay(struct ionic_lif *lif) if (v->stats_pa) { vfc.attr = IONIC_VF_ATTR_STATSADDR; vfc.stats_pa = cpu_to_le64(v->stats_pa); - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.stats_pa = 0; } if (!is_zero_ether_addr(v->macaddr)) { vfc.attr = IONIC_VF_ATTR_MAC; ether_addr_copy(vfc.macaddr, v->macaddr); - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); eth_zero_addr(vfc.macaddr); } if (v->vlanid) { vfc.attr = IONIC_VF_ATTR_VLAN; vfc.vlanid = v->vlanid; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.vlanid = 0; } if (v->maxrate) { vfc.attr = IONIC_VF_ATTR_RATE; vfc.maxrate = v->maxrate; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.maxrate = 0; } if (v->spoofchk) { vfc.attr = IONIC_VF_ATTR_SPOOFCHK; vfc.spoofchk = v->spoofchk; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.spoofchk = 0; } if (v->trusted) { vfc.attr = IONIC_VF_ATTR_TRUST; vfc.trust = v->trusted; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.trust = 0; } if (v->linkstate) { vfc.attr = IONIC_VF_ATTR_LINKSTATE; vfc.linkstate = v->linkstate; - (void)ionic_set_vf_config(ionic, i, &vfc); + ionic_set_vf_config(ionic, i, &vfc); vfc.linkstate = 0; } } up_read(&ionic->vf_op_lock); - ionic_vf_start(ionic, -1); + ionic_vf_start(ionic); } static const struct net_device_ops ionic_netdev_ops = { @@ -3038,17 +2976,22 @@ static int ionic_cmb_reconfig(struct ionic_lif *lif, if (err) { dev_err(lif->ionic->dev, "CMB restore failed: %d\n", err); - goto errout; + goto err_out; } } - ionic_start_queues_reconfig(lif); - } else { - /* This was detached in ionic_stop_queues_reconfig() */ - netif_device_attach(lif->netdev); + err = ionic_start_queues_reconfig(lif); + if (err) { + dev_err(lif->ionic->dev, + "CMB reconfig failed: %d\n", err); + goto err_out; + } } -errout: +err_out: + /* This was detached in ionic_stop_queues_reconfig() */ + netif_device_attach(lif->netdev); + return err; } @@ -3061,6 +3004,7 @@ static void ionic_swap_queues(struct ionic_qcq *a, struct ionic_qcq *b) swap(a->q.base, b->q.base); swap(a->q.base_pa, b->q.base_pa); swap(a->q.info, b->q.info); + swap(a->q.page_cache, b->q.page_cache); swap(a->q_base, b->q_base); swap(a->q_base_pa, b->q_base_pa); swap(a->q_size, b->q_size); @@ -3095,7 +3039,8 @@ int ionic_reconfigure_queues(struct ionic_lif *lif, int err = 0; /* Are we changing q params while CMB is on */ - if (test_bit(IONIC_LIF_F_CMB_RINGS, lif->state) && qparam->cmb_enabled) + if ((test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state) && qparam->cmb_tx) || + (test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state) && qparam->cmb_rx)) return ionic_cmb_reconfig(lif, qparam); /* allocate temporary qcq arrays to hold new queue structs */ @@ -3140,6 +3085,8 @@ int ionic_reconfigure_queues(struct ionic_lif *lif, err = ionic_qcq_alloc(lif, IONIC_QTYPE_TXQ, i, "tx", flags, 4, desc_sz, comp_sz, sg_desc_sz, lif->kern_pid, &lif->txqcqs[i]); + if (err) + goto err_out; } flags = lif->txqcqs[i]->flags & ~IONIC_QCQ_F_INTR; @@ -3167,6 +3114,8 @@ int ionic_reconfigure_queues(struct ionic_lif *lif, err = ionic_qcq_alloc(lif, IONIC_QTYPE_RXQ, i, "rx", flags, 4, desc_sz, comp_sz, sg_desc_sz, lif->kern_pid, &lif->rxqcqs[i]); + if (err) + goto err_out; } flags = lif->rxqcqs[i]->flags & ~IONIC_QCQ_F_INTR; @@ -3351,6 +3300,7 @@ int ionic_lif_alloc(struct ionic *ionic) lif = netdev_priv(netdev); lif->netdev = netdev; ionic->lif = lif; + lif->ionic = ionic; if (ionic->is_mgmt_nic || ionic->pfdev) netdev->netdev_ops = &ionic_mnic_netdev_ops; @@ -3369,7 +3319,6 @@ int ionic_lif_alloc(struct ionic *ionic) lif->lif_type = IONIC_LIF_TYPE_CLASSIC; ionic_lif_identify(ionic, lif->lif_type, lif->identity); - lif->ionic = ionic; lif->index = 0; if (is_kdump_kernel()) { lif->ntxq_descs = IONIC_MIN_TXRX_DESC; @@ -3472,9 +3421,12 @@ static void ionic_lif_reset(struct ionic_lif *lif) { struct ionic_dev *idev = &lif->ionic->idev; + if (!ionic_is_fw_running(idev)) + return; + mutex_lock(&lif->ionic->dev_cmd_lock); ionic_dev_cmd_lif_reset(idev, lif->index); - ionic_dev_cmd_wait(lif->ionic, devcmd_timeout); + ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); mutex_unlock(&lif->ionic->dev_cmd_lock); } @@ -3510,27 +3462,11 @@ static void ionic_lif_handle_fw_down(struct ionic_lif *lif) dev_info(ionic->dev, "FW Down: LIFs stopped\n"); } -static void ionic_lif_handle_fw_up(struct ionic_lif *lif) +int ionic_restart_lif(struct ionic_lif *lif) { struct ionic *ionic = lif->ionic; int err; - if (!test_bit(IONIC_LIF_F_FW_RESET, lif->state)) - return; - - dev_info(ionic->dev, "FW Up: restarting LIFs\n"); - - ionic_init_devinfo(ionic); - err = ionic_identify(ionic); - if (err) - goto err_out; - err = ionic_port_identify(ionic); - if (err) - goto err_out; - err = ionic_port_init(ionic); - if (err) - goto err_out; - mutex_lock(&lif->queue_lock); if (test_and_clear_bit(IONIC_LIF_F_BROKEN, lif->state)) @@ -3566,12 +3502,8 @@ static void ionic_lif_handle_fw_up(struct ionic_lif *lif) clear_bit(IONIC_LIF_F_FW_RESET, lif->state); ionic_link_status_check_request(lif, CAN_SLEEP); netif_device_attach(lif->netdev); - dev_info(ionic->dev, "FW Up: LIFs restarted\n"); - /* restore the hardware timestamping queues */ - ionic_lif_hwstamp_replay(lif); - - return; + return 0; err_txrx_free: ionic_txrx_free(lif); @@ -3581,6 +3513,46 @@ static void ionic_lif_handle_fw_up(struct ionic_lif *lif) ionic_qcqs_free(lif); err_unlock: mutex_unlock(&lif->queue_lock); + + return err; +} + +static void ionic_lif_handle_fw_up(struct ionic_lif *lif) +{ + struct ionic *ionic = lif->ionic; + int err; + + if (!test_bit(IONIC_LIF_F_FW_RESET, lif->state)) + return; + + dev_info(ionic->dev, "FW Up: restarting LIFs\n"); + + /* This is a little different from what happens at + * probe time because the LIF already exists so we + * just need to reanimate it. + */ + ionic_init_devinfo(ionic); + err = ionic_identify(ionic); + if (err) + goto err_out; + err = ionic_port_identify(ionic); + if (err) + goto err_out; + err = ionic_port_init(ionic); + if (err) + goto err_out; + + err = ionic_restart_lif(lif); + if (err) + goto err_out; + + dev_info(ionic->dev, "FW Up: LIFs restarted\n"); + + /* restore the hardware timestamping queues */ + ionic_lif_hwstamp_replay(lif); + + return; + err_out: dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err); } @@ -3643,9 +3615,6 @@ void ionic_lif_deinit(struct ionic_lif *lif) ionic_lif_rss_deinit(lif); } - ionic_eqs_deinit(lif->ionic); - ionic_eqs_free(lif->ionic); - napi_disable(&lif->adminqcq->napi); ionic_lif_qcq_deinit(lif, lif->notifyqcq); ionic_lif_qcq_deinit(lif, lif->adminqcq); @@ -3670,7 +3639,7 @@ static int ionic_lif_adminq_init(struct ionic_lif *lif) mutex_lock(&lif->ionic->dev_cmd_lock); ionic_dev_cmd_adminq_init(idev, qcq, lif->index, qcq->intr.index); - err = ionic_dev_cmd_wait(lif->ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); ionic_dev_cmd_comp(idev, (union ionic_dev_cmd_comp *)&comp); mutex_unlock(&lif->ionic->dev_cmd_lock); if (err) { @@ -3766,7 +3735,7 @@ static int ionic_station_set(struct ionic_lif *lif) .attr = IONIC_LIF_ATTR_MAC, }, }; - u8 mac_address[ETH_ALEN]; + u8 mac_address[ETH_ALEN]; struct sockaddr addr; int err; @@ -3787,7 +3756,7 @@ static int ionic_station_set(struct ionic_lif *lif) return err; if (err > 0) { - netdev_dbg(netdev, "%s:SET/GET ATTR Mac is not same-due to old FW running\n", + netdev_dbg(netdev, "%s:SET/GET ATTR Mac are not same-due to old FW running\n", __func__); return 0; } @@ -3799,8 +3768,7 @@ static int ionic_station_set(struct ionic_lif *lif) * likely here again after a fw-upgrade reset. We need to be * sure the netdev mac is in our filter list. */ - if (!ether_addr_equal(mac_address, - netdev->dev_addr)) + if (!ether_addr_equal(mac_address, netdev->dev_addr)) ionic_lif_addr_add(lif, netdev->dev_addr); } else { /* Update the netdev mac with the device's mac */ @@ -3833,7 +3801,7 @@ int ionic_lif_init(struct ionic_lif *lif) mutex_lock(&lif->ionic->dev_cmd_lock); ionic_dev_cmd_lif_init(idev, lif->index, lif->info_pa); - err = ionic_dev_cmd_wait(lif->ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); ionic_dev_cmd_comp(idev, (union ionic_dev_cmd_comp *)&comp); mutex_unlock(&lif->ionic->dev_cmd_lock); if (err) @@ -3869,21 +3837,6 @@ int ionic_lif_init(struct ionic_lif *lif) goto err_out_free_dbid; } - if (lif->ionic->neth_eqs) { - err = ionic_eqs_alloc(lif->ionic); - if (err) { - dev_err(dev, "Cannot allocate EQs: %d\n", err); - lif->ionic->neth_eqs = 0; - } else { - err = ionic_eqs_init(lif->ionic); - if (err) { - dev_err(dev, "Cannot init EQs: %d\n", err); - ionic_eqs_free(lif->ionic); - lif->ionic->neth_eqs = 0; - } - } - } - err = ionic_lif_adminq_init(lif); if (err) goto err_out_adminq_deinit; @@ -3921,8 +3874,6 @@ int ionic_lif_init(struct ionic_lif *lif) ionic_lif_qcq_deinit(lif, lif->notifyqcq); err_out_adminq_deinit: ionic_lif_qcq_deinit(lif, lif->adminqcq); - ionic_eqs_deinit(lif->ionic); - ionic_eqs_free(lif->ionic); ionic_lif_reset(lif); ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); lif->kern_dbpage = NULL; @@ -4055,7 +4006,7 @@ static void ionic_lif_queue_identify(struct ionic_lif *lif) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_queue_identify(idev, lif->lif_type, qtype, ionic_qtype_versions[qtype]); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); if (!err) { qti->version = ioread8(&q_ident->version); qti->supported = ioread8(&q_ident->supported); @@ -4096,21 +4047,18 @@ static void ionic_lif_queue_identify(struct ionic_lif *lif) qtype, qti->max_sg_elems); dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n", qtype, qti->sg_desc_stride); - } - /* Make sure that EQ support is disabled if not all the - * bits are in place. - * - * This is to support internal testing with intermediate FW - * versions, especially with testing FW upgrade, and shouldn't - * be needed in released versions. - */ - if ((lif->qtype_info[IONIC_QTYPE_RXQ].features & IONIC_QIDENT_F_EQ) != - (lif->qtype_info[IONIC_QTYPE_TXQ].features & IONIC_QIDENT_F_EQ)) { - dev_warn(ionic->dev, "EQ version bugfix\n"); - lif->qtype_info[IONIC_QTYPE_RXQ].features &= ~IONIC_QIDENT_F_EQ; - lif->qtype_info[IONIC_QTYPE_TXQ].features &= ~IONIC_QIDENT_F_EQ; - ionic->neth_eqs = 0; + if (qti->max_sg_elems >= IONIC_MAX_FRAGS) { + qti->max_sg_elems = IONIC_MAX_FRAGS - 1; + dev_dbg(ionic->dev, "limiting qtype %d max_sg_elems to IONIC_MAX_FRAGS-1 %d\n", + qtype, qti->max_sg_elems); + } + + if (qti->max_sg_elems > MAX_SKB_FRAGS) { + qti->max_sg_elems = MAX_SKB_FRAGS; + dev_dbg(ionic->dev, "limiting qtype %d max_sg_elems to MAX_SKB_FRAGS %d\n", + qtype, qti->max_sg_elems); + } } } @@ -4125,7 +4073,7 @@ int ionic_lif_identify(struct ionic *ionic, u8 lif_type, mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_lif_identify(idev, lif_type, IONIC_IDENTITY_VERSION_1); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); memcpy_fromio(lid, &idev->dev_cmd_regs->data, sz); mutex_unlock(&ionic->dev_cmd_lock); if (err) @@ -4161,17 +4109,14 @@ int ionic_lif_identify(struct ionic *ionic, u8 lif_type, int ionic_lif_size(struct ionic *ionic) { struct ionic_identity *ident = &ionic->ident; + unsigned int nintrs, dev_nintrs; unsigned int nrdma_eqs_per_lif; union ionic_lif_config *lc; unsigned int ntxqs_per_lif; unsigned int nrxqs_per_lif; unsigned int nnqs_per_lif; - unsigned int dev_neth_eqs; - unsigned int dev_nintrs; unsigned int min_intrs; unsigned int nrdma_eqs; - unsigned int neth_eqs; - unsigned int nintrs; unsigned int nxqs; int err; @@ -4179,12 +4124,6 @@ int ionic_lif_size(struct ionic *ionic) lc = &ident->lif.eth.config; dev_nintrs = le32_to_cpu(ident->dev.nintrs); - if (ionic->is_mgmt_nic) - dev_neth_eqs = 0; - else - dev_neth_eqs = le32_to_cpu(ident->dev.eq_count); - dev_neth_eqs = min_t(int, dev_neth_eqs, MAX_ETH_EQS); - nrdma_eqs_per_lif = le32_to_cpu(ident->lif.rdma.eq_qtype.qid_count); nnqs_per_lif = le32_to_cpu(lc->queue_count[IONIC_QTYPE_NOTIFYQ]); ntxqs_per_lif = le32_to_cpu(lc->queue_count[IONIC_QTYPE_TXQ]); @@ -4209,9 +4148,6 @@ int ionic_lif_size(struct ionic *ionic) * One way of managing this is that when the interrupt count gets * out of hand we cut down on the number of things that need * interrupts until we get down to what we can get from the OS. - * - * Another way of managing this is by using a smaller number of - * EventQueues on which we can multiplex interrupt events. */ /* reserve last queue id for hardware timestamping */ @@ -4228,21 +4164,14 @@ int ionic_lif_size(struct ionic *ionic) nxqs = min(ntxqs_per_lif, nrxqs_per_lif); nxqs = min(nxqs, num_online_cpus()); nrdma_eqs = min(nrdma_eqs_per_lif, num_online_cpus()); - neth_eqs = min(dev_neth_eqs, num_online_cpus()); - /* EventQueue interrupt usage: (if eq_count != 0) - * 1 aq intr + n EQs + m RDMA - * - * Default interrupt usage: - * lif0 has n TxRx queues and 1 Adminq - * (1 aq interrupt + n TxRx queue interrupts) - * + whatever's left is for RDMA queues + /* interrupt usage: + * 1 for master lif adminq/notifyq + * 1 for each CPU for master lif TxRx queue pairs + * whatever's left is for RDMA queues */ try_again: - if (neth_eqs) - nintrs = 1 + neth_eqs + nrdma_eqs; - else - nintrs = 1 + nxqs + nrdma_eqs; + nintrs = 1 + nxqs + nrdma_eqs; min_intrs = 2; /* adminq + 1 TxRx queue pair */ if (nintrs > dev_nintrs) @@ -4259,14 +4188,11 @@ int ionic_lif_size(struct ionic *ionic) goto try_fewer; } - /* At this point we have the interrupts we need */ ionic->nnqs_per_lif = nnqs_per_lif; ionic->nrdma_eqs_per_lif = nrdma_eqs; ionic->ntxqs_per_lif = nxqs; ionic->nrxqs_per_lif = nxqs; ionic->nintrs = nintrs; - ionic->nlifs = 1; - ionic->neth_eqs = neth_eqs; ionic_debugfs_add_sizes(ionic); @@ -4286,11 +4212,6 @@ int ionic_lif_size(struct ionic *ionic) nrdma_eqs >>= 1; goto try_again; } - /* Cut Eth EQs in half */ - if (neth_eqs > 1) { - neth_eqs >>= 1; - goto try_again; - } /* Cut number of TxRx queuepairs */ if (nxqs > 1) { nxqs >>= 1; @@ -4299,70 +4220,3 @@ int ionic_lif_size(struct ionic *ionic) dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs); return -ENOSPC; } - -void ionic_device_reset(struct ionic_lif *lif) -{ - struct ionic *ionic = lif->ionic; - int err; - - dev_info(ionic->dev, "Device reset starting\n"); - - mutex_lock(&lif->queue_lock); - ionic_stop_queues_reconfig(lif); - ionic_txrx_free(lif); - ionic_lif_deinit(lif); - ionic_reset(ionic); - ionic_qcqs_free(lif); - mutex_unlock(&lif->queue_lock); - - ionic_port_reset(ionic); - ionic_reset(ionic); - - ionic_init_devinfo(ionic); - err = ionic_identify(ionic); - if (err) - goto err_out; - err = ionic_port_identify(ionic); - if (err) - goto err_out; - err = ionic_port_init(ionic); - if (err) - goto err_out; - - mutex_lock(&lif->queue_lock); - - err = ionic_qcqs_alloc(lif); - if (err) - goto err_unlock; - - err = ionic_lif_init(lif); - if (err) - goto err_qcqs_free; - - ionic_lif_set_netdev_info(lif); - ionic_rx_filter_replay(lif); - - if (netif_running(lif->netdev)) { - err = ionic_txrx_alloc(lif); - if (err) - goto err_lifs_deinit; - - ionic_start_queues_reconfig(lif); - } - - mutex_unlock(&lif->queue_lock); - - netif_device_attach(lif->netdev); - - dev_info(ionic->dev, "Device reset done\n"); - return; - -err_lifs_deinit: - ionic_lif_deinit(lif); -err_qcqs_free: - ionic_qcqs_free(lif); -err_unlock: - mutex_unlock(&lif->queue_lock); -err_out: - return; -} diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.h index 8d261bee250b..667fdc03cfad 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_lif.h @@ -185,7 +185,9 @@ enum ionic_lif_state_flags { IONIC_LIF_F_BROKEN, IONIC_LIF_F_TX_DIM_INTR, IONIC_LIF_F_RX_DIM_INTR, - IONIC_LIF_F_CMB_RINGS, + IONIC_LIF_F_CMB_TX_RINGS, + IONIC_LIF_F_CMB_RX_RINGS, + IONIC_LIF_F_IN_SHUTDOWN, /* leave this as last */ IONIC_LIF_F_STATE_SIZE @@ -249,6 +251,7 @@ struct ionic_lif { u64 hw_features; unsigned int index; unsigned int hw_index; + unsigned int link_down_count; u8 rss_hash_key[IONIC_RSS_HASH_KEY_SIZE]; u8 *rss_ind_tbl; @@ -319,7 +322,8 @@ struct ionic_queue_params { unsigned int nrxq_descs; u64 rxq_features; bool intr_split; - bool cmb_enabled; + bool cmb_tx; + bool cmb_rx; }; static inline void ionic_init_queue_params(struct ionic_lif *lif, @@ -330,7 +334,8 @@ static inline void ionic_init_queue_params(struct ionic_lif *lif, qparam->nrxq_descs = lif->nrxq_descs; qparam->rxq_features = lif->rxq_features; qparam->intr_split = test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); - qparam->cmb_enabled = test_bit(IONIC_LIF_F_CMB_RINGS, lif->state); + qparam->cmb_tx = test_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); + qparam->cmb_rx = test_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); } static inline void ionic_set_queue_params(struct ionic_lif *lif, @@ -346,10 +351,15 @@ static inline void ionic_set_queue_params(struct ionic_lif *lif, else clear_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); - if (qparam->cmb_enabled) - set_bit(IONIC_LIF_F_CMB_RINGS, lif->state); + if (qparam->cmb_tx) + set_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); else - clear_bit(IONIC_LIF_F_CMB_RINGS, lif->state); + clear_bit(IONIC_LIF_F_CMB_TX_RINGS, lif->state); + + if (qparam->cmb_rx) + set_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); + else + clear_bit(IONIC_LIF_F_CMB_RX_RINGS, lif->state); } static inline u32 ionic_coal_usec_to_hw(struct ionic *ionic, u32 usecs) @@ -374,10 +384,9 @@ static inline bool ionic_is_pf(struct ionic *ionic) ionic->pdev->device == PCI_DEVICE_ID_PENSANDO_IONIC_ETH_PF; } -static inline bool ionic_use_eqs(struct ionic_lif *lif) +static inline bool ionic_txq_hwstamp_enabled(struct ionic_queue *q) { - return lif->ionic->neth_eqs && - lif->qtype_info[IONIC_QTYPE_RXQ].features & IONIC_QIDENT_F_EQ; + return unlikely(q->features & IONIC_TXQ_F_HWSTAMP); } void ionic_lif_deferred_enqueue(struct ionic_deferred *def, @@ -454,7 +463,11 @@ int ionic_lif_addr_add(struct ionic_lif *lif, const u8 *addr); int ionic_lif_addr_del(struct ionic_lif *lif, const u8 *addr); struct ionic_lif *ionic_netdev_lif(struct net_device *netdev); -void ionic_device_reset(struct ionic_lif *lif); + +void ionic_stop_queues_reconfig(struct ionic_lif *lif); +void ionic_txrx_free(struct ionic_lif *lif); +void ionic_qcqs_free(struct ionic_lif *lif); +int ionic_restart_lif(struct ionic_lif *lif); #ifdef IONIC_DEBUG_STATS static inline void debug_stats_txq_post(struct ionic_queue *q, bool dbell) diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_main.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_main.c index f3da81e6bc7e..12893c569b30 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_main.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_main.c @@ -35,7 +35,7 @@ unsigned int tx_budget = IONIC_TX_BUDGET_DEFAULT; module_param(tx_budget, uint, 0600); MODULE_PARM_DESC(tx_budget, "Number of tx completions to process per NAPI poll"); -unsigned int devcmd_timeout = DEVCMD_TIMEOUT; +unsigned int devcmd_timeout = DEVCMD_TOUT_DEF; module_param(devcmd_timeout, uint, 0600); MODULE_PARM_DESC(devcmd_timeout, "Devcmd timeout in seconds (default 30 secs)"); @@ -43,6 +43,10 @@ unsigned long affinity_mask_override; module_param(affinity_mask_override, ulong, 0600); MODULE_PARM_DESC(affinity_mask_override, "IRQ affinity mask to override (max 64 bits)"); +unsigned long asic_addr_len = IONIC_ADDR_LEN; +module_param(asic_addr_len, ulong, 0600); +MODULE_PARM_DESC(asic_addr_len, "DMA address bits for mask size"); + static const char *ionic_error_to_str(enum ionic_status_code code) { switch (code) { @@ -216,28 +220,6 @@ static const char *ionic_opcode_to_str(enum ionic_cmd_opcode opcode) } } -const char *ionic_vf_attr_to_str(enum ionic_vf_attr attr) -{ - switch (attr) { - case IONIC_VF_ATTR_SPOOFCHK: - return "IONIC_VF_ATTR_SPOOFCHK"; - case IONIC_VF_ATTR_TRUST: - return "IONIC_VF_ATTR_TRUST"; - case IONIC_VF_ATTR_LINKSTATE: - return "IONIC_VF_ATTR_LINKSTATE"; - case IONIC_VF_ATTR_MAC: - return "IONIC_VF_ATTR_MAC"; - case IONIC_VF_ATTR_VLAN: - return "IONIC_VF_ATTR_VLAN"; - case IONIC_VF_ATTR_RATE: - return "IONIC_VF_ATTR_RATE"; - case IONIC_VF_ATTR_STATSADDR: - return "IONIC_VF_ATTR_STATSADDR"; - default: - return "IONIC_VF_ATTR_UNKNOWN"; - } -} - static void ionic_adminq_flush(struct ionic_lif *lif) { struct ionic_desc_info *desc_info; @@ -401,13 +383,12 @@ int ionic_adminq_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx, if (do_msg && !test_bit(IONIC_LIF_F_FW_RESET, lif->state)) netdev_err(netdev, "Posting of %s (%d) failed: %d\n", name, ctx->cmd.cmd.opcode, err); - ctx->comp.comp.status = IONIC_RC_ERROR; return err; } time_start = jiffies; - time_limit = time_start + HZ * (ulong)devcmd_timeout; + time_limit = time_start + HZ * (ulong)DEVCMD_TIMEOUT; do { remaining = wait_for_completion_timeout(&ctx->work, IONIC_ADMINQ_TIME_SLICE); @@ -417,7 +398,7 @@ int ionic_adminq_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx, break; /* force a check of FW status and break out if FW reset */ - (void) ionic_heartbeat_check(lif->ionic); + ionic_heartbeat_check(lif->ionic); if ((test_bit(IONIC_LIF_F_FW_RESET, lif->state) && !lif->ionic->idev.fw_status_ready) || test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { @@ -449,6 +430,9 @@ static int __ionic_adminq_post_wait(struct ionic_lif *lif, if (lif->ionic->pfdev && test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) return 0; + if (!ionic_is_fw_running(&lif->ionic->idev)) + return 0; + err = ionic_adminq_post(lif, ctx); return ionic_adminq_wait(lif, ctx, err, do_msg); @@ -501,7 +485,7 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, */ max_wait = jiffies + (max_seconds * HZ); try_again: - opcode = ioread8(&idev->dev_cmd_regs->cmd.cmd.opcode); + opcode = idev->opcode; start_time = jiffies; for (fw_up = ionic_is_fw_running(idev); !done && fw_up && time_before(jiffies, max_wait); @@ -533,7 +517,8 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, err = ionic_dev_cmd_status(&ionic->idev); if (err) { - if (err == IONIC_RC_EAGAIN && !time_after(jiffies, max_wait)) { + if (err == IONIC_RC_EAGAIN && + time_before(jiffies, max_wait)) { dev_dbg(ionic->dev, "DEV_CMD %s (%d), %s (%d) retrying...\n", ionic_opcode_to_str(opcode), opcode, ionic_error_to_str(err), err); @@ -575,7 +560,8 @@ int ionic_set_dma_mask(struct ionic *ionic) #ifdef CONFIG_PPC64 ionic->pdev->no_64bit_msi = 1; #endif - err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(IONIC_ADDR_LEN)); + dev_info(dev, "setting %lu bit DMA mask\n", asic_addr_len); + err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(asic_addr_len)); if (err) dev_err(dev, "Unable to obtain 64-bit DMA for consistent allocations, aborting. err=%d\n", err); @@ -608,13 +594,13 @@ int ionic_identify(struct ionic *ionic) ident->drv.os_type = cpu_to_le32(IONIC_OS_TYPE_LINUX); ident->drv.os_dist = 0; - strncpy(ident->drv.os_dist_str, utsname()->release, - sizeof(ident->drv.os_dist_str) - 1); + strscpy(ident->drv.os_dist_str, utsname()->release, + sizeof(ident->drv.os_dist_str)); ident->drv.kernel_ver = cpu_to_le32(LINUX_VERSION_CODE); - strncpy(ident->drv.kernel_ver_str, utsname()->version, - sizeof(ident->drv.kernel_ver_str) - 1); - strncpy(ident->drv.driver_ver_str, IONIC_DRV_VERSION, - sizeof(ident->drv.driver_ver_str) - 1); + strscpy(ident->drv.kernel_ver_str, utsname()->version, + sizeof(ident->drv.kernel_ver_str)); + strscpy(ident->drv.driver_ver_str, IONIC_DRV_VERSION, + sizeof(ident->drv.driver_ver_str)); mutex_lock(&ionic->dev_cmd_lock); @@ -626,7 +612,7 @@ int ionic_identify(struct ionic *ionic) #else ionic_dev_cmd_identify(idev, IONIC_IDENTITY_VERSION_1); #endif - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); if (!err) { sz = min(sizeof(ident->dev), sizeof(idev->dev_cmd_regs->data)); memcpy_fromio(&ident->dev, &idev->dev_cmd_regs->data, sz); @@ -670,7 +656,7 @@ int ionic_init(struct ionic *ionic) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_init(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); return err; @@ -686,7 +672,7 @@ int ionic_reset(struct ionic *ionic) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_reset(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); return err; @@ -703,7 +689,7 @@ int ionic_port_identify(struct ionic *ionic) mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_identify(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); if (!err) { sz = min(sizeof(ident->port), sizeof(idev->dev_cmd_regs->data)); memcpy_fromio(&ident->port, &idev->dev_cmd_regs->data, sz); @@ -746,11 +732,11 @@ int ionic_port_init(struct ionic *ionic) memcpy_toio(&idev->dev_cmd_regs->data, &ident->port.config, sz); ionic_dev_cmd_port_init(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); if (port_init_up) { ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP); - (void)ionic_dev_cmd_wait(ionic, devcmd_timeout); + (void)ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); } mutex_unlock(&ionic->dev_cmd_lock); @@ -776,7 +762,7 @@ int ionic_port_reset(struct ionic *ionic) if (ionic_is_fw_running(idev)) { mutex_lock(&ionic->dev_cmd_lock); ionic_dev_cmd_port_reset(idev); - err = ionic_dev_cmd_wait(ionic, devcmd_timeout); + err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); mutex_unlock(&ionic->dev_cmd_lock); } @@ -816,10 +802,10 @@ static int __init ionic_init_module(void) static void __exit ionic_cleanup_module(void) { - /* If there's a long devcmd_timeout set, don't let + /* If there's a long DEVCMD_TIMEOUT set, don't let * hung FW slow us down when exiting */ - devcmd_timeout = min_t(int, devcmd_timeout, SHORT_TIMEOUT); + DEVCMD_TIMEOUT = min_t(int, DEVCMD_TIMEOUT, SHORT_TIMEOUT); ionic_bus_unregister_driver(); ionic_debugfs_destroy(); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_phc.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_phc.c index 1e21a5725190..6822996d4b6d 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_phc.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_phc.c @@ -641,11 +641,10 @@ void ionic_lif_alloc_phc(struct ionic_lif *lif) diff |= diff >> 16; diff |= diff >> 32; - /* constrain to the hardware bitmask, and use this as the bitmask */ + /* constrain to the hardware bitmask */ diff &= phc->cc.mask; - phc->cc.mask = diff; - /* the wrap period is now defined by diff (or phc->cc.mask) + /* the wrap period is now defined by diff * * we will update the time basis at about 1/4 the wrap period, so * should not see a difference of more than +/- diff/4. diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.c index e4d6d386e179..5c6d65275243 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.c @@ -604,14 +604,14 @@ void ionic_rx_filter_sync(struct ionic_lif *lif) * they can clear room for some new filters */ list_for_each_entry_safe(sync_item, spos, &sync_del_list, list) { - (void)ionic_lif_filter_del(lif, &sync_item->f.cmd); + ionic_lif_filter_del(lif, &sync_item->f.cmd); list_del(&sync_item->list); devm_kfree(dev, sync_item); } list_for_each_entry_safe(sync_item, spos, &sync_add_list, list) { - (void)ionic_lif_filter_add(lif, &sync_item->f.cmd); + ionic_lif_filter_add(lif, &sync_item->f.cmd); list_del(&sync_item->list); devm_kfree(dev, sync_item); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.h index b089fbedb673..98a0bad0e923 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_rx_filter.h @@ -43,7 +43,6 @@ struct ionic_rx_filter *ionic_rx_filter_by_addr(struct ionic_lif *lif, const u8 struct ionic_rx_filter *ionic_rx_filter_rxsteer(struct ionic_lif *lif); void ionic_rx_filter_sync(struct ionic_lif *lif); int ionic_lif_list_addr(struct ionic_lif *lif, const u8 *addr, bool mode); -int ionic_rx_filters_need_sync(struct ionic_lif *lif); int ionic_lif_vlan_add(struct ionic_lif *lif, const u16 vid); int ionic_lif_vlan_del(struct ionic_lif *lif, const u16 vid); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_trace.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_trace.h new file mode 100644 index 000000000000..5c2fa8e1002e --- /dev/null +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_trace.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright(c) 2023 Advanced Micro Devices, Inc */ + +/* + * See for references + * https://www.kernel.org/doc/html/latest/trace/tracepoints.html + * http://lwn.net/Articles/379903 + * http://lwn.net/Articles/381064 + * http://lwn.net/Articles/383362 + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM ionic + +#if !defined(_IONIC_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _IONIC_TRACE_H + +#include + +DECLARE_EVENT_CLASS(ionic_q_start_stop_template, + TP_PROTO(struct ionic_queue *q), + + TP_ARGS(q), + + TP_STRUCT__entry(__field(unsigned int, index) + __string(devname, q->lif->netdev->name) + ), + + TP_fast_assign(__entry->index = q->index; + __assign_str(devname, q->lif->netdev->name); + ), + + TP_printk("%s: queue[%u]", __get_str(devname), __entry->index) +); + +DEFINE_EVENT(ionic_q_start_stop_template, ionic_q_stop, + TP_PROTO(struct ionic_queue *q), + TP_ARGS(q) +); + +DEFINE_EVENT(ionic_q_start_stop_template, ionic_q_start, + TP_PROTO(struct ionic_queue *q), + TP_ARGS(q) +); + +#endif /* _IONIC_TRACE_H */ + +/* This part must be outside protection */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE ionic_trace +#include diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_txrx.c b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_txrx.c index de5cc1a1f312..4302f2784013 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_txrx.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/ionic_txrx.c @@ -11,6 +11,9 @@ #include "ionic_lif.h" #include "ionic_txrx.h" +#define CREATE_TRACE_POINTS +#include "ionic_trace.h" + static inline void ionic_txq_post(struct ionic_queue *q, bool ring_dbell, ionic_desc_cb cb_func, void *cb_arg) { @@ -105,14 +108,14 @@ static inline dma_addr_t ionic_rx_buf_pa(struct ionic_buf_info *buf_info) static inline unsigned int ionic_rx_buf_size(struct ionic_buf_info *buf_info) { - return IONIC_PAGE_SIZE - buf_info->page_offset; + return min_t(u32, IONIC_MAX_BUF_LEN, IONIC_PAGE_SIZE - buf_info->page_offset); } static bool ionic_rx_cache_put(struct ionic_queue *q, struct ionic_buf_info *buf_info) { - struct ionic_page_cache *cache = &q->page_cache; struct ionic_rx_stats *stats = q_to_rx_stats(q); + struct ionic_page_cache *cache = q->page_cache; u32 tail_next; tail_next = (cache->tail + 1) & (IONIC_PAGE_CACHE_SIZE - 1); @@ -133,8 +136,8 @@ static bool ionic_rx_cache_put(struct ionic_queue *q, static bool ionic_rx_cache_get(struct ionic_queue *q, struct ionic_buf_info *buf_info) { - struct ionic_page_cache *cache = &q->page_cache; struct ionic_rx_stats *stats = q_to_rx_stats(q); + struct ionic_page_cache *cache = q->page_cache; if (unlikely(cache->head == cache->tail)) { stats->cache_empty++; @@ -159,8 +162,8 @@ static bool ionic_rx_cache_get(struct ionic_queue *q, static void ionic_rx_cache_drain(struct ionic_queue *q) { - struct ionic_page_cache *cache = &q->page_cache; struct ionic_rx_stats *stats = q_to_rx_stats(q); + struct ionic_page_cache *cache = q->page_cache; struct ionic_buf_info *buf_info; while (cache->head != cache->tail) { @@ -525,6 +528,14 @@ bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) return true; } +static inline void ionic_write_cmb_desc(struct ionic_queue *q, + void __iomem *cmb_desc, + void *desc) +{ + if (q_to_qcq(q)->flags & IONIC_QCQ_F_CMB_RINGS) + memcpy_toio(cmb_desc, desc, q->desc_size); +} + void ionic_rx_fill(struct ionic_queue *q) { struct net_device *netdev = q->lif->netdev; @@ -601,12 +612,10 @@ void ionic_rx_fill(struct ionic_queue *q) } desc->opcode = (nfrags > 1) ? IONIC_RXQ_DESC_OPCODE_SG : - IONIC_RXQ_DESC_OPCODE_SIMPLE; + IONIC_RXQ_DESC_OPCODE_SIMPLE; desc_info->nbufs = nfrags; - /* commit descriptor contents in one shot */ - if (q_to_qcq(q)->flags & IONIC_QCQ_F_CMB_RINGS) - memcpy_toio(desc_info->cmb_desc, desc, q->desc_size); + ionic_write_cmb_desc(q, desc_info->cmb_desc, desc); ionic_rxq_post(q, false, ionic_rx_clean, NULL); } @@ -679,7 +688,6 @@ static void ionic_dim_update(struct ionic_qcq *qcq, int napi_mode) net_dim(&qcq->dim, dim_sample); } - int ionic_tx_napi(struct napi_struct *napi, int budget) { struct ionic_qcq *qcq = napi_to_qcq(napi); @@ -688,7 +696,6 @@ int ionic_tx_napi(struct napi_struct *napi, int budget) struct ionic_lif *lif; u32 work_done = 0; u32 flags = 0; - u64 dbr; lif = cq->bound_q->lif; idev = &lif->ionic->idev; @@ -697,28 +704,16 @@ int ionic_tx_napi(struct napi_struct *napi, int budget) ionic_tx_service, NULL, NULL); if (work_done < budget && napi_complete_done(napi, work_done)) { + ionic_dim_update(qcq, IONIC_LIF_F_TX_DIM_INTR); flags |= IONIC_INTR_CRED_UNMASK; cq->bound_intr->rearm_count++; } if (work_done || flags) { flags |= IONIC_INTR_CRED_RESET_COALESCE; - if (!lif->ionic->neth_eqs) { - if (flags & IONIC_INTR_CRED_UNMASK) - ionic_dim_update(qcq, IONIC_LIF_F_TX_DIM_INTR); - ionic_intr_credits(idev->intr_ctrl, - cq->bound_intr->index, - work_done, flags); - } else { - if (!qcq->armed) { - qcq->armed = true; - dbr = IONIC_DBELL_RING_1 | - IONIC_DBELL_QID(qcq->q.hw_index); - ionic_dbell_ring(lif->kern_dbpage, - qcq->q.hw_type, - dbr | qcq->cq.tail_idx); - } - } + ionic_intr_credits(idev->intr_ctrl, + cq->bound_intr->index, + work_done, flags); } if (!work_done && ionic_txq_poke_doorbell(&qcq->q)) @@ -737,7 +732,6 @@ int ionic_rx_napi(struct napi_struct *napi, int budget) struct ionic_lif *lif; u32 work_done = 0; u32 flags = 0; - u64 dbr; lif = cq->bound_q->lif; idev = &lif->ionic->idev; @@ -748,28 +742,16 @@ int ionic_rx_napi(struct napi_struct *napi, int budget) ionic_rx_fill(cq->bound_q); if (work_done < budget && napi_complete_done(napi, work_done)) { + ionic_dim_update(qcq, IONIC_LIF_F_RX_DIM_INTR); flags |= IONIC_INTR_CRED_UNMASK; cq->bound_intr->rearm_count++; } if (work_done || flags) { flags |= IONIC_INTR_CRED_RESET_COALESCE; - if (!lif->ionic->neth_eqs) { - if (flags & IONIC_INTR_CRED_UNMASK) - ionic_dim_update(qcq, IONIC_LIF_F_RX_DIM_INTR); - ionic_intr_credits(idev->intr_ctrl, - cq->bound_intr->index, - work_done, flags); - } else { - if (!qcq->armed) { - qcq->armed = true; - dbr = IONIC_DBELL_RING_1 | - IONIC_DBELL_QID(qcq->q.hw_index); - ionic_dbell_ring(lif->kern_dbpage, - qcq->q.hw_type, - dbr | qcq->cq.tail_idx); - } - } + ionic_intr_credits(idev->intr_ctrl, + cq->bound_intr->index, + work_done, flags); } if (!work_done && ionic_rxq_poke_doorbell(&qcq->q)) @@ -785,13 +767,13 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget) struct ionic_qcq *rxqcq = napi_to_qcq(napi); struct ionic_cq *rxcq = napi_to_cq(napi); unsigned int qi = rxcq->bound_q->index; + struct ionic_qcq *txqcq; struct ionic_dev *idev; struct ionic_lif *lif; - struct ionic_qcq *txqcq; struct ionic_cq *txcq; bool resched = false; - u32 tx_work_done = 0; u32 rx_work_done = 0; + u32 tx_work_done = 0; u32 flags = 0; lif = rxcq->bound_q->lif; @@ -808,38 +790,15 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget) ionic_rx_fill(rxcq->bound_q); if (rx_work_done < budget && napi_complete_done(napi, rx_work_done)) { + ionic_dim_update(rxqcq, 0); flags |= IONIC_INTR_CRED_UNMASK; rxcq->bound_intr->rearm_count++; } if (rx_work_done || flags) { flags |= IONIC_INTR_CRED_RESET_COALESCE; - if (!lif->ionic->neth_eqs) { - if (flags & IONIC_INTR_CRED_UNMASK) - ionic_dim_update(rxqcq, 0); - ionic_intr_credits(idev->intr_ctrl, - rxcq->bound_intr->index, - tx_work_done + rx_work_done, flags); - } else { - u64 dbr; - - if (!rxqcq->armed) { - rxqcq->armed = true; - dbr = IONIC_DBELL_RING_1 | - IONIC_DBELL_QID(rxqcq->q.hw_index); - ionic_dbell_ring(lif->kern_dbpage, - rxqcq->q.hw_type, - dbr | rxqcq->cq.tail_idx); - } - if (!txqcq->armed) { - txqcq->armed = true; - dbr = IONIC_DBELL_RING_1 | - IONIC_DBELL_QID(txqcq->q.hw_index); - ionic_dbell_ring(lif->kern_dbpage, - txqcq->q.hw_type, - dbr | txqcq->cq.tail_idx); - } - } + ionic_intr_credits(idev->intr_ctrl, rxcq->bound_intr->index, + tx_work_done + rx_work_done, flags); } DEBUG_STATS_NAPI_POLL(rxqcq, rx_work_done); @@ -975,7 +934,7 @@ static void ionic_tx_clean(struct ionic_queue *q, qi = skb_get_queue_mapping(skb); - if (unlikely(q->features & IONIC_TXQ_F_HWSTAMP)) { + if (ionic_txq_hwstamp_enabled(q)) { if (cq_info) { struct skb_shared_hwtstamps hwts = {}; __le64 *cq_desc_hwstamp; @@ -1003,6 +962,7 @@ static void ionic_tx_clean(struct ionic_queue *q, } else if (unlikely(__netif_subqueue_stopped(q->lif->netdev, qi))) { netif_wake_subqueue(q->lif->netdev, qi); + trace_ionic_q_start(q); q->wake++; } @@ -1044,7 +1004,7 @@ bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) } while (index != le16_to_cpu(comp->comp_index)); #ifdef IONIC_SUPPORTS_BQL - if (pkts && bytes && !unlikely(q->features & IONIC_TXQ_F_HWSTAMP)) + if (pkts && bytes && !ionic_txq_hwstamp_enabled(q)) netdev_tx_completed_queue(q_to_ndq(q), pkts, bytes); #endif @@ -1058,8 +1018,7 @@ void ionic_tx_flush(struct ionic_cq *cq) work_done = ionic_cq_service(cq, cq->num_descs, ionic_tx_service, NULL, NULL); - - if (work_done && !cq->lif->ionic->neth_eqs) + if (work_done) ionic_intr_credits(idev->intr_ctrl, cq->bound_intr->index, work_done, IONIC_INTR_CRED_RESET_COALESCE); } @@ -1085,7 +1044,7 @@ void ionic_tx_empty(struct ionic_queue *q) } #ifdef IONIC_SUPPORTS_BQL - if (pkts && bytes && !unlikely(q->features & IONIC_TXQ_F_HWSTAMP)) + if (pkts && bytes && !ionic_txq_hwstamp_enabled(q)) netdev_tx_completed_queue(q_to_ndq(q), pkts, bytes); #endif } @@ -1163,14 +1122,12 @@ static void ionic_tx_tso_post(struct ionic_queue *q, desc->hdr_len = cpu_to_le16(hdrlen); desc->mss = cpu_to_le16(mss); - /* commit descriptor contents in one shot */ - if (q_to_qcq(q)->flags & IONIC_QCQ_F_CMB_RINGS) - memcpy_toio(desc_info->cmb_desc, desc, q->desc_size); + ionic_write_cmb_desc(q, desc_info->cmb_desc, desc); if (start) { skb_tx_timestamp(skb); #ifdef IONIC_SUPPORTS_BQL - if (!unlikely(q->features & IONIC_TXQ_F_HWSTAMP)) + if (!ionic_txq_hwstamp_enabled(q)) netdev_tx_sent_queue(q_to_ndq(q), skb->len); #endif ionic_txq_post(q, false, ionic_tx_clean, skb); @@ -1318,11 +1275,11 @@ static int ionic_tx_tso(struct ionic_queue *q, struct sk_buff *skb) static void ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb, struct ionic_desc_info *desc_info) { + struct ionic_txq_desc *desc = desc_info->txq_desc; struct ionic_buf_info *buf_info = desc_info->bufs; #ifdef IONIC_DEBUG_STATS struct ionic_tx_stats *stats = q_to_tx_stats(q); #endif - struct ionic_txq_desc *desc = desc_info->desc; bool has_vlan; u8 flags = 0; bool encap; @@ -1348,9 +1305,7 @@ static void ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb, desc->csum_start = cpu_to_le16(skb_checksum_start_offset(skb)); desc->csum_offset = cpu_to_le16(skb->csum_offset); - /* commit descriptor contents in one shot */ - if (q_to_qcq(q)->flags & IONIC_QCQ_F_CMB_RINGS) - memcpy_toio(desc_info->cmb_desc, desc, q->desc_size); + ionic_write_cmb_desc(q, desc_info->cmb_desc, desc); #ifdef IONIC_DEBUG_STATS #ifdef HAVE_CSUM_NOT_INET @@ -1392,10 +1347,10 @@ static void ionic_tx_calc_no_csum(struct ionic_queue *q, struct sk_buff *skb, stats->vlan_inserted++; #endif } + desc->csum_start = 0; + desc->csum_offset = 0; - /* commit descriptor contents in one shot */ - if (q_to_qcq(q)->flags & IONIC_QCQ_F_CMB_RINGS) - memcpy_toio(desc_info->cmb_desc, desc, q->desc_size); + ionic_write_cmb_desc(q, desc_info->cmb_desc, desc); #ifdef IONIC_DEBUG_STATS stats->csum_none++; @@ -1445,7 +1400,7 @@ static int ionic_tx(struct ionic_queue *q, struct sk_buff *skb) stats->bytes += skb->len; #ifdef IONIC_SUPPORTS_BQL - if (!unlikely(q->features & IONIC_TXQ_F_HWSTAMP)) + if (!ionic_txq_hwstamp_enabled(q)) netdev_tx_sent_queue(q_to_ndq(q), skb->len); #endif #ifdef HAVE_SKB_XMIT_MORE @@ -1460,25 +1415,84 @@ static int ionic_tx(struct ionic_queue *q, struct sk_buff *skb) static int ionic_tx_descs_needed(struct ionic_queue *q, struct sk_buff *skb) { struct ionic_tx_stats *stats = q_to_tx_stats(q); + bool too_many_frags = false; + skb_frag_t *frag; + int desc_bufs; + int chunk_len; + int frag_rem; + int tso_rem; + int seg_rem; + bool encap; + int hdrlen; int ndescs; int err; /* Each desc is mss long max, so a descriptor for each gso_seg */ - if (skb_is_gso(skb)) + if (skb_is_gso(skb)) { ndescs = skb_shinfo(skb)->gso_segs; - else + } else { ndescs = 1; + if (skb_shinfo(skb)->nr_frags > q->max_sg_elems) { + too_many_frags = true; + goto linearize; + } + } - /* If non-TSO, just need 1 desc and nr_frags sg elems */ - if (skb_shinfo(skb)->nr_frags <= q->max_sg_elems) + /* If non-TSO, or no frags to check, we're done */ + if (!skb_is_gso(skb) || !skb_shinfo(skb)->nr_frags) return ndescs; - /* Too many frags, so linearize */ - err = skb_linearize(skb); - if (err) - return err; + /* We need to scan the skb to be sure that none of the MTU sized + * packets in the TSO will require more sgs per descriptor than we + * can support. We loop through the frags, add up the lengths for + * a packet, and count the number of sgs used per packet. + */ + tso_rem = skb->len; + frag = skb_shinfo(skb)->frags; + encap = skb->encapsulation; + + /* start with just hdr in first part of first descriptor */ + if (encap) + hdrlen = skb_inner_tcp_all_headers(skb); + else + hdrlen = skb_tcp_all_headers(skb); + seg_rem = min_t(int, tso_rem, hdrlen + skb_shinfo(skb)->gso_size); + frag_rem = hdrlen; + + while (tso_rem > 0) { + desc_bufs = 0; + while (seg_rem > 0) { + desc_bufs++; + + /* We add the +1 because we can take buffers for one + * more than we have SGs: one for the initial desc data + * in addition to the SG segments that might follow. + */ + if (desc_bufs > q->max_sg_elems + 1) { + too_many_frags = true; + goto linearize; + } + + if (frag_rem == 0) { + frag_rem = skb_frag_size(frag); + frag++; + } + chunk_len = min(frag_rem, seg_rem); + frag_rem -= chunk_len; + tso_rem -= chunk_len; + seg_rem -= chunk_len; + } - stats->linearize++; + seg_rem = min_t(int, tso_rem, skb_shinfo(skb)->gso_size); + } + +linearize: + if (too_many_frags) { + err = skb_linearize(skb); + if (err) + return err; + stats->linearize++; + } return ndescs; } @@ -1489,6 +1503,7 @@ static int ionic_maybe_stop_tx(struct ionic_queue *q, int ndescs) if (unlikely(!ionic_q_has_space(q, ndescs))) { netif_stop_subqueue(q->lif->netdev, q->index); + trace_ionic_q_stop(q); q->stop++; stopped = 1; @@ -1496,6 +1511,7 @@ static int ionic_maybe_stop_tx(struct ionic_queue *q, int ndescs) smp_rmb(); if (ionic_q_has_space(q, ndescs)) { netif_wake_subqueue(q->lif->netdev, q->index); + trace_ionic_q_start(q); stopped = 0; } } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/kcompat.h b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/kcompat.h index 1f8161f5a9a6..c7f23fc64288 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/kcompat.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/eth/ionic/kcompat.h @@ -36,6 +36,7 @@ #include #include #include +#include #if IS_ENABLED(CONFIG_NET_DEVLINK) #include @@ -257,10 +258,6 @@ struct msix_entry { #define node_online(node) ((node) == 0) #endif -#ifndef cpu_online -#define cpu_online(cpuid) test_bit((cpuid), &cpu_online_map) -#endif - #ifndef _LINUX_RANDOM_H #include #endif @@ -6767,13 +6764,14 @@ void _kc_ethtool_sprintf(u8 **data, const char *fmt, ...); #if (!RHEL_RELEASE_CODE || (RHEL_RELEASE_CODE && \ (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9,0)))) -#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_VERSION(8, 6) == RHEL_RELEASE_CODE)) +#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_VERSION(8, 6) <= RHEL_RELEASE_CODE)) #define HAVE_COALESCE_EXTACK #endif #define ndo_eth_ioctl ndo_do_ioctl #if IS_ENABLED(CONFIG_NET_DEVLINK) +#if !RHEL_RELEASE_CODE || (RHEL_RELEASE_VERSION(8, 7) > RHEL_RELEASE_CODE) static inline struct devlink *_kc_devlink_alloc(const struct devlink_ops *ops, size_t priv_size, struct device *dev) @@ -6781,10 +6779,17 @@ static inline struct devlink *_kc_devlink_alloc(const struct devlink_ops *ops, return devlink_alloc(ops, priv_size); } #define devlink_alloc _kc_devlink_alloc +#else +#define HAVE_VOID_DEVLINK_REGISTER +#endif #endif /* CONFIG_NET_DEVLINK */ #else +#if RHEL_RELEASE_CODE && RHEL_RELEASE_VERSION(9, 0) < RHEL_RELEASE_CODE +#define HAVE_COALESCE_EXTACK +#endif + #if IS_ENABLED(CONFIG_NET_DEVLINK) #define HAVE_VOID_DEVLINK_REGISTER #endif /* CONFIG_NET_DEVLINK */ @@ -6803,12 +6808,26 @@ static inline struct devlink *_kc_devlink_alloc(const struct devlink_ops *ops, /*****************************************************************************/ #if (KERNEL_VERSION(5, 17, 0) > LINUX_VERSION_CODE) + +#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_VERSION(8, 7) <= RHEL_RELEASE_CODE && \ + RHEL_RELEASE_VERSION(9, 0) != RHEL_RELEASE_CODE)) +#define HAVE_RINGPARAM_EXTACK +#endif + #else #define HAVE_RINGPARAM_EXTACK #endif /* 5.17 */ /*****************************************************************************/ -#if (KERNEL_VERSION(6, 0, 0) > LINUX_VERSION_CODE) +#if (KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE) +#define vcalloc(a, b) vzalloc((a) * (b)) +#endif /* 5.18 */ + +/*****************************************************************************/ +#if (KERNEL_VERSION(6, 0, 0) > LINUX_VERSION_CODE && \ + (!RHEL_RELEASE_CODE || \ + RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 8) || \ + (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0) && RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9, 2)))) static inline int skb_tcp_all_headers(const struct sk_buff *skb) { return skb_transport_offset(skb) + tcp_hdrlen(skb); @@ -6823,7 +6842,10 @@ static inline int skb_inner_tcp_all_headers(const struct sk_buff *skb) #endif /* 6.0 */ /*****************************************************************************/ -#if (KERNEL_VERSION(6, 1, 0) > LINUX_VERSION_CODE) +#if (KERNEL_VERSION(6, 1, 0) > LINUX_VERSION_CODE && \ + (!RHEL_RELEASE_CODE || \ + RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 8) || \ + (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0) && RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9, 2)))) #if (RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 0) && defined(netif_napi_add)) #undef netif_napi_add @@ -6835,6 +6857,21 @@ static inline int skb_inner_tcp_all_headers(const struct sk_buff *skb) #else #endif /* 6.1 */ +/*****************************************************************************/ +#if (KERNEL_VERSION(6, 2, 0) > LINUX_VERSION_CODE && \ + (!RHEL_RELEASE_CODE || \ + RHEL_RELEASE_CODE <= RHEL_RELEASE_VERSION(9, 2))) +#define SET_NETDEV_DEVLINK_PORT(dev, port) devlink_port_type_eth_set(port, dev) +#else +#define devlink_info_driver_name_put(x, y) 0 +#endif /* 6.2 */ + +/*****************************************************************************/ +#if (KERNEL_VERSION(6, 3, 0) > LINUX_VERSION_CODE) +#else +#define HAVE_RX_PUSH +#endif /* 6.3 */ + /* We don't support PTP on older RHEL kernels (needs more compat work) */ #if (RHEL_RELEASE_CODE && RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7,4)) #undef CONFIG_PTP_1588_CLOCK diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/linux_ver.mk b/platform/pensando/dsc-drivers/src/drivers/linux/linux_ver.mk index c171251727ad..084f12382e9f 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/linux_ver.mk +++ b/platform/pensando/dsc-drivers/src/drivers/linux/linux_ver.mk @@ -133,6 +133,52 @@ ifneq ($(words $(subst :, ,$(CURDIR))), 1) $(error Sources directory '$(CURDIR)' cannot contain spaces nor colons. Rename directory or move sources to another path) endif +######################## +# Extract config value # +######################## + +get_config_value = $(shell ${CC} -E -dM ${CONFIG_FILE} 2> /dev/null |\ + grep -m 1 ${1} | awk '{ print $$3 }') + +######################## +# Check module signing # +######################## + +CONFIG_MODULE_SIG_ALL := $(call get_config_value,CONFIG_MODULE_SIG_ALL) +CONFIG_MODULE_SIG_FORCE := $(call get_config_value,CONFIG_MODULE_SIG_FORCE) +CONFIG_MODULE_SIG_KEY := $(call get_config_value,CONFIG_MODULE_SIG_KEY) + +SIG_KEY_SP := ${KOBJ}/${CONFIG_MODULE_SIG_KEY} \ + ${KOBJ}/certs/signing_key.pem + +SIG_KEY_FILE := $(firstword $(foreach file, ${SIG_KEY_SP}, $(call test_file,${file}))) + +# print a warning if the kernel configuration attempts to sign modules but +# the signing key can't be found. +ifneq (${SIG_KEY_FILE},) +warn_signed_modules := : ; +else +warn_signed_modules := +ifeq (${CONFIG_MODULE_SIG_ALL},1) +warn_signed_modules += \ + echo "****************************************************************" ; \ + echo "*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but ***" ; \ + echo "*** the signing key cannot be found. Module signing has been ***" ; \ + echo "*** disabled for this build. ***" ; \ + echo "****************************************************************" ; +endif # CONFIG_MODULE_SIG_ALL=y +ifeq (${CONFIG_MODULE_SIG_FORCE},1) + warn_signed_modules += \ + echo "**************************************************************" ; \ + echo "*** warning: The target kernel has CONFIG_MODULE_SIG_FORCE ***" ; \ + echo "*** warning: enabled, but the signing key cannot be found. ***" ; \ + echo "*** warning: The module must be signed manually using ***" ; \ + echo "*** warning: 'scripts/sign-file'. ***" ; \ + echo "**************************************************************" ; +endif # CONFIG_MODULE_SIG_FORCE +DISABLE_MODULE_SIGNING := Yes +endif + ####################### # Linux Version Setup # ####################### diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/Makefile b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/Makefile index 8c78f9ec0bb2..af637cb2f415 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/Makefile +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/Makefile @@ -13,30 +13,62 @@ pciesvc-src := $(shell cd $(PWD) && ls pciesvc/src/*.c) pciesvc-obj := $(patsubst %.c,%.o,$(pciesvc-src)) kpci += $(pciesvc-obj) -INCLUDES = -I$(PWD) \ - -I$(PWD)/pciesvc/include \ - -I$(PWD)/pciesvc/src +INCLUDES = -I/sonic/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc \ + -I/sonic/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include \ + -I/sonic/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src \ + -I/sonic/src/sonic-linux-kernel/linux-6.1.94/include/linux + #-I/usr/include \ + #-I$(PWD) \ + #-I/sonic/src/sonic-linux-kernel/linux-6.1.94/debian/build/build_arm64_none_arm64 +$(MODNAME)-y := $(kpci) kpci_get_entry.o kpcimgr_module.o kpcinterface.o \ + kpci_entry.o kpci_kexec.o kpci_test.o pciesvc_end.o -$(MODNAME)-y := $(kpci) kpcimgr_module.o kpcinterface.o kpci_entry.o \ - kpci_kexec.o kpci_test.o pciesvc_end.o - - -KDIR := /lib/modules/$(shell uname -r)/build +KDIR := /sonic/src/sonic-linux-kernel/linux-6.1.94/debian/build/build_arm64_none_arm64 PWD := $(shell pwd) UTS := X$(shell grep UTS_RELEASE $(KDIR)/include/generated/utsrelease.h) REL := $(shell echo $(UTS) | awk '{ print $$3 }' | sed -e 's/"//g') -KCFLAGS = -fno-jump-tables -fno-stack-protector -fno-function-sections -KCFLAGS += -fno-data-sections -fno-store-merging -mstrict-align +# find CC like the kernel build does +ifneq ($(LLVM),) +CC = clang +else +CC = $(CROSS_COMPILE)gcc +endif + +# Check for cc flag support, if yes emit the flag else alternate (or null) +# Usage: CFLAGS += $(call cc-option,-fno-store-merging,) +cc-option = $(shell set -e; \ + TMPO=/tmp/cc-option-$$$$-tmp.o; \ + trap "rm -rf $$TMPO" EXIT; \ + if ($(CC) -Werror $(1) -c -x c /dev/null -o $$TMPO) >/dev/null 2>&1; \ + then echo "$(1)"; \ + else echo "$(2)"; \ + fi) + +KCFLAGS = -fno-jump-tables -fno-stack-protector -fno-function-sections -fno-dse -ffreestanding -fno-builtin +KCFLAGS += -fno-data-sections -isystem /usr/lib/gcc/aarch64-linux-gnu/12/include +KCFLAGS += $(call cc-option,-fno-store-merging,) KCFLAGS += $(INCLUDES) -DASIC_ELBA -DPCIESVC_SYSTEM_EXTERN KOPT = KCFLAGS="$(KCFLAGS)" all: + make pciesvc.ko + make pciesvc_upg.ko + +buildmod: + $(info Compiler version: $(shell $(CC) --version | head -n 1)) $(MAKE) -C $(KDIR) M=$(PWD) $(KOPT) modules @mkdir -p $(REL) @mv $(patsubst %.o,%.ko,$(obj-m)) $(REL) @echo Checking for illegal relocations... tools/reloc_check $(REL)/$(MODNAME).ko +pciesvc.ko: + $(MAKE) buildmod MODNAME=pciesvc + +pciesvc_upg.ko: + $(MAKE) buildmod MODNAME=pciesvc_upg + clean: $(MAKE) -C $(KDIR) M=$(PWD) clean + $(RM) -r $(REL) diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/README.md b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/README.md index 858048fc731a..d9e17ce751db 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/README.md +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/README.md @@ -20,3 +20,7 @@ specify on the make command line with "make KDIR=/path/to/kernel". ## History 2022-12-02 - initial version +2023-02-20 - Update to 1.59.0-C-5 +2023-05-08 - Update to 1.63.0-C-8 +2023-06-23 - Update to 1.65-C-6 +2023-09-22 - Update to 1.65-C-35 diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_constants.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_constants.h index c0c01330e310..03c0b1ef5df6 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_constants.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_constants.h @@ -5,18 +5,18 @@ /* * Layout of non-Linux Memory: * (base address provided in device tree and may change) - * C500 0000 SHMEM segment (pciehw_shmem_t) [0x942440 bytes ~9.25Mb] - * C5F0 0000 kpcimgr state (kstate_t) [3 * 64k] - * C5F3 0000 relocated code [Allow 256k] - * C5F7 0000 available for stack when in nommu mode (64k) - * C5F8 0000 top of stack - * C5FF FFFF end of 1M allotted range + * C5F8 D000 kpcimgr state (kstate_t) [3 * 64k] + * C5FB D000 relocated code [Allow 256k] + * .... code can grow upwards and stack downwards + * C5FF D000 top of stack + * C5FF FFE0 fake efi.mem area for LPI + * C5FF FFFF end of HWMEM range */ -#define SHMEM_KSTATE_OFFSET 0xF00000 +#define COMPAT_SHMEM_KSTATE_OFFSET 0xF00000 #define SHMEM_KSTATE_SIZE 0x30000 -#define KSTATE_STACK_OFFSET 0x80000 -#define KSTATE_CODE_OFFSET (SHMEM_KSTATE_OFFSET + SHMEM_KSTATE_SIZE) +#define KSTATE_CODE_OFFSET SHMEM_KSTATE_SIZE #define KSTATE_CODE_SIZE (256 * 1024) +#define KSTATE_STACK_OFFSET SHMEM_KSTATE_SIZE+KSTATE_CODE_SIZE #define KSTATE_MAGIC 0x1743BA1F /* size of trace data arrays */ diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_entry.S b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_entry.S index cd6e4f10e9d9..d74645934942 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_entry.S +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_entry.S @@ -9,11 +9,17 @@ * Author: rob.gardner@oracle.com */ -#include -#include -#include #include "kpci_constants.h" +#ifndef SYM_CODE_START +#define SYM_CODE_START(name) \ + .globl name ;\ + name: ; + +#define SYM_CODE_END(name) \ + .size name, .-name +#endif + /* Calling conventions for printl: */ /* We use x12 as the branch link register and x13 as the first function arg */ #define return_addr x12 diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_get_entry.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_get_entry.c new file mode 100644 index 000000000000..d50c15d66467 --- /dev/null +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_get_entry.c @@ -0,0 +1,50 @@ +#include +#include "kpcimgr_api.h" + +extern char pciesvc_end; +extern void kpcimgr_init_intr(void *); +extern void kpcimgr_init_fn(void *); +extern void kpcimgr_version_fn(char **); +extern void kpcimgr_init_poll(void *); +extern void pciesvc_shut(int); +extern void kpcimgr_poll(kstate_t *, int, int); +extern unsigned long kpcimgr_get_holding_pen(unsigned long, unsigned int); +extern int kpcimgr_ind_intr(void *, int); +extern int kpcimgr_not_intr(void *, int); +extern void kpcimgr_undefined_entry(void); +extern int pciesvc_sysfs_cmd_read(void *, char *, int *); +extern int pciesvc_sysfs_cmd_write(void *, char *, size_t, int *); + +extern int pciesvc_version_major; +extern int pciesvc_version_minor; + +struct kpcimgr_entry_points_t ep; + +struct kpcimgr_entry_points_t *kpci_get_entry_points(void) +{ + int i; + + /* initialize entry_points struct via executable code so that + * PC relative relocations are generated */ + ep.expected_mgr_version = 3; + ep.lib_version_major = pciesvc_version_major; + ep.lib_version_minor = pciesvc_version_minor; + ep.code_end = &pciesvc_end; + + for (i=0; ishmembase + SHMEM_KSTATE_OFFSET; } int virtual(void) { - return (unsigned long)kstate != kstate_paddr; + return ((long)kstate) < 0 ; } /* called in physical mode */ @@ -66,7 +66,7 @@ void kpcimgr_cpu_holding_pen(kstate_t *ks) for (i=0; i<10; i++) { if (release()) { kpcimgr_nommu_poll(ks); - kpr_err("poll loop done, returning after %ld polls.\n", npolls); + kpr_err("polling did %ld polls.\n", npolls); return; } kp_udelay(1*1000); /* 1ms */ @@ -232,7 +232,8 @@ void kpcimgr_serial_thread(kstate_t *ks) * memory locations. */ -unsigned long kpcimgr_get_holding_pen(unsigned long old_entry, unsigned int cpu) +unsigned long kpcimgr_get_holding_pen(unsigned long old_entry, + unsigned int cpu, unsigned long ks_paddr) { kstate_t *ks = get_kstate(); unsigned long offset, entry; @@ -257,7 +258,16 @@ unsigned long kpcimgr_get_holding_pen(unsigned long old_entry, unsigned int cpu) } holding_pen_idx++; - entry = ks->shmembase + KSTATE_CODE_OFFSET + offset; +#if 1 + /* temp: stay compatible with old kernel */ + if ((ks_paddr >> 24) != 0xc5) + ks_paddr = ks->shmembase + COMPAT_SHMEM_KSTATE_OFFSET; +#endif + entry = ks_paddr + KSTATE_CODE_OFFSET + offset; kpr_err("%s(cpu%d) entry = %lx\n", __func__, cpu, entry); + + /* propagate value of ks_paddr to persistent memory */ + offset = ((unsigned long) &kstate_paddr) - (unsigned long) ks->code_base; + *(unsigned long *)(ks->persistent_base + offset) = ks_paddr; return entry; } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_test.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_test.c index 75a582ca8e16..0fb05ea2554a 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_test.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpci_test.c @@ -9,9 +9,7 @@ * Author: rob.gardner@oracle.com */ -#include "kpcimgr_api.h" -#include "pciesvc.h" -#include "pciesvc_system.h" +#include "pciesvc_impl.h" #define TICKS_PER_US 200 #define TICKS_PER_MS (1000*TICKS_PER_US) @@ -174,7 +172,7 @@ void kpcimgr_report_stats(kstate_t *ks, int phase, int always, int rightnow) if (!always && (now - last_call) < 5 * TICKS_PER_SEC) return; - p = &pshmem->port[0]; + p = PSHMEM_ADDR_FIELD(pshmem, port[0]); s = &p->stats; cfgrd = s->ind_cfgrd - ks->ind_cfgrd; cfgwr = s->ind_cfgwr - ks->ind_cfgwr; diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_api.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_api.h index 8bfcda1cca4b..88be4cea9463 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_api.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_api.h @@ -22,6 +22,7 @@ #include #include #include +#include #endif #include "kpci_constants.h" diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_module.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_module.c index ee7bc49b0867..e768e9222409 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_module.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcimgr_module.c @@ -14,68 +14,37 @@ #include #include -MODULE_LICENSE("GPL"); - #include "kpcimgr_api.h" +#include "pciesvc.h" #include "version.h" +MODULE_LICENSE("GPL"); +MODULE_VERSION(__stringify(PCIESVC_VERSION_MAJ) "." + __stringify(PCIESVC_VERSION_MIN)); +MODULE_INFO(build, PCIESVC_VERSION); +MODULE_INFO(intree, "Y"); /* no out-of-tree module taints kernel */ + static int relocate = 0; #ifdef DEBUG_KPCIMGR module_param(relocate, int, 0600); MODULE_PARM_DESC(relocate, "specifies whether or not to relocate module"); #endif -extern char pciesvc_end; -extern void kpcimgr_init_intr(void *); -extern void kpcimgr_init_fn(void *); -extern void kpcimgr_version_fn(char **); -extern void kpcimgr_init_poll(void *); -extern void pciesvc_shut(int); -extern void kpcimgr_poll(kstate_t *, int, int); -extern unsigned long kpcimgr_get_holding_pen(unsigned long, unsigned int); -extern int kpcimgr_ind_intr(void *, int); -extern int kpcimgr_not_intr(void *, int); -extern void kpcimgr_undefined_entry(void); -extern int pciesvc_sysfs_cmd_read(void *, char *, int *); -extern int pciesvc_sysfs_cmd_write(void *, char *, size_t, int *); - -extern int pciesvc_version_major; -extern int pciesvc_version_minor; - static int __init pciesvc_dev_init(void) { - struct kpcimgr_entry_points_t ep; - int i, ret = 0; - - /* initialize entry_points struct via executable code so that - * PC relative relocations are generated */ - ep.expected_mgr_version = 3; - ep.lib_version_major = pciesvc_version_major; - ep.lib_version_minor = pciesvc_version_minor; - ep.code_end = &pciesvc_end; - - for (i=0; iexpected_mgr_version = 2; + ret = kpcimgr_module_register(THIS_MODULE, ep, relocate); } #endif diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcinterface.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcinterface.c index 07c1b826d5f2..85fa0fb71f38 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcinterface.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/kpcinterface.c @@ -9,9 +9,7 @@ * Author: rob.gardner@oracle.com */ -#include "kpcimgr_api.h" -#include "pciesvc.h" -#include "pciesvc_system.h" +#include "pciesvc_impl.h" #include "version.h" /* @@ -251,16 +249,6 @@ pciesvc_reg_rd32(const uint64_t pa) return val; } -static inline void -pciesvc_reg_rd32w(const uint64_t pa, uint32_t *w, const uint32_t nw) -{ - int i; - - for (i = 0; i < nw; i++) { - w[i] = pciesvc_reg_rd32(pa + (i * 4)); - } -} - void pciesvc_pciepreg_rd32(const uint64_t pa, uint32_t *dest) { @@ -286,16 +274,6 @@ pciesvc_reg_wr32(const uint64_t pa, const uint32_t val) writel(val, va); } -static inline void -pciesvc_reg_wr32w(const uint64_t pa, const uint32_t *w, const uint32_t nw) -{ - int i; - - for (i = 0; i < nw; i++) { - pciesvc_reg_wr32(pa + (i * 4), w[i]); - } -} - /* * Similar calls implemented in terms of rd32/wr32. */ @@ -405,6 +383,13 @@ pciesvc_memset(void *s, int c, size_t n) return s; } +#undef memset +void * __weak +memset(void *s, int c, size_t n) +{ + return pciesvc_memset(s, c, n); +} + void * pciesvc_memcpy(void *dst, const void *src, size_t n) { @@ -418,7 +403,14 @@ pciesvc_memcpy(void *dst, const void *src, size_t n) return dst; } +#undef memcpy +void * __weak +memcpy(void *dst, const void *src, size_t n) +{ + return pciesvc_memcpy(dst, src, n); +} void * + pciesvc_memcpy_toio(void *dsthw, const void *src, size_t n) { return pciesvc_memcpy(dsthw, src, n); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehw.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehw.h index 443a128b04a1..3576b6e785a9 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehw.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehw.h @@ -14,7 +14,15 @@ extern "C" { #endif #define PCIEHW_NPORTS 8 +/* +#ifdef SALINA +#define PCIEHW_NDEVS 4150 +#define PCIEHW_NDEVS_HI 4150 +#else +*/ #define PCIEHW_NDEVS 1024 +#define PCIEHW_NDEVS_HI 2080 +/* #endif */ #define PCIEHW_CFGSHIFT 11 #define PCIEHW_CFGSZ (1 << PCIEHW_CFGSHIFT) #define PCIEHW_NROMSK 128 diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehwmem.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehwmem.h index fc8335a90919..428596bf7918 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehwmem.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciehwmem.h @@ -17,7 +17,7 @@ extern "C" { #define PCIEHW_NOTIFYSZ (1 * 1024 * 1024) -typedef struct pciehw_mem_s { +typedef struct pciehw_mem_lo_s { u_int8_t notify_area[PCIEHW_NPORTS][PCIEHW_NOTIFYSZ] __attribute__((aligned(PCIEHW_NOTIFYSZ))); /* page of zeros to back cfgspace */ @@ -27,8 +27,38 @@ typedef struct pciehw_mem_s { u_int32_t indirect_intr_dest[PCIEHW_NPORTS]; /* indirect intr dest */ u_int32_t magic; /* PCIEHW_MAGIC when initialized */ u_int32_t version; /* PCIEHW_VERSION when initialized */ +} pciehw_mem_lo_t; + +typedef struct pciehw_mem_hi_s { + u_int8_t notify_area[PCIEHW_NPORTS][PCIEHW_NOTIFYSZ] + __attribute__((aligned(PCIEHW_NOTIFYSZ))); + /* page of zeros to back cfgspace */ + u_int8_t zeros[4096] __attribute__((aligned(4096))); + u_int8_t cfgcur[PCIEHW_NDEVS_HI][PCIEHW_CFGSZ] + __attribute__((aligned(4096))); + u_int32_t notify_intr_dest[PCIEHW_NPORTS]; /* notify intr dest */ + u_int32_t indirect_intr_dest[PCIEHW_NPORTS]; /* indirect intr dest */ + u_int32_t magic; /* PCIEHW_MAGIC when initialized */ + u_int32_t version; /* PCIEHW_VERSION when initialized */ +} pciehw_mem_hi_t; + +typedef struct pciehw_mem_s { + union { + pciehw_mem_lo_t lo; + pciehw_mem_hi_t hi; + }; } pciehw_mem_t; +#define PHWMEM_DATA_FIELD(H, S, V) (S->lo.hi_ndev ? H->hi.V : H->lo.V) +#define PHWMEM_ADDR_FIELD(H, S, V) (S->lo.hi_ndev ? &H->hi.V : &H->lo.V) +#define PHWMEM_ASGN_FIELD(H, S, V, A) (S->lo.hi_ndev ? \ + (H->hi.V = A) : (H->lo.V = A)) +#define PHWMEM_OFFSETOF(H, S, V) (S->lo.hi_ndev ? \ + offsetof(pciehw_mem_hi_t, V) : offsetof(pciehw_mem_lo_t, V)) +#define PHWMEM_SIZEOF(H, S, V) (S->lo.hi_ndev ? \ + sizeof(((pciehw_mem_hi_t *)0L)->V) : \ + sizeof(((pciehw_mem_lo_t *)0L)->V)) + #ifdef __cplusplus } #endif diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pcieshmem.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pcieshmem.h index a7974dbc7aa7..5fa14d5ebe9a 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pcieshmem.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pcieshmem.h @@ -94,6 +94,7 @@ typedef union pciehwdev_u { u_int16_t pf:1; /* is pf */ u_int16_t vf:1; /* is vf */ u_int16_t flexvf:1; /* is flexvf */ + u_int16_t msix_en:1; /* msix enabled for this dev */ u_int16_t totalvfs; /* totalvfs provisioned */ u_int16_t numvfs; /* current numvfs */ u_int16_t vfidx; /* if is vf, vf position */ @@ -171,7 +172,7 @@ typedef struct pciehw_sromsk_s { #define PCIEHW_VPDSZ 1024 #define PCIEHW_SERIALSZ 1024 -typedef struct pciehw_shmem_s { +typedef struct pciehw_shmem_lo_s { u_int32_t magic; /* PCIEHW_MAGIC when initialized */ u_int32_t version; /* PCIEHW_VERSION when initialized */ u_int32_t hwinit:1; /* hw is initialized */ @@ -179,6 +180,8 @@ typedef struct pciehw_shmem_s { u_int32_t skip_notify:1; /* notify skips if ring full */ u_int32_t pmtpri:1; /* support pmt pri */ u_int32_t evregistered:1; /* event handler registered flag */ + u_int32_t hi_ndev:1; /* 2048 ndev */ + /* Hi-Lo should be in sync till here */ u_int32_t allocdev; u_int32_t allocpmt_high; /* high priority pmt free sequential */ u_int32_t allocprt; /* prt free sequential */ @@ -198,8 +201,60 @@ typedef struct pciehw_shmem_s { u_int32_t freepmt_low; /* low priority pmt free list */ u_int32_t allocpmt_vf0adj; /* low pri vf0 adjust (never freed) */ u_int32_t freeprt_slab; /* prt free slab adjacent */ +} pciehw_shmem_lo_t; + +typedef struct pciehw_shmem_hi_s { + u_int32_t magic; /* PCIEHW_MAGIC when initialized */ + u_int32_t version; /* PCIEHW_VERSION when initialized */ + u_int32_t hwinit:1; /* hw is initialized */ + u_int32_t notify_verbose:1; /* notify logs all */ + u_int32_t skip_notify:1; /* notify skips if ring full */ + u_int32_t pmtpri:1; /* support pmt pri */ + u_int32_t evregistered:1; /* event handler registered flag */ + u_int32_t hi_ndev:1; /* 2048 ndev */ + /* Hi-Lo should be in sync till here */ + u_int32_t allocdev; + u_int32_t allocpmt_high; /* high priority pmt free sequential */ + u_int32_t allocpmt_low; /* low priority pmt free sequential */ + u_int32_t allocpmt_vf0adj; /* low pri vf0 adjust (never freed) */ + u_int32_t allocprt; /* prt free sequential */ + u_int32_t freepmt_high; /* high priority pmt free list */ + u_int32_t freepmt_low; /* low priority pmt free list */ + u_int32_t freeprt_slab; /* prt free slab adjacent */ + u_int32_t notify_ring_mask; + pciehwdevh_t rooth[PCIEHW_NPORTS]; + pciehwdev_t dev[PCIEHW_NDEVS_HI]; + pciehw_port_t port[PCIEHW_NPORTS]; + pciehw_sromsk_t sromsk[PCIEHW_NROMSK]; + pciehw_spmt_t spmt[PCIEHW_NPMT]; + pciehw_sprt_t sprt[PCIEHW_NPRT]; + u_int8_t cfgrst[PCIEHW_NDEVS_HI][PCIEHW_CFGSZ]; + u_int8_t cfgmsk[PCIEHW_NDEVS_HI][PCIEHW_CFGSZ]; + u_int8_t vpddata[PCIEHW_NDEVS_HI][PCIEHW_VPDSZ]; + u_int8_t serial[PCIEHW_NPORTS][PCIEHW_SERIALSZ]; +} pciehw_shmem_hi_t; + +typedef struct pciehw_shmem_s { + union { + pciehw_shmem_lo_t lo; + pciehw_shmem_hi_t hi; + }; } pciehw_shmem_t; +#define PSHMEM_IS_HI_NDEV(S) (S->lo.hi_ndev) +#define PSHMEM_NDEVS(S) (S->lo.hi_ndev ? PCIEHW_NDEVS_HI : PCIEHW_NDEVS) +#define PSHMEM_DATA_FIELD(S, V) (S->lo.hi_ndev ? S->hi.V : S->lo.V) +#define PSHMEM_ADDR_FIELD(S, V) (S->lo.hi_ndev ? &S->hi.V : &S->lo.V) +#define PSHMEM_ASGN_FIELD(S, V, A) \ + (S->lo.hi_ndev ? (S->hi.V = A) : (S->lo.V = A)) +#define PSHMEM_OFFSETOF(S, V) (S->lo.hi_ndev ? \ + offsetof(pciehw_shmem_hi_t, V) : offsetof(pciehw_shmem_lo_t, V)) +#define PSHMEM_SIZEOF(S, V) (S->lo.hi_ndev ? \ + sizeof(((pciehw_shmem_hi_t *)0L)->V) : \ + sizeof(((pciehw_shmem_lo_t *)0L)->V)) +#define PSHMEM_SIZEOF_T(S) (S->lo.hi_ndev ? sizeof(pciehw_shmem_hi_t) : \ + sizeof(pciehw_shmem_lo_t)) + #ifdef __cplusplus } #endif diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciesvc.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciesvc.h index f4cfcc5714bc..b33201ff8fb0 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciesvc.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/pciesvc.h @@ -22,7 +22,7 @@ extern "C" { #include "pciesvc_cmd.h" #define PCIESVC_VERSION_MAJ 3 -#define PCIESVC_VERSION_MIN 1 +#define PCIESVC_VERSION_MIN 5 typedef struct pciesvc_params_v0_s { int port; /* port to config */ diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/virtio_spec.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/virtio_spec.h index 4ff97fbcce0e..423503f0869a 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/virtio_spec.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/include/virtio_spec.h @@ -66,9 +66,17 @@ typedef struct virtio_pci_common_cfg { /* indirect features are hidden behind unused queue_cfg */ struct { virtio_pci_feature_cfg_t device_feature_cfg[VIRTIO_PCI_FEATURE_SELECT_COUNT]; - virtio_pci_feature_cfg_t driver_feature_cfg[VIRTIO_PCI_FEATURE_SELECT_COUNT]; + union { + virtio_pci_feature_cfg_t driver_feature_cfg[VIRTIO_PCI_FEATURE_SELECT_COUNT]; + /* source of truth for nicmgr feature checks */ + uint64_t active_features; + }; /* pciemgr observed device status nonzero -> zero */ uint8_t need_reset; + /* for checking status transitions */ + uint8_t device_status_prev; + /* for VIRTIO_NET_F_MRG_RXBUF */ + uint16_t mtu_mrg_rxbuf; }; }; } __attribute__((packed)) virtio_pci_common_cfg_t; @@ -110,6 +118,31 @@ typedef struct virtio_net_config { uint32_t supported_hash_types; } __attribute__((packed)) virtio_net_config_t; +/* 4.1.4.10 legacy config - for transitional device support */ +typedef struct virtio_msix_legacy_cfg { + uint16_t config_msix_vector; // indirect + uint16_t queue_msix_vector; // indirect +} __attribute__((packed)) virtio_msix_legacy_cfg_t; + +typedef struct virtio_pci_legacy_cfg { + virtio_pci_feature_cfg_t device_feature; // indirect + virtio_pci_feature_cfg_t driver_feature; // indirect + uint32_t queue_address; + uint16_t queue_size; // indirect + uint16_t queue_select; + uint16_t queue_notify; + uint8_t device_status; // indirect + uint8_t isr_status; // indirect + union { + /* XXX - net_cfg shifts when MSI-X is enabled or disabled! */ + virtio_net_config_t net_cfg; // indirect + struct { + virtio_msix_legacy_cfg_t msix_cfg; // indirect + virtio_net_config_t net_cfg_msix; // indirect + }; + }; +} __attribute__((packed)) virtio_pci_legacy_cfg_t; + /* 2.1 - device status field */ enum { VIRTIO_S_ACKNOWLEDGE = (1u << 0), @@ -153,6 +186,11 @@ enum { VIRTIO_NET_F_SPEED_DUPLEX = (1ull << 63), }; +enum { + VIRTIO_NET_S_LINK_UP = 1, // e.g. BIT(0) + VIRTIO_NET_S_ANNOUNCE = 2, // e.g. BIT(1) +}; + /* 6 - reserved feature bits */ enum { VIRTIO_F_NOTIFY_ON_EMPTY = (1ull << 24), @@ -182,12 +220,52 @@ enum { VIRTIO_NET_RSS_HASH_TYPE_UDP_EX = (1u << 8), }; +#define VIRTIO_NOTIFY_MUL_SHIFT 2 // 2 ** 2 == 4 (bytes per dbell) +#define VIRTIO_NOTIFY_QID_SHIFT 6 // 2 ** 6 == 64 (qid per 1/4 region) +#define VIRTIO_NOTIFY_REG_SHIFT 10 // 2 ** 10 == 1024 (total bytes per region) +#define VIRTIO_NOTIFY_REG_BYTES 1024 +#define VIRTIO_NOTIFY_MULTIPLIER 4 + struct virtio_pci_notify_reg { - uint8_t inc_pi_dbell[512]; - uint8_t set_pi_dbell[512]; + uint8_t inc_pi_dbell[VIRTIO_NOTIFY_REG_BYTES]; + uint8_t set_pi_dbell[VIRTIO_NOTIFY_REG_BYTES]; }; -#define VIRTIO_NOTIFY_MULTIPLIER 4 +// number of vqid supported by this notification doorbell layout (total rx + tx + cvq) +#define VIRTIO_VQID_NOTIFY_COUNT \ + (VIRTIO_NOTIFY_REG_BYTES / VIRTIO_NOTIFY_MULTIPLIER / 4) + +// vqid offset within 1/2 of one notify region (two qtypes of four qtype region) +#define VIRTIO_VQID_NOTIFY_OFF(vqid) \ + (((vqid) >> 1) | (((vqid) & 1) << VIRTIO_NOTIFY_QID_SHIFT)) + +// offset the 1/2 notify region to use, depending on negotiated features +static inline uint16_t virtio_features_notify_offset(const uint64_t features) +{ + uint64_t off = 0; + + if (features & VIRTIO_F_RING_PACKED) { + // packed: qtypes 0 and 1, first half of a 4-qtype region + if (features & VIRTIO_F_NOTIFICATION_DATA) { + off = offsetof(struct virtio_pci_notify_reg, + set_pi_dbell[0]); + } else { + off = offsetof(struct virtio_pci_notify_reg, + inc_pi_dbell[0]); + } + } else { + // split: qtypes 2 and 3, second half of a 4-qtype region + if (features & VIRTIO_F_NOTIFICATION_DATA) { + off = offsetof(struct virtio_pci_notify_reg, + set_pi_dbell[VIRTIO_NOTIFY_REG_BYTES / 2]); + } else { + off = offsetof(struct virtio_pci_notify_reg, + inc_pi_dbell[VIRTIO_NOTIFY_REG_BYTES / 2]); + } + } + + return (uint16_t)(off / VIRTIO_NOTIFY_MULTIPLIER); +} struct virtio_ident_reg { uint64_t hw_features; @@ -196,27 +274,34 @@ struct virtio_ident_reg { uint16_t min_qlen; }; +/* The legacy registers must start at 0; everything else is discoverable + * via PCI_CAPs + */ struct virtio_dev_regs { union { - struct virtio_pci_common_cfg cmn_cfg; + struct virtio_pci_legacy_cfg legacy_cfg; uint8_t part0[256]; }; + union { + struct virtio_pci_common_cfg cmn_cfg; + uint8_t part1[256]; + }; union { struct virtio_net_config net_cfg; uint8_t dev_cfg[256]; - uint8_t part1[256]; + uint8_t part2[256]; }; union { struct virtio_ident_reg ident; - uint8_t part2[512]; + uint8_t part3[256]; }; union { - struct virtio_pci_notify_reg notify_reg; - uint8_t part3[1024]; + uint8_t isr_cfg[1024]; + uint8_t part4[1024]; }; union { - uint8_t isr_cfg[2048]; - uint8_t part4[2048]; + struct virtio_pci_notify_reg notify_reg; + uint8_t part5[2048]; }; /* indirect queue configs */ struct virtio_pci_queue_cfg queue_cfg[VIRTIO_PCI_QUEUE_SELECT_COUNT]; diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/bar.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/bar.c index a21143f91b48..b9dc04f6d68b 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/bar.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/bar.c @@ -109,7 +109,7 @@ pciehw_barrd_notify(const int port, notify_entry_t *nentry) { const tlpauxinfo_t *info = &nentry->info; const pciehw_spmt_t *spmt = pciesvc_spmt_get(info->pmti); - pciehwdev_t *phwdev = pciehwdev_get(spmt->owner); + pciehwdev_t *phwdev = pciehwdev_get(spmt->owner + info->vfid); pcie_stlp_t stlpbuf, *stlp = &stlpbuf; pcietlp_decode(stlp, nentry->rtlp, sizeof(nentry->rtlp)); @@ -126,7 +126,7 @@ pciehw_barwr_notify(const int port, notify_entry_t *nentry) { const tlpauxinfo_t *info = &nentry->info; const pciehw_spmt_t *spmt = pciesvc_spmt_get(info->pmti); - pciehwdev_t *phwdev = pciehwdev_get(spmt->owner); + pciehwdev_t *phwdev = pciehwdev_get(spmt->owner + info->vfid); pcie_stlp_t stlpbuf, *stlp = &stlpbuf; pcietlp_decode(stlp, nentry->rtlp, sizeof(nentry->rtlp)); @@ -143,7 +143,7 @@ pciehw_barrd_indirect(const int port, indirect_entry_t *ientry) { const tlpauxinfo_t *info = &ientry->info; const pciehw_spmt_t *spmt = pciesvc_spmt_get(info->pmti); - pciehwdev_t *phwdev = pciehwdev_get(spmt->owner); + pciehwdev_t *phwdev = pciehwdev_get(spmt->owner + info->vfid); const pciehwbar_t *phwbar = pciehw_bar_get(phwdev, spmt->cfgidx); switch (phwbar->hnd) { @@ -197,7 +197,7 @@ pciehw_barwr_indirect(const int port, indirect_entry_t *ientry) { const tlpauxinfo_t *info = &ientry->info; const pciehw_spmt_t *spmt = pciesvc_spmt_get(info->pmti); - pciehwdev_t *phwdev = pciehwdev_get(spmt->owner); + pciehwdev_t *phwdev = pciehwdev_get(spmt->owner + info->vfid); const pciehwbar_t *phwbar = pciehw_bar_get(phwdev, spmt->cfgidx); pcie_stlp_t stlpbuf, *stlp = &stlpbuf; diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/cfg.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/cfg.c index 2ec811a03c6a..4e5b39228c47 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/cfg.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/cfg.c @@ -83,7 +83,8 @@ stlp_overlap(const pcie_stlp_t *stlp, static pciehwdevh_t cfgpa_to_hwdevh(const u_int64_t cfgpa) { -#define CFGCURSZ sizeof(((pciehw_mem_t *)0L)->cfgcur) + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); +#define CFGCURSZ PHWMEM_SIZEOF(phwmem, pshmem, cfgcur) const u_int64_t cfgcurpa = pciesvc_cfgcur_pa(); if (cfgpa >= cfgcurpa && cfgpa < cfgcurpa + CFGCURSZ) { @@ -531,6 +532,7 @@ pciehw_cfgwr_msix(const handler_ctx_t *hctx) msix_mask = (msixctl & PCI_MSIX_FLAGS_MASKALL) != 0; phwdev = pciehwdev_get(hctx->hwdevh); + phwdev->msix_en = msix_en; if (msix_en) { /* msix mode */ @@ -635,7 +637,7 @@ pciehw_sriov_adjust_vf0(pciehwdev_t *vfhwdev, const int numvfs) pciehw_spmt_t *spmt, *spmte; if (!phwbar->valid) continue; do_log = 1; /* log adjust_vf0 for first pmt of bar */ - spmt = &pshmem->spmt[phwbar->pmtb]; + spmt = PSHMEM_ADDR_FIELD(pshmem, spmt[phwbar->pmtb]); spmte = spmt + phwbar->pmtc; for ( ; spmt < spmte; spmt++) { if (spmt->vf0) { @@ -1026,16 +1028,31 @@ void pciehw_cfg_reset(pciehwdev_t *phwdev, const pciesvc_rsttype_t rsttype) { cfgspace_t cs; - u_int16_t cfgsz, cmd; + u_int16_t cfgsz, cmd, pciecap, devctl, maxpayload; pciesvc_cfgspace_get(pciehwdev_geth(phwdev), &cs); cfgsz = cfgspace_size(&cs); + /* save maxpayload setting before reset */ + pciecap = cfgspace_findcap(&cs, PCI_CAP_ID_EXP); + if (pciecap) { + devctl = cfgspace_readw(&cs, pciecap + PCI_EXP_DEVCTL); + maxpayload = devctl & PCI_EXP_DEVCTL_PAYLOAD; + } + /***************** * reset cfg space */ pciesvc_memcpy_toio(cs.cur, cs.rst, cfgsz); + /* maxpayload setting preserved across FLR, restore saved value */ + if (rsttype == PCIESVC_RSTTYPE_FLR && pciecap) { + devctl = cfgspace_readw(&cs, pciecap + PCI_EXP_DEVCTL); + devctl &= ~PCI_EXP_DEVCTL_PAYLOAD; + devctl |= maxpayload; + cfgspace_writew(&cs, pciecap + PCI_EXP_DEVCTL, devctl); + } + /* Read reset value for cmd */ cmd = cfgspace_readw(&cs, PCI_COMMAND); pciehw_cfg_cmd(phwdev, &cs, cmd); diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pciesvc_impl.h b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pciesvc_impl.h index 948cb62012ee..5b65b33172ef 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pciesvc_impl.h +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pciesvc_impl.h @@ -94,8 +94,9 @@ pciesvc_indirect_intr_dest_pa(const int port) pciesvc_assert(port >= 0 && port < PCIEHW_NPORTS); if (intr_dest_pa[port] == 0) { pciehw_mem_t *phwmem = pciesvc_hwmem_get(); + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); intr_dest_pa[port] = - pciesvc_vtop(&phwmem->indirect_intr_dest[port]); + pciesvc_vtop(PHWMEM_ADDR_FIELD(phwmem, pshmem, indirect_intr_dest[port])); } return intr_dest_pa[port]; } @@ -108,8 +109,9 @@ pciesvc_notify_intr_dest_pa(const int port) pciesvc_assert(port >= 0 && port < PCIEHW_NPORTS); if (intr_dest_pa[port] == 0) { pciehw_mem_t *phwmem = pciesvc_hwmem_get(); + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); intr_dest_pa[port] = - pciesvc_vtop(&phwmem->notify_intr_dest[port]); + pciesvc_vtop(PHWMEM_ADDR_FIELD(phwmem, pshmem, notify_intr_dest[port])); } return intr_dest_pa[port]; } @@ -121,7 +123,8 @@ pciesvc_cfgcur_pa(void) if (cfgcur_pa == 0) { pciehw_mem_t *phwmem = pciesvc_hwmem_get(); - cfgcur_pa = pciesvc_vtop(phwmem->cfgcur); + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); + cfgcur_pa = pciesvc_vtop(PHWMEM_DATA_FIELD(phwmem, pshmem, cfgcur)); } return cfgcur_pa; } @@ -133,7 +136,7 @@ pciesvc_notify_ring_mask(const int port) if (ring_mask == 0) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - ring_mask = pshmem->notify_ring_mask; + ring_mask = PSHMEM_DATA_FIELD(pshmem, notify_ring_mask); } return ring_mask; } @@ -142,9 +145,10 @@ static inline notify_entry_t * pciesvc_notify_ring_get(const int port, const int idx) { pciehw_mem_t *phwmem = pciesvc_hwmem_get(); + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); notify_entry_t *notify_ring; - notify_ring = (notify_entry_t *)phwmem->notify_area[port]; + notify_ring = (notify_entry_t *)PHWMEM_ADDR_FIELD(phwmem, pshmem, notify_area[port]); return ¬ify_ring[idx]; } @@ -160,7 +164,7 @@ pciesvc_port_get(const int port) pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciesvc_assert(port >= 0 && port <= PCIEHW_NPORTS); - return &pshmem->port[port]; + return PSHMEM_ADDR_FIELD(pshmem, port[port]); } static inline void @@ -173,8 +177,10 @@ static inline pciehwdev_t * pciesvc_dev_get(const pciehwdevh_t hwdevh) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); + int ndevs = PSHMEM_NDEVS(pshmem); - return hwdevh > 0 && hwdevh < PCIEHW_NDEVS ? &pshmem->dev[hwdevh] : NULL; + return hwdevh > 0 && + hwdevh < ndevs ? PSHMEM_ADDR_FIELD(pshmem, dev[hwdevh]) : NULL; } static inline void @@ -189,9 +195,9 @@ pciesvc_cfgspace_get(const pciehwdevh_t hwdevh, cfgspace_t *cs) pciehw_mem_t *phwmem = pciesvc_hwmem_get(); pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - cs->cur = phwmem->cfgcur[hwdevh]; - cs->msk = pshmem->cfgmsk[hwdevh]; - cs->rst = pshmem->cfgrst[hwdevh]; + cs->cur = PHWMEM_DATA_FIELD(phwmem, pshmem, cfgcur[hwdevh]); + cs->msk = PSHMEM_DATA_FIELD(pshmem, cfgmsk[hwdevh]); + cs->rst = PSHMEM_DATA_FIELD(pshmem, cfgrst[hwdevh]); cs->size = PCIEHW_CFGSZ; } @@ -206,7 +212,7 @@ pciesvc_spmt_get(const int idx) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - return &pshmem->spmt[idx]; + return PSHMEM_ADDR_FIELD(pshmem, spmt[idx]); } static inline void @@ -220,7 +226,7 @@ pciesvc_sprt_get(const int idx) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - return &pshmem->sprt[idx]; + return PSHMEM_ADDR_FIELD(pshmem, sprt[idx]); } static inline void @@ -234,7 +240,7 @@ pciesvc_vpd_get(const pciehwdevh_t hwdevh) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - return &pshmem->vpddata[hwdevh]; + return PSHMEM_ADDR_FIELD(pshmem, vpddata[hwdevh]); } static inline void @@ -304,6 +310,12 @@ rounddn_power2(u_int64_t n) return roundup_power2(n + 1) >> 1; } +static inline u_int64_t +align_to(u_int64_t n, u_int64_t align) +{ + return (n + align - 1) & ~(align - 1); +} + #ifdef __cplusplus } #endif diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pmt.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pmt.c index 8eebb4c781aa..b175e5eae0bb 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pmt.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/pmt.c @@ -56,18 +56,23 @@ pmt_alloc_high(const int n) pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciehw_spmt_t *spmt; int pmti = -1; + u_int32_t freepmt_high_l, allocpmt_high_l, allocpmt_low_l; - if (n == 1 && pshmem->freepmt_high != PMT_INVALID) { + freepmt_high_l = PSHMEM_DATA_FIELD(pshmem, freepmt_high); + allocpmt_high_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_high); + allocpmt_low_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_low); + + if (n == 1 && freepmt_high_l != PMT_INVALID) { /* alloc a single entry from free list */ - pmti = pshmem->freepmt_high; + pmti = freepmt_high_l; spmt = pciesvc_spmt_get(pmti); - pshmem->freepmt_high = spmt->next; + PSHMEM_ASGN_FIELD(pshmem, freepmt_high, spmt->next); spmt->next = PMT_INVALID; pciesvc_spmt_put(spmt, DIRTY); - } else if (pshmem->allocpmt_high + n <= pshmem->allocpmt_low) { + } else if (allocpmt_high_l + n <= allocpmt_low_l) { /* alloc multiple entries from sequential block */ - pmti = pshmem->allocpmt_high; - pshmem->allocpmt_high += n; + pmti = allocpmt_high_l; + PSHMEM_ASGN_FIELD(pshmem, allocpmt_high, allocpmt_high_l + n); } return pmti; } @@ -78,18 +83,23 @@ pmt_alloc_low(const int n) pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciehw_spmt_t *spmt; int pmti = -1; + u_int32_t freepmt_low_l, allocpmt_high_l, allocpmt_low_l; + + freepmt_low_l = PSHMEM_DATA_FIELD(pshmem, freepmt_low); + allocpmt_high_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_high); + allocpmt_low_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_low); - if (n == 1 && pshmem->freepmt_low != PMT_INVALID) { + if (n == 1 && freepmt_low_l != PMT_INVALID) { /* alloc a single entry from free list */ - pmti = pshmem->freepmt_low; + pmti = freepmt_low_l; spmt = pciesvc_spmt_get(pmti); - pshmem->freepmt_low = spmt->next; + PSHMEM_ASGN_FIELD(pshmem, freepmt_low, spmt->next); spmt->next = PMT_INVALID; pciesvc_spmt_put(spmt, DIRTY); - } else if (pshmem->allocpmt_low - n >= pshmem->allocpmt_high) { + } else if (allocpmt_low_l - n >= allocpmt_high_l) { /* alloc multiple entries from sequential block */ - pshmem->allocpmt_low -= n; - pmti = pshmem->allocpmt_low; + PSHMEM_ASGN_FIELD(pshmem, allocpmt_low, allocpmt_low_l - n); + pmti = PSHMEM_DATA_FIELD(pshmem, allocpmt_low); } return pmti; } @@ -99,13 +109,14 @@ pmt_alloc_vf0adj(const int n) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); int pmti = -1; + u_int32_t allocpmt_vf0adj_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_vf0adj); /* if no reserved vf0adj region alloc from high pri */ - if (pshmem->allocpmt_vf0adj == -1) { + if (allocpmt_vf0adj_l == -1) { pmti = pmt_alloc_high(n); - } else if (pshmem->allocpmt_vf0adj + n <= pmt_count()) { - pmti = pshmem->allocpmt_vf0adj; - pshmem->allocpmt_vf0adj += n; + } else if (allocpmt_vf0adj_l + n <= pmt_count()) { + pmti = allocpmt_vf0adj_l; + PSHMEM_ASGN_FIELD(pshmem, allocpmt_vf0adj, allocpmt_vf0adj_l + n); } return pmti; } @@ -148,16 +159,18 @@ pmt_alloc(const int n, const int pri) pciehw_shmem_t *pshmem = pciesvc_shmem_get(); int pmti = -1; - pciesvc_assert(n > 0); - pciesvc_assert(n <= pmt_count()); + if (n <= 0 || n > pmt_count()) { + pciesvc_logerror("pmt_alloc: Invalid count value %d\n", n); + return -1; + } - if (!pshmem->pmtpri) { - pshmem->allocpmt_low = pmt_count(); - pshmem->freepmt_high = PMT_INVALID; - pshmem->freepmt_low = PMT_INVALID; - pshmem->allocpmt_vf0adj = -1; - pshmem->freeprt_slab = PRT_INVALID; - pshmem->pmtpri = 1; + if (!PSHMEM_DATA_FIELD(pshmem, pmtpri)) { + PSHMEM_ASGN_FIELD(pshmem, allocpmt_low, pmt_count()); + PSHMEM_ASGN_FIELD(pshmem, freepmt_high, PMT_INVALID); + PSHMEM_ASGN_FIELD(pshmem, freepmt_low, PMT_INVALID); + PSHMEM_ASGN_FIELD(pshmem, allocpmt_vf0adj, -1); + PSHMEM_ASGN_FIELD(pshmem, freeprt_slab, PRT_INVALID); + PSHMEM_ASGN_FIELD(pshmem, pmtpri, 1); } switch (pri) { @@ -188,20 +201,27 @@ int pmt_reserve_vf0adj(const int n) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); + int ret = 0; - pshmem->allocpmt_vf0adj = pmt_alloc(n, PMTPRI_LOW); - return pshmem->allocpmt_vf0adj; + ret = pmt_alloc(n, PMTPRI_LOW); + if (ret < 0) return ret; + PSHMEM_ASGN_FIELD(pshmem, allocpmt_vf0adj, ret); + return PSHMEM_DATA_FIELD(pshmem, allocpmt_vf0adj); } static int -pmt_to_pri(const int pmti) +pmt_to_pri(const int pmtb, const int pmtc) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); int pmtpri = -1; + int pmti = pmtb + pmtc; + u_int32_t allocpmt_high_l, allocpmt_low_l; - if (pmti >= 0 && pmti <= pshmem->allocpmt_high) { + allocpmt_high_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_high); + allocpmt_low_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_low); + if (pmtb >= 0 && pmti <= allocpmt_high_l) { pmtpri = PMTPRI_HIGH; - } else if (pmti >= pshmem->allocpmt_low && pmti < pmt_count()) { + } else if (pmtb >= allocpmt_low_l && pmti <= pmt_count()) { pmtpri = PMTPRI_LOW; } return pmtpri; @@ -211,7 +231,7 @@ static int spmt_to_pmti(const pciehw_spmt_t *spmt) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - return spmt - pshmem->spmt; + return spmt - PSHMEM_DATA_FIELD(pshmem, spmt); } void @@ -219,33 +239,47 @@ pmt_free(const int pmtb, const int pmtc) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciehw_spmt_t *spmt; - int pmti; + int pmti, pmtpri; + u_int32_t allocpmt_high_l, freepmt_high_l, allocpmt_low_l, freepmt_low_l; assert_pmts_in_range(pmtb, pmtc); - if (pmt_to_pri(pmtb + pmtc) == PMTPRI_HIGH) { + allocpmt_high_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_high); + allocpmt_low_l = PSHMEM_DATA_FIELD(pshmem, allocpmt_low); + freepmt_high_l = PSHMEM_DATA_FIELD(pshmem, freepmt_high); + freepmt_low_l = PSHMEM_DATA_FIELD(pshmem, freepmt_low); + pmtpri = pmt_to_pri(pmtb, pmtc); + if (pmtpri == PMTPRI_HIGH) { /* free high pri */ + if (allocpmt_high_l == (pmtb + pmtc)) { + PSHMEM_ASGN_FIELD(pshmem, allocpmt_high, allocpmt_high_l - pmtc); + return; + } for (pmti = pmtb; pmti < pmtb + pmtc; pmti++) { spmt = pciesvc_spmt_get(pmti); - spmt->next = pshmem->freepmt_high; + spmt->next = freepmt_high_l; pciesvc_spmt_put(spmt, DIRTY); - pshmem->freepmt_high = pmti; + PSHMEM_ASGN_FIELD(pshmem, freepmt_high, pmti); } - } else if (pmt_to_pri(pmtb) == PMTPRI_LOW) { + } else if (pmtpri == PMTPRI_LOW) { /* free low pri */ + if (allocpmt_low_l == pmtb) { + PSHMEM_ASGN_FIELD(pshmem, allocpmt_low, allocpmt_low_l + pmtc); + return; + } for (pmti = pmtb; pmti < pmtb + pmtc; pmti++) { spmt = pciesvc_spmt_get(pmti); - spmt->next = pshmem->freepmt_low; + spmt->next = freepmt_low_l; pciesvc_spmt_put(spmt, DIRTY); - pshmem->freepmt_low = pmti; + PSHMEM_ASGN_FIELD(pshmem, freepmt_low, pmti); } } else { /* outside of both alloc ranges? */ pciesvc_logerror("pmt_free: leak pmt %d (%d), " "allocpmt_low %u allocpmt_high %u\n", pmtb, pmtc, - pshmem->allocpmt_low, - pshmem->allocpmt_high); + allocpmt_low_l, + allocpmt_high_l); } } @@ -631,11 +665,11 @@ spmt_dup_prts(const pciehw_spmt_t *ospmt, pciehw_spmt_t *nspmt) pciesvc_logerror("spmt_dup: prt_alloc %d failed\n", pmr->prtc); return -1; } - osprt = &pshmem->sprt[pmr->prtb]; - nsprt = &pshmem->sprt[prti]; + osprt = PSHMEM_ADDR_FIELD(pshmem, sprt[pmr->prtb]); + nsprt = PSHMEM_ADDR_FIELD(pshmem, sprt[prti]); pmr->prtb = prti; for (prti = pmr->prtb; prti < pmr->prtb + pmr->prtc; prti++) { - *nsprt = *osprt; + pciesvc_memcpy(nsprt++, osprt++, sizeof(*nsprt)); } return 0; } @@ -907,6 +941,8 @@ pciehw_pmt_adjust_vf0(pciehw_spmt_t *spmt, r = -1; break; } + /* set owner to adjusted vf dev */ + nspmt->owner = spmt->owner + nvfs; spmt = nspmt; } } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/prt.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/prt.c index 811a3e30b93c..7e5965e6a5b4 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/prt.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/prt.c @@ -39,17 +39,20 @@ prt_alloc(const int n) pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciehw_sprt_t *sprt; int prti = -1; + u_int32_t allocprt_l, freeprt_slab_l; - if (n == PRT_SLAB_SIZE && pshmem->freeprt_slab != PRT_INVALID) { + allocprt_l = PSHMEM_DATA_FIELD(pshmem, allocprt); + freeprt_slab_l = PSHMEM_DATA_FIELD(pshmem, freeprt_slab); + if (n == PRT_SLAB_SIZE && freeprt_slab_l != PRT_INVALID) { /* alloc slab entry from slab list */ - prti = pshmem->freeprt_slab; + prti = freeprt_slab_l; sprt = pciesvc_sprt_get(prti); - pshmem->freeprt_slab = sprt->next; + PSHMEM_ASGN_FIELD(pshmem, freeprt_slab, sprt->next); sprt->next = PRT_INVALID; pciesvc_sprt_put(sprt, DIRTY); - } else if (pshmem->allocprt + n < prt_count()) { - prti = pshmem->allocprt; - pshmem->allocprt += n; + } else if (allocprt_l + n < prt_count()) { + prti = allocprt_l; + PSHMEM_ASGN_FIELD(pshmem, allocprt, allocprt_l + n); } return prti; } @@ -57,18 +60,25 @@ prt_alloc(const int n) void prt_free(const int prtb, const int prtc) { + pciehw_shmem_t *pshmem = pciesvc_shmem_get(); + u_int32_t allocprt_l; + assert_prts_in_range(prtb, prtc); - if (prtc == PRT_SLAB_SIZE) { + allocprt_l = PSHMEM_DATA_FIELD(pshmem, allocprt); + if ((prtb + prtc) == allocprt_l) { + PSHMEM_ASGN_FIELD(pshmem, allocprt, allocprt_l - prtc); + } else if (prtc == PRT_SLAB_SIZE) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); pciehw_sprt_t *sprt; sprt = pciesvc_sprt_get(prtb); - sprt->next = pshmem->freeprt_slab; + sprt->next = PSHMEM_DATA_FIELD(pshmem, freeprt_slab); pciesvc_sprt_put(sprt, DIRTY); - pshmem->freeprt_slab = prtb; + PSHMEM_ASGN_FIELD(pshmem, freeprt_slab, prtb); } else { - /* XXX */ + pciesvc_logerror("prt_free: leak prt %d (%d), allocprt %d\n", + prtb, prtc, allocprt_l); } } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/serial.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/serial.c index 981aca813581..f6075c8766ec 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/serial.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/serial.c @@ -386,7 +386,8 @@ serial_get(pciehwdev_t *phwdev) if (!serial.inited) { pciehw_shmem_t *pshmem = pciesvc_shmem_get(); - serial_uart_state_t *su = (serial_uart_state_t *)pshmem->serial[0]; + serial_uart_state_t *su = + (serial_uart_state_t *)PSHMEM_DATA_FIELD(pshmem, serial[0]); serial_state_t *st = &su->serial_state; serial.state = st; diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/virtio.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/virtio.c index 00930126c9e4..28f650f918f4 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/virtio.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc/src/virtio.c @@ -8,9 +8,7 @@ #include "virtio_spec.h" -#define FMT64X "0x%" PRIx64 -#define FMT64U "%" PRIu64 -#define FMT64S "%lu" +#define VIRTIO_LOG_FMT "addr 0x%"PRIx64" off %"PRIu64" size %lu val 0x%"PRIx64 #define VIRTIO_DEV_REG_NOTIFY(fld) \ case VIRTIO_DEV_REG_OFF(fld): \ @@ -20,10 +18,17 @@ #define VIRTIO_DEV_REG_RD(fld) \ case VIRTIO_DEV_REG_OFF(fld): \ pciesvc_mem_rd(addr, &val, VIRTIO_DEV_REG_SZ(fld)); \ - pciesvc_logdebug("%s: read %s addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X"", \ + pciesvc_logdebug("%s: read %s "VIRTIO_LOG_FMT"", \ pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val); \ break; +#define VIRTIO_DEV_REG_RD_PROC(fld, proc) \ + case VIRTIO_DEV_REG_OFF(fld): \ + proc(phwdev, addr - baroff, size, &val); \ + pciesvc_logdebug("%s: write %s "VIRTIO_LOG_FMT" proc %s", \ + pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val, #proc); \ + break; + #define VIRTIO_DEV_REG_RD_ARR(fld, arr_fld, idx_fld, idx_count) \ case VIRTIO_DEV_REG_OFF(fld): \ pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, idx_fld), \ @@ -31,44 +36,35 @@ if (idx < idx_count) { \ pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, arr_fld), \ &val, VIRTIO_DEV_REG_SZ(arr_fld)); \ - pciesvc_logdebug("%s: read %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X"",\ + pciesvc_logdebug("%s: read %s[%"PRIu64"] "VIRTIO_LOG_FMT"", \ pciehwdev_get_name(phwdev), #fld, idx, \ VIRTIO_DEV_REG_ADDR(base, arr_fld), \ baroff, size, val); \ } else { \ - pciesvc_logerror("%s: read %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" (out of bounds)",\ + pciesvc_logdebug("%s: read %s[%"PRIu64"] "VIRTIO_LOG_FMT" (out of bounds)",\ pciehwdev_get_name(phwdev), #fld, idx, \ VIRTIO_DEV_REG_ADDR(base, arr_fld), \ baroff, size, val); \ } \ break; -#define VIRTIO_DEV_REG_WR(fld) \ +#define VIRTIO_DEV_REG_WR(fld) \ case VIRTIO_DEV_REG_OFF(fld): \ - pciesvc_logdebug("%s: write %s addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X"",\ + pciesvc_logdebug("%s: write %s "VIRTIO_LOG_FMT"", \ pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val); \ pciesvc_mem_wr(addr, &val, VIRTIO_DEV_REG_SZ(fld)); \ break; -#define VIRTIO_DEV_REG_WR_COND(fld, cond) \ - case VIRTIO_DEV_REG_OFF(fld): \ - pciesvc_logdebug("%s: write %s addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" cond %u", \ - pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val, cond); \ - if (cond) { \ - pciesvc_mem_wr(addr, &val, VIRTIO_DEV_REG_SZ(fld)); \ - } \ - break; - #define VIRTIO_DEV_REG_WR_PROC(fld, proc) \ - case VIRTIO_DEV_REG_OFF(fld): \ - pciesvc_logdebug("%s: write %s addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" proc %s", \ + case VIRTIO_DEV_REG_OFF(fld): \ + pciesvc_logdebug("%s: write %s "VIRTIO_LOG_FMT" proc %s", \ pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val, #proc); \ - proc(phwdev, addr, baroff, size, val); \ + proc(phwdev, addr - baroff, size, val); \ break; -#define VIRTIO_DEV_REG_WR_IGN(fld) \ +#define VIRTIO_DEV_REG_WR_IGN(fld) \ case VIRTIO_DEV_REG_OFF(fld): \ - pciesvc_logdebug("%s: write %s addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" ignore",\ + pciesvc_logdebug("%s: write %s "VIRTIO_LOG_FMT" ignore", \ pciehwdev_get_name(phwdev), #fld, addr, baroff, size, val); \ break; @@ -77,33 +73,14 @@ pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, idx_fld), \ &idx, VIRTIO_DEV_REG_SZ(idx_fld)); \ if (idx < idx_count) { \ - pciesvc_logdebug("%s: write %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X"",\ - pciehwdev_get_name(phwdev), #fld, idx, \ - VIRTIO_DEV_REG_ADDR(base, arr_fld), \ - baroff, size, val); \ - pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, arr_fld), \ - &val, VIRTIO_DEV_REG_SZ(arr_fld)); \ - } else { \ - pciesvc_logerror("%s: write %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" (out of bounds)",\ - pciehwdev_get_name(phwdev), #fld, idx, \ - VIRTIO_DEV_REG_ADDR(base, arr_fld), \ - baroff, size, val); \ - } \ - break; - -#define VIRTIO_DEV_REG_WR_ARR_IGN(fld, arr_fld, idx_fld, idx_count) \ - case VIRTIO_DEV_REG_OFF(fld): \ - pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, idx_fld), \ - &idx, VIRTIO_DEV_REG_SZ(idx_fld)); \ - if (idx < idx_count) { \ - pciesvc_logdebug("%s: write %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" ignore",\ + pciesvc_logdebug("%s: write %s[%"PRIu64"] "VIRTIO_LOG_FMT"",\ pciehwdev_get_name(phwdev), #fld, idx, \ VIRTIO_DEV_REG_ADDR(base, arr_fld), \ baroff, size, val); \ pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, arr_fld), \ &val, VIRTIO_DEV_REG_SZ(arr_fld)); \ } else { \ - pciesvc_logerror("%s: write %s["FMT64U"] addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" ignore (out of bounds)",\ + pciesvc_logdebug("%s: write %s[%"PRIu64"] "VIRTIO_LOG_FMT" (out of bounds)",\ pciehwdev_get_name(phwdev), #fld, idx, \ VIRTIO_DEV_REG_ADDR(base, arr_fld), \ baroff, size, val); \ @@ -114,6 +91,108 @@ (_offs >= VIRTIO_DEV_REG_OFF(_fld) && \ (_offs + _sz) <= VIRTIO_DEV_REG_OFF(_fld) + VIRTIO_DEV_REG_SZ(_fld)) + +static void +virtio_legacy_barrd_isr_status(pciehwdev_t *phwdev, const u_int64_t base, + const size_t size, u_int64_t *val) +{ + u_int8_t isr_reset = 0; + + // TODO - first entry in isr_cfg region? Or somewhere else? + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, isr_cfg), val, 1); + + // clear-on-read + if (*val) { + pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, isr_cfg), &isr_reset, 1); + } +} + +static u_int64_t +virtio_legacy_barrd(pciehwdev_t *phwdev, u_int64_t addr, + const u_int64_t baroff, const size_t size, + u_int8_t *do_notify) +{ + u_int64_t base = addr - baroff; + u_int64_t val = 0; + u_int64_t idx = 0; + u_int64_t offset; + + /* net_cfg */ + if (phwdev->msix_en) { + if (VIRTIO_DEV_REG_INSIDE(legacy_cfg.net_cfg_msix, baroff, size)) { + offset = baroff - VIRTIO_DEV_REG_OFF(legacy_cfg.net_cfg_msix); + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, net_cfg) + offset, &val, size); + return val; + } + } else { + if (VIRTIO_DEV_REG_INSIDE(legacy_cfg.net_cfg, baroff, size)) { + offset = baroff - VIRTIO_DEV_REG_OFF(legacy_cfg.net_cfg); + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, net_cfg) + offset, &val, size); + return val; + } + } + + /* msi-x */ + if (phwdev->msix_en && + VIRTIO_DEV_REG_INSIDE(legacy_cfg.msix_cfg, baroff, size)) { + switch (baroff) { + // Indirect scalar + case VIRTIO_DEV_REG_OFF(legacy_cfg.msix_cfg.config_msix_vector): + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.config_msix_vector), + &val, VIRTIO_DEV_REG_SZ(cmn_cfg.config_msix_vector)); + break; + + VIRTIO_DEV_REG_RD_ARR(legacy_cfg.msix_cfg.queue_msix_vector, + queue_cfg[idx].queue_msix_vector, + legacy_cfg.queue_select, + VIRTIO_PCI_QUEUE_SELECT_COUNT); + default: + break; + } + + return val; + } + + switch (baroff) { + // NB - select is always 0 in legacy case + VIRTIO_DEV_REG_RD_ARR(legacy_cfg.device_feature, + cmn_cfg.device_feature_cfg[idx], + cmn_cfg.device_feature_select, 1); + + // NB - select is always 0 in legacy case + VIRTIO_DEV_REG_RD_ARR(legacy_cfg.driver_feature, + cmn_cfg.driver_feature_cfg[idx], + cmn_cfg.driver_feature_select, 1); + + VIRTIO_DEV_REG_RD_ARR(legacy_cfg.queue_address, + queue_cfg[idx].queue_desc_lo, + legacy_cfg.queue_select, + VIRTIO_PCI_QUEUE_SELECT_COUNT); + + VIRTIO_DEV_REG_RD_ARR(legacy_cfg.queue_size, + queue_cfg[idx].queue_size, + legacy_cfg.queue_select, + VIRTIO_PCI_QUEUE_SELECT_COUNT); + + VIRTIO_DEV_REG_RD(legacy_cfg.queue_select); + + VIRTIO_DEV_REG_RD(legacy_cfg.queue_notify); + + // Indirect scalar + case VIRTIO_DEV_REG_OFF(legacy_cfg.device_status): + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.device_status), + &val, VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); + break; + + VIRTIO_DEV_REG_RD_PROC(legacy_cfg.isr_status, + virtio_legacy_barrd_isr_status); + default: + break; + } + + return val; +} + u_int64_t virtio_barrd(pciehwdev_t *phwdev, u_int64_t addr, const u_int64_t baroff, const size_t size, @@ -123,11 +202,26 @@ virtio_barrd(pciehwdev_t *phwdev, u_int64_t addr, u_int64_t val = 0; u_int64_t idx = 0; + /* legacy_cfg */ + if (VIRTIO_DEV_REG_INSIDE(part0, baroff, size)) { + val = virtio_legacy_barrd(phwdev, addr, baroff, size, do_notify); + pciesvc_logerror("%s: read part0 "VIRTIO_LOG_FMT"", + pciehwdev_get_name(phwdev), addr, baroff, size, val); + return val; + } + /* net_cfg */ - if (VIRTIO_DEV_REG_INSIDE(part1, baroff, size)) { + if (VIRTIO_DEV_REG_INSIDE(part2, baroff, size)) { pciesvc_mem_rd(addr, &val, size); - pciesvc_logdebug("%s: read part1 addr "FMT64X" " - "off "FMT64U" size "FMT64S" val "FMT64X"", + pciesvc_logdebug("%s: read part2 "VIRTIO_LOG_FMT"", + pciehwdev_get_name(phwdev), addr, baroff, size, val); + return val; + } + + /* isr_cfg */ + if (VIRTIO_DEV_REG_INSIDE(isr_cfg, baroff, size)) { + val = 0; + pciesvc_logdebug("%s: read isr_cfg "VIRTIO_LOG_FMT"", pciehwdev_get_name(phwdev), addr, baroff, size, val); return val; } @@ -205,23 +299,56 @@ virtio_barrd(pciehwdev_t *phwdev, u_int64_t addr, default: val = 0; - pciesvc_logerror("%s: read addr "FMT64X" off "FMT64U" size "FMT64S" default ignore", - pciehwdev_get_name(phwdev), addr, baroff, size); + pciesvc_logdebug("%s: read "VIRTIO_LOG_FMT" default ignore", + pciehwdev_get_name(phwdev), addr, baroff, size, val); break; } return val; } +// Nicmgr initialized the queue configs with notify offsets in the incr_pi_dbell range. +// Here we modify the offsets depending on which features are selected, to change the +// doorbell behavior. +// +// Notification Data wants to use SET_PI instead of INC_PI. Split VQ wants to use +// SCHED_SET instead of SCHED_NONE for RX. +// +// This is done here in pciesvc, so that the driver can read the notify offset of queues +// _immediately_ after setting features ok. static void -virtio_barwr_device_status(pciehwdev_t *phwdev, u_int64_t addr, - const u_int64_t baroff, const size_t size, - const u_int64_t val) +virtio_barwr_config_notif_data(pciehwdev_t *phwdev, + const u_int64_t base, + const u_int64_t features) +{ + const uint16_t notify_offset = virtio_features_notify_offset(features); + u_int16_t vq_i, vq_count; + + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.num_queues), + &vq_count, sizeof(vq_count)); + + pciesvc_logdebug("proc: vq_count %u notify_offset %u", + vq_count, notify_offset); + + for (vq_i = 0; vq_i < vq_count; ++vq_i) { + u_int64_t off_addr = + VIRTIO_DEV_REG_ADDR(base, queue_cfg[vq_i].queue_notify_off); + + u_int16_t off = + notify_offset + VIRTIO_VQID_NOTIFY_OFF(vq_i); + + pciesvc_mem_wr(off_addr, &off, sizeof(off)); + } +} + +static void +virtio_barwr_device_status(pciehwdev_t *phwdev, const u_int64_t base, + const size_t size, const u_int64_t val) { - u_int64_t base = addr - baroff; u_int8_t old = 0; - pciesvc_mem_rd(addr, &old, VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.device_status), + &old, VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); if (!val) { // If pciemgr sees the transition nonzero -> zero, then nicmgr needs to @@ -255,57 +382,252 @@ virtio_barwr_device_status(pciehwdev_t *phwdev, u_int64_t addr, return; } + // FEATURES_OK is only defined for version 1, so this is not entered + // for legacy devices. Legacy devices react to feature bit changes when + // the register is written - see virtio_legacy_barwr_driver_feature(). if ((val & VIRTIO_S_FEATURES_OK) && !(old & VIRTIO_S_FEATURES_OK)) { - u_int32_t feature_lo = 0; - u_int32_t feature_hi = 0; - u_int64_t feature = 0; + u_int64_t features = 0; + u_int64_t hw_features = 0; + u_int64_t unsupp_features; + + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.active_features), + &features, sizeof(features)); + + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, ident.hw_features), + &hw_features, sizeof(hw_features)); + + unsupp_features = features & ~hw_features; + if (unsupp_features) { + pciesvc_logdebug("proc: request for unsupported features %"PRIx64, + unsupp_features); + // Don't update the status. Driver will see that the + // FEATURES_OK bit was not acknowledged by the device. + return; + } + + pciesvc_loginfo("proc: features_ok 0x%"PRIx64"", features); + + // Now react to any feature bit changes, as needed + + virtio_barwr_config_notif_data(phwdev, base, features); + } + + pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.device_status), &val, + VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); +} + +static void +virtio_barwr_driver_feature(pciehwdev_t *phwdev, const u_int64_t base, + const size_t size, const u_int64_t val) +{ + u_int64_t reg_addr, reg_size; + u_int64_t idx = 0; + u_int8_t status = 0; - pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.driver_feature_cfg[0]), - &feature_lo, sizeof(feature_lo)); + // Verify that device is in the correct state + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.device_status), &status, + VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); - pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.driver_feature_cfg[1]), - &feature_hi, sizeof(feature_hi)); + if (status & VIRTIO_S_FEATURES_OK) { + pciesvc_logdebug("proc: ignoring late features write"); + return; + } + + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.driver_feature_select), + &idx, + VIRTIO_DEV_REG_SZ(cmn_cfg.driver_feature_select)); + + reg_addr = VIRTIO_DEV_REG_ADDR(base, cmn_cfg.driver_feature_cfg[idx]); + reg_size = VIRTIO_DEV_REG_SZ(cmn_cfg.driver_feature_cfg[idx]); + + if (idx < VIRTIO_PCI_FEATURE_SELECT_COUNT) { + pciesvc_logdebug("%s: write cmn_cfg.driver_feature[%"PRIu64"] "VIRTIO_LOG_FMT"", + pciehwdev_get_name(phwdev), idx, reg_addr, + reg_addr - base, size, val); + // Actually perform the requested write + pciesvc_mem_wr(reg_addr, &val, reg_size); + + // If the driver negotiates F_MRG_RXBUF, switch to the larger mtu, + // this is required /before/ the driver sends features ok. + if (idx == 0 && (val & VIRTIO_NET_F_MRG_RXBUF)) { + u_int16_t mtu = 0; + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.mtu_mrg_rxbuf), + &mtu, sizeof(mtu)); + pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, net_cfg.mtu), + &mtu, sizeof(mtu)); + } + } else { + pciesvc_logdebug("%s: write cmn_cfg.driver_feature[%"PRIu64"] "VIRTIO_LOG_FMT" (out of bounds)", + pciehwdev_get_name(phwdev), idx, reg_addr, + reg_addr - base, size, val); + } +} + +static void +virtio_legacy_barwr_driver_feature(pciehwdev_t *phwdev, const u_int64_t base, + const size_t size, const u_int64_t val) +{ + u_int64_t reg_addr, reg_size; + u_int64_t hw_features = 0; + u_int64_t unsupp_features; + u_int8_t status = 0; + + // Verify that device is in the correct state + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.device_status), + &status, sizeof(status)); + + // NB: There is no FEATURES_OK bit in the legacy interface + if (status & VIRTIO_S_DRIVER_OK) { + pciesvc_logdebug("proc: ignoring late features write"); + return; + } - feature = (u_int64_t)feature_lo | ((u_int64_t)feature_hi << 32); + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, ident.hw_features), + &hw_features, sizeof(hw_features)); - pciesvc_loginfo("proc: features_ok "FMT64X"", feature); + unsupp_features = val & ~hw_features; + if (unsupp_features) { + pciesvc_logdebug("proc: request for unsupported features %"PRIx64"", + unsupp_features); + // NB: There is no NEEDS_RESET bit in the legacy interface + return; + } - if (feature & VIRTIO_F_NOTIFICATION_DATA) { - // Nicmgr initialized the queue configs with notify offsets in - // the incr_pi_dbell range. If this feature is selected, - // modify the queue configs to ring the same doorbell via the - // set_pi_dbell range. - // - // This is done here in pciesvc, so that the driver can read - // the notify offset of queues _immediately_ after setting - // features ok. + // Now react to any feature bit changes, as needed - const uint16_t notify_offset = - offsetof(struct virtio_pci_notify_reg, set_pi_dbell) - / VIRTIO_NOTIFY_MULTIPLIER; + // If the driver negotiates F_MRG_RXBUF, switch to the larger mtu + if (val & VIRTIO_NET_F_MRG_RXBUF) { + u_int16_t mtu = 0; + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.mtu_mrg_rxbuf), + &mtu, sizeof(mtu)); + pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, net_cfg.mtu), + &mtu, sizeof(mtu)); + } - u_int16_t vq_i = 0, vq_count = 0; + // NB: driver_feature_select is always 0 in legacy case + reg_addr = VIRTIO_DEV_REG_ADDR(base, cmn_cfg.driver_feature_cfg[0]); + reg_size = VIRTIO_DEV_REG_SZ(cmn_cfg.driver_feature_cfg[0]); - pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.num_queues), - &vq_count, sizeof(vq_count)); + pciesvc_logdebug("%s: write cmn_cfg.driver_feature[%"PRIu64"] "VIRTIO_LOG_FMT"", + pciehwdev_get_name(phwdev), (u_int64_t)0, reg_addr, + reg_addr - base, size, val); + // Actually perform the requested write + pciesvc_mem_wr(reg_addr, &val, reg_size); +} - pciesvc_logdebug("proc: vq_count %u notify_offset %u", - vq_count, notify_offset); +// 2.7.2 The driver writes a single address pointing to the beginning of +// struct vring; from there the device calculates the rest of the addresses. +// NB: The queue_address is only 44 bits (32 bits * 4096) +static void +virtio_legacy_barwr_queue_address(pciehwdev_t *phwdev, const u_int64_t base, + const size_t size, const u_int64_t val) +{ + u_int64_t idx = 0; + u_int64_t reg_addr = VIRTIO_DEV_REG_ADDR(base, legacy_cfg.queue_address); + size_t reg_size = VIRTIO_DEV_REG_SZ(queue_cfg[idx].queue_desc_lo); + u_int64_t vq_addr = val << 12; + u_int64_t vq_addr_hi; + u_int64_t vq_size = 0; + + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, legacy_cfg.queue_select), + &idx, VIRTIO_DEV_REG_SZ(legacy_cfg.queue_select)); + + if (idx >= VIRTIO_PCI_QUEUE_SELECT_COUNT) { + pciesvc_logdebug("%s: write legacy_cfg.queue_address[%"PRIu64"] "VIRTIO_LOG_FMT" (out of bounds)", + pciehwdev_get_name(phwdev), idx, reg_addr, + reg_addr - base, reg_size, val); + return; + } - for (; vq_i < vq_count; ++vq_i) { - u_int64_t off_addr = - VIRTIO_DEV_REG_ADDR(base, queue_cfg[vq_i].queue_notify_off); + pciesvc_mem_rd(VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_size), + &vq_size, VIRTIO_DEV_REG_SZ(queue_cfg[idx].queue_size)); - u_int16_t off = 0; + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_desc_lo); + pciesvc_mem_wr(reg_addr, &vq_addr, reg_size); - pciesvc_mem_rd(off_addr, &off, sizeof(off)); - off += notify_offset; - pciesvc_mem_wr(off_addr, &off, sizeof(off)); - } + vq_addr_hi = vq_addr >> 32; + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_desc_hi); + pciesvc_mem_wr(reg_addr, &vq_addr_hi, reg_size); + + vq_addr += (16 * vq_size); /* sizeof(struct vring_desc) */ + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_avail_lo); + pciesvc_mem_wr(reg_addr, &vq_addr, reg_size); + + vq_addr_hi = vq_addr >> 32; + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_avail_hi); + pciesvc_mem_wr(reg_addr, &vq_addr_hi, reg_size); + + vq_addr += (4 + 2 * vq_size + 2); /* sizeof(struct vring_avail) */ + vq_addr = align_to(vq_addr, 4096); + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_used_lo); + pciesvc_mem_wr(reg_addr, &vq_addr, reg_size); + + vq_addr_hi = vq_addr >> 32; + reg_addr = VIRTIO_DEV_REG_ADDR(base, queue_cfg[idx].queue_used_hi); + pciesvc_mem_wr(reg_addr, &vq_addr_hi, reg_size); +} + +static void +virtio_legacy_barwr(pciehwdev_t *phwdev, u_int64_t addr, + const u_int64_t baroff, const size_t size, + const u_int64_t val, u_int8_t *do_notify) +{ + u_int64_t base = addr - baroff; + u_int64_t idx = 0; + + /* msi-x */ + if (phwdev->msix_en && + VIRTIO_DEV_REG_INSIDE(legacy_cfg.msix_cfg, baroff, size)) { + switch (baroff) { + // Indirect scalar + case VIRTIO_DEV_REG_OFF(legacy_cfg.msix_cfg.config_msix_vector): + pciesvc_mem_wr(VIRTIO_DEV_REG_ADDR(base, cmn_cfg.config_msix_vector), + &val, VIRTIO_DEV_REG_SZ(cmn_cfg.config_msix_vector)); + break; + + VIRTIO_DEV_REG_WR_ARR(legacy_cfg.msix_cfg.queue_msix_vector, + queue_cfg[idx].queue_msix_vector, + legacy_cfg.queue_select, + VIRTIO_PCI_QUEUE_SELECT_COUNT); + default: + break; } + + return; } - pciesvc_mem_wr(addr, &val, VIRTIO_DEV_REG_SZ(cmn_cfg.device_status)); + switch (baroff) { + VIRTIO_DEV_REG_WR_IGN(legacy_cfg.device_feature); + + VIRTIO_DEV_REG_WR_PROC(legacy_cfg.driver_feature, + virtio_legacy_barwr_driver_feature); + + VIRTIO_DEV_REG_WR_PROC(legacy_cfg.queue_address, + virtio_legacy_barwr_queue_address); + + VIRTIO_DEV_REG_WR_IGN(legacy_cfg.queue_size); + + VIRTIO_DEV_REG_WR(legacy_cfg.queue_select); + + VIRTIO_DEV_REG_WR(legacy_cfg.queue_notify); + + VIRTIO_DEV_REG_WR_PROC(legacy_cfg.device_status, + virtio_barwr_device_status); + + VIRTIO_DEV_REG_WR_IGN(legacy_cfg.isr_status); + + default: + pciesvc_logdebug("%s: write "VIRTIO_LOG_FMT" default ignore", + pciehwdev_get_name(phwdev), addr, baroff, size, val); + break; + } + + switch (baroff) { + VIRTIO_DEV_REG_NOTIFY(legacy_cfg.device_status); + VIRTIO_DEV_REG_NOTIFY(legacy_cfg.queue_select); + VIRTIO_DEV_REG_NOTIFY(legacy_cfg.queue_address); // enable + VIRTIO_DEV_REG_NOTIFY(legacy_cfg.queue_notify); + } } void @@ -316,20 +638,23 @@ virtio_barwr(pciehwdev_t *phwdev, u_int64_t addr, u_int64_t base = addr - baroff; u_int64_t idx = 0; + /* legacy_cfg */ + if (VIRTIO_DEV_REG_INSIDE(part0, baroff, size)) { + virtio_legacy_barwr(phwdev, addr, baroff, size, val, do_notify); + pciesvc_logerror("%s: write part0 "VIRTIO_LOG_FMT"", + pciehwdev_get_name(phwdev), addr, baroff, size, val); + return; + } + switch (baroff) { VIRTIO_DEV_REG_WR(cmn_cfg.device_feature_select); - VIRTIO_DEV_REG_WR_ARR_IGN(cmn_cfg.device_feature, - cmn_cfg.device_feature_cfg[idx], - cmn_cfg.device_feature_select, - VIRTIO_PCI_FEATURE_SELECT_COUNT); + VIRTIO_DEV_REG_WR_IGN(cmn_cfg.device_feature); VIRTIO_DEV_REG_WR(cmn_cfg.driver_feature_select); - VIRTIO_DEV_REG_WR_ARR(cmn_cfg.driver_feature, - cmn_cfg.driver_feature_cfg[idx], - cmn_cfg.driver_feature_select, - VIRTIO_PCI_FEATURE_SELECT_COUNT); + VIRTIO_DEV_REG_WR_PROC(cmn_cfg.driver_feature, + virtio_barwr_driver_feature); VIRTIO_DEV_REG_WR(cmn_cfg.config_msix_vector); VIRTIO_DEV_REG_WR_IGN(cmn_cfg.num_queues); @@ -388,7 +713,7 @@ virtio_barwr(pciehwdev_t *phwdev, u_int64_t addr, VIRTIO_PCI_QUEUE_SELECT_COUNT); default: - pciesvc_logerror("%s: write addr "FMT64X" off "FMT64U" size "FMT64S" val "FMT64X" default ignore", + pciesvc_logdebug("%s: write "VIRTIO_LOG_FMT" default ignore", pciehwdev_get_name(phwdev), addr, baroff, size, val); break; } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_end.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_end.c index 53fee743d9db..0816a149a4fd 100644 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_end.c +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_end.c @@ -19,6 +19,6 @@ * * Author: rob.gardner@oracle.com */ -noinline void pciesvc_end(void) +__attribute__((__noinline__)) void pciesvc_end(void) { } diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/Makefile b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/Makefile new file mode 100644 index 000000000000..bc80dc11e20a --- /dev/null +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/Makefile @@ -0,0 +1,25 @@ +# +# usage: make KDIR=/path/to/kernel/build/area DRIVER=driver_name +# + +DRIVER=pciesvc_loader + +$(shell echo '#define PCIESVC_VERSION "'`date`'"' >version.h) + +obj-m := $(DRIVER).o +KDIR := /lib/modules/$(shell uname -r)/build +PWD := $(shell pwd) +UTS := X$(shell grep UTS_RELEASE $(KDIR)/include/generated/utsrelease.h) +REL := $(shell echo $(UTS) | awk '{ print $$3 }' | sed -e 's/"//g') +INCLUDES = -I$(PWD) -I$(PWD)/.. +KCFLAGS = $(INCLUDES) +KOPT = KCFLAGS="$(KCFLAGS)" + +all: + $(MAKE) -C $(KDIR) M=$(PWD) $(KOPT) modules + @mkdir -p $(REL) + @mv $(PWD)/$(patsubst %.o,%.ko,$(obj-m)) $(REL) + +clean: + $(MAKE) -C $(KDIR) M=$(PWD) clean + diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/pciesvc_loader.c b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/pciesvc_loader.c new file mode 100644 index 000000000000..f8fa01e14675 --- /dev/null +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/pciesvc_loader/pciesvc_loader.c @@ -0,0 +1,445 @@ +/* + * Simple Elf loader for pciesvc library code + * + * Authors: Rob Gardner, Joseph Dobosenski + * + */ + +#include "kpcimgr_api.h" +#include +#include +#include +#include +#include "version.h" + +MODULE_LICENSE("GPL"); +MODULE_VERSION("OLdev-1.0"); +MODULE_INFO(build, PCIESVC_VERSION); +MODULE_INFO(intree, "Y"); /* no out-of-tree module taints kernel */ + +int kpcimgr_module_register(struct module *mod, + struct kpcimgr_entry_points_t *ep, int relocate); + +/* loaded elf data, code, symtab, etc */ +static void *elfdata, *bin_image; +static int elf_valid_bytes, bin_valid_bytes, start_offset; +static char *strtbl; +static Elf64_Sym *symtbl, *symtbl_end; + +/* + * Retrieve kstate_t from kpcimgr via device tree + */ +kstate_t *get_kpci_state(void) +{ + static kstate_t *kstate = NULL; + struct device_node *dn; + u32 kstate_idx; + int err; + + if (kstate != NULL) + return kstate; + + dn = of_find_compatible_node(NULL, NULL, "pensando,kpcimgr"); + if (dn == NULL) { + pr_err("pciesvc_loader: no compatible device found in dtree\n"); + return NULL; + } + + err = of_property_read_u32(dn, "kstate-index", &kstate_idx); + if (err) { + pr_err("pciesvc_loader: please upgrade to new kstate-index dtree\n"); + return NULL; + } + + kstate = (kstate_t *) of_iomap(dn, kstate_idx); + if (kstate == NULL) { + pr_err("pciesvc_loader: failed to map kstate\n"); + return NULL; + } + + return kstate; +} + +/* + * Allocate executable memory + */ +void *vmalloc_exec(unsigned long size) +{ + pgprot_t prot = PAGE_KERNEL_EXEC; + + return __vmalloc(size, GFP_KERNEL, prot); +} + +/* + * Simple Elf Loader + */ +int load_elf(void) +{ + Elf64_Ehdr *h = elfdata; + Elf64_Shdr *sh; + size_t length; + char *sh_strtbl; + int i; + + strtbl = NULL; + symtbl = NULL; + + if (h == NULL) + return -ENOENT; + + if (strncmp(h->e_ident, ELFMAG, SELFMAG)) + return -EINVAL; + + if (h->e_machine != EM_AARCH64) + return -ENOTTY; + + /* determine memory needed for executable image */ + sh = elfdata + h->e_shoff; + for (i=0; i < h->e_shnum; i++, sh++) + if (sh->sh_flags & SHF_ALLOC) + length = sh->sh_addr + sh->sh_size; + + /* round up to page align */ + bin_valid_bytes = length; + length = (length + 0xfff) & ~0xfffL; + + /* allocate executable memory */ + if (bin_image) + vfree(bin_image); + bin_image = vmalloc_exec(length); + memset(bin_image, 0, length); + + /* iterate over sections */ + sh = elfdata + h->e_shoff; + sh_strtbl = elfdata + sh[h->e_shstrndx].sh_offset; + for (i=0; i < h->e_shnum; i++, sh++) { + + if (sh->sh_flags & SHF_ALLOC) { + if (sh->sh_type == SHT_NOBITS) + memset(bin_image + sh->sh_addr, 0, sh->sh_size); + else + memcpy(bin_image + sh->sh_addr, elfdata + sh->sh_offset, sh->sh_size); + if (sh->sh_flags & SHF_EXECINSTR) + start_offset = sh->sh_addr; + } else { + if (sh->sh_type == SHT_SYMTAB && + strcmp(sh_strtbl + sh->sh_name, ".symtab") == 0) { + symtbl = elfdata + sh->sh_offset; + symtbl_end = elfdata + sh->sh_offset + sh->sh_size; + } + if (sh->sh_type == SHT_STRTAB && + strcmp(sh_strtbl + sh->sh_name, ".strtab") == 0) + strtbl = elfdata + sh->sh_offset; + } + } + flush_icache_range((unsigned long)bin_image, length); + return 0; +} + +static ssize_t run_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return sprintf(buf, "%lx\n", (long)bin_image); +} + +static ssize_t run_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t count) +{ + void *(*start_fn)(void *), (*version_fn)(char **); + struct kpcimgr_entry_points_t *ep; + struct module mod; + char *version; + int ret; + + if (elfdata == NULL) + return -ENODEV; + + ret = load_elf(); + if (ret) + return ret; + + start_fn = bin_image + start_offset; + ep = start_fn(NULL); + + pr_info("pciesvc_loader: expected mgr ver=%d, lib version=%d.%d\n", + ep->expected_mgr_version, + ep->lib_version_major, ep->lib_version_minor); + + version_fn = ep->entry_point[K_ENTRY_GET_VERSION]; + (void) version_fn(&version); + pr_info("pciesvc_loader: lib returned version string '%s'\n", version); + + mod.core_layout.base = bin_image; + mod.core_layout.size = bin_valid_bytes; + mod.init_layout.base = 0; + mod.init_layout.size = 0; + strcpy_s(mod.name, sizeof(mod.name), "pciesvc.lib"); + + ret = kpcimgr_module_register(&mod, ep, 1); + if (ret) { + pr_err("kpcimgr_module_register returned %d\n", ret); + pr_err("bin_image was at 0x%lx\n", (long)bin_image); + vfree(bin_image); + bin_image = NULL; + } + + return count; +} + + +static ssize_t valid_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + Elf64_Ehdr *h = elfdata; + int valid; + + valid = (h && h->e_machine == EM_AARCH64 && + strncmp(h->e_ident, ELFMAG, SELFMAG) == 0); + + return sprintf(buf, "%d\n", valid); +} + +static ssize_t valid_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t count) +{ + ssize_t rc; + long val; + + rc = kstrtol(buf, 0, &val); + if (rc) + return rc; + elf_valid_bytes = val; + pr_info("%s: valid set to %d\n", __func__, elf_valid_bytes); + + return count; +} + +static ssize_t code_read(struct file *file, struct kobject *kobj, + struct bin_attribute *attr, char *out, + loff_t off, size_t count) +{ + if (elfdata == NULL) + return 0; + + if (off > elf_valid_bytes) + return 0; + if (off + count > elf_valid_bytes) + count = elf_valid_bytes - off; + + memcpy(out, elfdata + off, count); + return count; +} + +static ssize_t code_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) +{ + static int code_size = 64*1024; + + if (elfdata == NULL) { + elfdata = vmalloc(code_size); + if (elfdata == NULL) { + pr_err("module_alloc\n"); + return -ENOMEM; + } + } + + if (off + count > code_size) { + void *new = vmalloc(2*code_size); + if (new == NULL) { + pr_err("module_alloc\n"); + return -ENOMEM; + } + memcpy(new, elfdata, code_size); + vfree(elfdata); + elfdata = new; + code_size = 2*code_size; + } + + memcpy(elfdata + off, buf, count); + elf_valid_bytes = off + count; + return count; +} + +struct kobject *pciesvc_kobj; +static DEVICE_ATTR_RW(valid); +static DEVICE_ATTR_RW(run); +static struct attribute *dev_attrs[] = { + &dev_attr_valid.attr, + &dev_attr_run.attr, + NULL, +}; + +#define CODE_BLOCK_SIZE 256*1024 +static BIN_ATTR_RW(code, CODE_BLOCK_SIZE); +static struct bin_attribute *dev_bin_attrs[] = { + &bin_attr_code, + NULL, +}; + +const struct attribute_group pciesvc_attr_group = { + .attrs = dev_attrs, + .bin_attrs = dev_bin_attrs, +}; + + +static void pciesvc_sysfs_init(void) +{ + pciesvc_kobj = kobject_create_and_add("pciesvc", kernel_kobj); + if (pciesvc_kobj == NULL) { + pr_err("failed to create kernel obj\n"); + return; + } + + if (sysfs_create_group(pciesvc_kobj, &pciesvc_attr_group)) { + pr_err("sysfs_create_group failed\n"); + return; + } +} + +/* + * This is a routine that is called from an optional hook + * in kernel/kallsyms.c/kallsyms_lookup() + */ +char *pciesvc_address_lookup(unsigned long addr, + unsigned long *symbolsize, + unsigned long *offset, + char **modname, char *namebuf) +{ + kstate_t *ks = get_kpci_state(); + unsigned long base, code_sz; + unsigned long candidate = 0; + Elf64_Sym *sym; + int i, index; + + base = (unsigned long) ks->code_base; + code_sz = ks->code_size; + + /* range check */ + if (addr < base || addr >= base + code_sz) + return NULL; + + addr = addr - base; + + if (!symtbl || !strtbl) + return NULL; + + /* Look up symbol in our table */ + /* Could sort this, but we typically would get here via panic */ + for (i = 0, sym = symtbl; sym < symtbl_end; i++, sym++){ + if (ELF64_ST_TYPE(sym->st_info) == STT_FUNC) { + if (sym->st_value > candidate && sym->st_value <= addr){ + candidate = sym->st_value; + index = i; + } + } + } + + if (candidate) { + sym = &symtbl[index]; + sprintf(namebuf, "%s", strtbl + sym->st_name); + if (symbolsize) + *symbolsize = sym->st_size; + if (offset) + *offset = addr - candidate; + *modname = "pciesvc.lib"; + return namebuf; + } + else + return NULL; +} + +/* + * Panic hook. On systems with kdump enabled, this won't get + * called unless you put "crash_kexec_post_notifiers" on the + * boot command line. + */ +static int pciesvc_panic(struct notifier_block *nb, + unsigned long code, void *unused) +{ + unsigned long entries[48], offset, size; + struct stack_trace trace; + char *modname, buffer[256]; + const char *name; + int i, len; + + trace.nr_entries = 0; + trace.max_entries = ARRAY_SIZE(entries); + trace.entries = entries; + trace.skip = 0; + + save_stack_trace(&trace); + pr_emerg("pciesvc stack trace:\n"); + for (i=0; i +#include +#include +#include +#include +#include +#include +#define __USE_GNU +#include +#include +#include +#include +#include +#include +#endif + #include "kpcimgr_api.h" +#include #include "pciesvc.h" #include "portcfg.h" - -#include #include "notify_entry.h" #include "cfgspace.h" + +#ifdef __KERNEL__ +#define MIN(x,y) ((x) < (y) ? x : y) +#define MAX(x,y) ((x) > (y) ? x : y) + +#define PRIi64 "lld" + +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "x" +#define PRIx64 "llx" +#define PRIu64 "llu" + +#define pciesvc_htobe32(x) __cpu_to_be32(x) +#define pciesvc_be32toh(x) __be32_to_cpu(x) + +#define pciesvc_htole32(x) __cpu_to_le32(x) +#define pciesvc_le32toh(x) __le32_to_cpu(x) + +#define pciesvc_htobe16(x) __cpu_to_be16(x) +#define pciesvc_be16toh(x) __be16_to_cpu(x) + +#endif + +#ifndef __KERNEL__ +#define pciesvc_htobe32 htobe32 +#define pciesvc_be32toh be32toh +#define pciesvc_htobe16 htobe16 +#define pciesvc_be16toh be16toh +#define pciesvc_htole32 htole32 +#define pciesvc_le32toh le32toh + + +#define unlikely(X) (X) +typedef __u64 u64; +typedef __u32 u32; +#define __force +#define __iomem +#define __le32 u32 +#define le32_to_cpu +#define cpu_to_le32 +/* borrowed from "include/linux/kern_levels.h" */ +#define KERN_SOH "\001" /* ASCII Start Of Header */ +#define KERN_ERR KERN_SOH "3" /* error conditions */ +#define KERN_INFO KERN_SOH "6" /* informational */ + +/* borrowed from "arch/arm64/include/asm/io.h" */ +#define __stringify_1(x...) #x +#define __stringify(x...) __stringify_1(x) +#define read_sysreg(r) ({ \ + u64 __val; \ + asm volatile("mrs %0, " __stringify(r) : "=r" (__val)); \ + __val; \ +}) +#define dmb(opt) asm volatile("dmb " #opt : : : "memory") +#define dsb(opt) asm volatile("dsb " #opt : : : "memory") +#define mb() dsb(sy) +#define dma_rmb() dmb(oshld) +#define dma_wmb() dmb(oshst) + +/* readl/writel */ +/* IO barriers */ +#define __iormb(v) \ +({ \ + unsigned long tmp; \ + \ + dma_rmb(); \ + \ + /* \ + * Create a dummy control dependency from the IO read to any \ + * later instructions. This ensures that a subsequent call to \ + * udelay() will be ordered due to the ISB in get_cycles(). \ + */ \ + asm volatile("eor %0, %1, %1\n" \ + "cbnz %0, ." \ + : "=r" (tmp) : "r" ((unsigned long)(v)) \ + : "memory"); \ +}) + +#define __raw_writel __raw_writel +static inline void __raw_writel(u32 val, volatile void __iomem *addr) +{ + asm volatile("str %w0, [%1]" : : "rZ" (val), "r" (addr)); +} + +#define __raw_readl __raw_readl +static inline u32 __raw_readl(const volatile void __iomem *addr) +{ + u32 val; + asm volatile("ldr %w0, [%1]" + : "=r" (val) : "r" (addr)); + return val; +} + +#define __iowmb() dma_wmb() +#define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; }) +#define writel_relaxed(v,c) ((void)__raw_writel((__force u32)cpu_to_le32(v),(c))) +#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(__v); __v; }) +#define writel(v,c) ({ __iowmb(); writel_relaxed((v),(c)); }) + +static inline kstate_t *get_kstate(void) +{ + extern kstate_t *kstate; + return kstate; +} + +#endif /* !KERNEL */ + + #define KPR_LINESZ 512 #define kpr_err(fmt, ...) \ do { \ @@ -41,25 +166,6 @@ #define pciesvc_ffs ffs #define pciesvc_ffsll __builtin_ffsl -#define MIN(x,y) ((x) < (y) ? x : y) -#define MAX(x,y) ((x) > (y) ? x : y) - -#define PRIi64 "lld" - -#define PRIx8 "x" -#define PRIx16 "x" -#define PRIx32 "x" -#define PRIx64 "llx" -#define PRIu64 "llu" - -#define pciesvc_htobe32(x) __cpu_to_be32(x) -#define pciesvc_be32toh(x) __be32_to_cpu(x) - -#define pciesvc_htole32(x) __cpu_to_le32(x) -#define pciesvc_le32toh(x) __le32_to_cpu(x) - -#define pciesvc_htobe16(x) __cpu_to_be16(x) -#define pciesvc_be16toh(x) __be16_to_cpu(x) #define CLEAN 0 #define DIRTY 1 diff --git a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/tools/reloc_check b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/tools/reloc_check index 9c74736bb51c..63d85c3beaa9 100755 --- a/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/tools/reloc_check +++ b/platform/pensando/dsc-drivers/src/drivers/linux/pciesvc/tools/reloc_check @@ -38,10 +38,12 @@ fi nm -u $1 | grep -v mcount | awk '{ print $2 }' | { - read pattern - if [ "$pattern" != kpcimgr_module_register ] + if read pattern then - echo Caution: found undesirable symbol $pattern + if [ "$pattern" != kpcimgr_module_register ] + then + echo Caution: found undesirable symbol $pattern + fi fi while read symbol @@ -52,9 +54,15 @@ nm -u $1 | grep -v mcount | awk '{ print $2 }' | echo Caution: found undesirable symbol $symbol fi done - echo checking objects for any of these symbols: $pattern - nm kpci_entry.o kpcinterface.o pciesvc/src/*.o | grep -E $pattern >$tmp + if [ -z $pattern ] + then + echo No undesirable symbols founds + >$tmp + else + echo checking objects for any of these symbols: $pattern + nm kpci_entry.o kpcinterface.o pciesvc/src/*.o | grep -E $pattern >$tmp + fi } if [ -s $tmp ] diff --git a/platform/pensando/elba-asic-psci.dtb b/platform/pensando/elba-asic-psci.dtb deleted file mode 100755 index c2400062d4907717c4d7dcdf0e032a4638a3babc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13944 zcmb_jTZrUX8BSHVt?N4O?5w)$y|!lrA3D3$*O^s>@&+n`>nf~>(x#GBRh*=fNmAWC zvgjbL`k;$1f)DdB_#mSA;3B#{2&;(bi-<4ki!2BtinnL+@_qlgEu8E zf4=kI&ZSP$zdHAyzk1%@k>`0=Ja6--xW5_K{kYEKLRtMD>c6C(=l*sywSv3IzB?TT zy|;hpz3=S3BM-`mZ1P@?YpsZ(HAHjYscoxH>_a z1XWy-W;P!|f&d8M$ts;amIsQvEFc zD6$#E#hwRnmp;P0tm7j;xV+_Sw(uDP)6a`tj9HTJV@zdLLMV}a1@6r_n-`FN%c>58 zSrtnQ)#k!nn|T4+NxQy=3+;PMOu-3*B8xLnj-TxKZkQsAA!+28Yim`K6>01bXEJnc zOxMAqyoqsp%zqoaPO=pa^ys9V*jr7DY9orPWIR0#%GietSc1d&Jxf9jHQpI6+sF6y zv+0vMxbqNoU@`n3f&GF*{~9X)P17b$AZ1)L_u1}6xc-=54X)$PVz6dj=kvEfcj`DR ze9SOaUJiCbiiiyI#apYBjXEoKcC{j=Ep2)~F7a$yR|2S z8Fg;k58AfzcqUWTU~da`ER>UR&%TRlcYAO5F;h>Q*!K_@`gF2i<`FOBt=S_>D zVsq#pMm59*+ldLo$8us!T%Xb(C;7Cc$K2d5ww$iVL!!l!dN7BL9-KG+7$sFOOyfv{ zv~&s0TC${1UUwEt%#Q9AF&AKkX| zVX129s733pto)4@{~1kpilD5MI?1QaynH`+df(FG+Wr>ChOuh!8b4so?%WjLs7`4E z*OzA*-TPF$Wc=9P1|uY`^&`ex=jJ$1qggyXP!M95!nhALGL@)#slnJJhE9Ev7d?h~ zUOVGKVVu_*>AB6pz@##V!S!6}LLj9~V-Kg4o>aE%*>2;Y-_Ffp8HJ;?nbD{Kl#9^=HNd5ioN>3a zcOu46H)W*dKS{RaRS&&RehoVS>am%EdSma>ro`NBYSd15)h_TnkkntBK z!B~6(rBN)-+AUB6T*rK}7q{#Y9GR2y;i#Q+YcIg2p2yPiiwxsq@u5EL@xuY|;{Pnd z7>z_3VTtaNb7Iee`RzVpa2zRJsE@fivaZ@~k6>K@zxgd7>#A8+h0mEzuRCwXBa493 zhuBwizK%QaFHOinVZB)=`K;ySw+ZC|4w`_bo!-J4y7OH}zP*03O%KhV!`&3h z5RVt1F&-36+hyideZ3L&Ye5!mm_3D0+pE&kzdN##S|N>It+jXIdIm_V_qz9k*OKm( zaTV8om{036Pt&;6N)Y!oxEAT)OB=SfcqRrG|Ht6bMx)=;c;-HDF4o$al(`*y9sG{5 zhxjUw@PI<>SK?}NC@j**FQd)P%Zq+fu)WsVVj3In2aho$&Ea77V0^ayYEa7Dj!kT* z`?LL9pN)$o=MP6GPnfIgxEx=2ZjMstHS@b6D26^UP{+c4obfYY9m^3eqX&NTNnMBS z`~pAjn|;u$z&VC3GSbA@F_#U^{+4cFKLDQe)Ghd94X`dOFc6t> z+^vhX*Tt0cA;wK&)Yu_zBF0(lFn&g}rR=b=YaQpYU(Pja(`s{XcefwlnT7REOx`1v zD!kTS?(u0OWnCY!FXJQJyAOhPeA|6k^TiL%vC8Ivr++%Bh&exA96|6{=5>5RRZ0db z9^%)11ht&our3+ByWGXmHt9c^)^SGv!GT?lsjZflET+&TWd=?Z7If_Sr554D2m1!?|&lu1TycX-Xh3)Sabc6s3 z`{KgT%$GR$@{_PmOFyhiSXfd_)J*sW7{Hsv5swU@7|=a<4eP%zTW|hzLS{75e(n%@3!`XGN+lngS@NoDd}e+ zfo(r3|ND=tO35ox#n1aFlSvFiOU%8Fi*!Kg6B+ZRlS(G!BHizf)>^ zH&8#o)x+f$-A?kB^M5-$C%7X35OW`3dkpFlJJsRPQY@eygW zpW!oPJ8#9^j8#@Kr^v&#>QCm*5LUT<(IytrA5p1O2HRZC3pXwJXY?9tOqzJ*1R{;mQm8<&`$Rna2slXGQbgBEo7 zh>hJ#ICIPD05WW^{k8gjJhLy-16-nO4-Zn5E?#g$)92|P&-odVc5sKuPCHi8+|^a$aX9)eN)#n=i2zgGvZTi_D5q(Y@Wk2%Od>njQGZ%F8aX}eEKKM`o?~QP^Vy#CCN7o^WPN=q*a_2Fg&k~PvB1mASQEP4>IgiJ zQPmIl8p!1{k1T&nfw_F_1CF7n4t1|G9S|js4x~7YcmiF)t(Q zPLs3Hr)Bq@>SN|C+P17d%@~0`t=QkGKJ@)r{nLy|=+lbpo$5nf&Z>`@13KxJ9|qyX zorkzDT9Zl@XpJp#W-h4wWSrFo#`JxMcF2lquo!3VBT1i@cg?&c`bg#(j62n*op;OV zb79^;l6iMapLX6Yqt65L`bg&8Eq#b%u$GONndfcZIdjEnc}H7q-szJE)At?5nXq$q z@C=sNr{!I<_Hcgb-_5-1w)1WoeO?899sk_Tyz92}ZW(==wN?CcH}kIB&bwvwF>ATa zJ7-NeE$@hJ{fhUsAZ@PPVcyXUi^cKN)AVV1*X%Fg*X_HScPs6@TSlK|KO_3w&AeM_ z=iM^;H2Wvf=WgcRN;~hC(Z}r9Y~G1RD(aui)VbiP(LR>mc?`P@|b@5$1!D=#e-fZCdd7^ zOYfd79*jTxUuf?h(awg)R5}swvcL&{S$p}u<3zj@&p%GiKmL|F5%00H>u1iHkNYny zuNP{Bus<1-_WV8*CVL|fI@$5TQw^CLl!)ECEZd&vnNE8<=P%pd{#I1|+c|pK_Kd5U zBksxa2;WPEc~%5`+~*CCv5Sw_AUldgjuli!#GVV?_!mFD%Q`OxxyST3n-`m zv%$kx6@C8M^r||_XEktes((@beL=TV&!aNFhR^ZB>s~RzzjwHOSDuZ7e07e=v+~Md zI>vu(;Mo&^%EJfSeia4&1RwUvH}*b0L6nyftmQ}d>_0oOUSk=(-fRQ9r=yAtSOK99lEdDWm~(&#we(2e5MgZ3YJgkCdKF5(oJ1W zs+9U^D%y$~Dx6f4hN{v~s5BTNHr5m9HmtnqEW=wtFRbLV0>ndqO(MaOH|@=bCEi6< zA-pM{;j;xVfxU}Ptq8-(el zNA*T^eR^#cgz#;_ukG;~)&ls`AXBkTc*N(|*NfPTr~Ev6AFuuP3r53KWI=URh54}D z&%sSIq#r-#FQa)H&8I3^bO-V-P35zvf{K29rnCacW@(*-jN~XusmL%fDOJSfC=M+H zDPJa38JW>!R6R$DPR^@4p^IUPoQm<;_h^=;el)}XG#sg{C??n8(*ijwiG$qsC&_rC zq$O|K5@|dRFn|{F(0Vqh08;MuPnCc_j0D~@`5^tx{VN9^j(2@lOb+$uM=I4!sPGXJ zM%DxyBPboghRI>`%;R|<@2rXd!#3{{e#jVp{+J diff --git a/platform/pensando/install_file b/platform/pensando/install_file new file mode 100755 index 000000000000..3543d2f8d8ca --- /dev/null +++ b/platform/pensando/install_file @@ -0,0 +1,37 @@ +#!/bin/sh + +if [ "X-$1" = "X-" -o "X-$2" = "X-" ]; then + echo "usage: $0 part path" + exit 1 +fi +part=$1 +file=$2 +if [ ! -f $file ]; then + echo "$file: not found" >&2 + exit 1 +fi +s=`grep "[\"]$part[\"]" /proc/mtd` +if [ $? -ne 0 ]; then + echo "partition $part not found" >&2 + exit 1 +fi +mtd=/dev/mtd`expr "$s" : 'mtd\([0-9][0-9]*\)'` +sz=`stat -c '%s' $file` +nblks=$((($sz + 65535) / 65536)) +echo -n "# Erasing..." +flash_erase -q $mtd 0 0 +echo " OK" +echo -n "# Writing..." +dd if=$file of=$mtd status=none +echo " OK" +echo -n "# Verifying..." +parent_dir=$(dirname "$(realpath "$file")") +t=$parent_dir/update$$$ +dd if=$mtd bs=65536 count=$nblks status=none | head -c $sz > $t +cmp -s $t $file +if [ $? -ne 0 ]; then + echo " FAILED" +else + echo " OK" +fi +rm -f $t diff --git a/platform/pensando/one-image.mk b/platform/pensando/one-image.mk index 88558cc8d3df..8055c719eda3 100644 --- a/platform/pensando/one-image.mk +++ b/platform/pensando/one-image.mk @@ -7,6 +7,7 @@ $(SONIC_ONE_IMAGE)_IMAGE_TYPE = dsc $(SONIC_ONE_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR) $(SONIC_ONE_IMAGE)_INSTALLS += $(DPU_MODULE) $(SONIC_ONE_IMAGE)_INSTALLS += $(IONIC_MODULE) +$(SONIC_ONE_IMAGE)_INSTALLS += $(PENSANDO_DPU_PLATFORM_MODULE) ifeq ($(INSTALL_DEBUG_TOOLS),y) $(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES) diff --git a/platform/pensando/platform.conf b/platform/pensando/platform.conf index 8ebae0e2a0db..8b4be02c384a 100644 --- a/platform/pensando/platform.conf +++ b/platform/pensando/platform.conf @@ -4,8 +4,10 @@ R="" export LD_LIBRARY_PATH=/platform/lib:/nic/lib:$LD_LIBRARY_PATH -export PATH=/platform/bin:$PATH +export PATH=/platform/bin:/nic/bin:/platform/tools:/nic/tools:$PATH +boot0= +running_cpld_id= root_mnt=$R/mnt bl_conf_path=$root_mnt HOST=/host @@ -21,6 +23,7 @@ DATA_PARTUUID=6ED62003-DD8D-44B8-9538-0A2B7C7E628F ROOT_PARTUUID=C7F48DD2-C265-404B-959D-C64D21D49168 ROOT_PARTSIZE=24G +EMMC_MIN_SIZE=32G exec 0< /dev/tty 1> /dev/tty 2> /dev/tty @@ -42,7 +45,15 @@ fatal() check_existing_parts() { - local nparts i partuuid boot_partsize boot_lastsec data_firstsec + local nparts i partuuid boot_partsize boot_lastsec data_firstsec emmc_min_size_gb emmc_size + + if [ -z "$running_cpld_id" ]; then + if [ "$install_env" = "onie" ]; then + running_cpld_id=`printf "%d" \`chroot /mnt/a/rw/ /nic/bin/cpldapp -r 0x80\`` + else + running_cpld_id=`printf %d \`docker exec $(docker ps -q --filter ancestor="docker-dpu") cpldapp -r 0x80\`` + fi + fi nparts=$(sgdisk -p /dev/mmcblk0 | grep '^[ ]*[1-9]' | wc -l) for i in $(seq $nparts); do @@ -53,6 +64,13 @@ check_existing_parts() esac done + emmc_size=$(fdisk -l | grep "/dev/mmcblk0:" | awk '{print $3}') + emmc_min_size_gb=${EMMC_MIN_SIZE%G} + emmc_size=${emmc_size%.*} + if [ $emmc_size -lt $emmc_min_size_gb ]; then + ROOT_PARTSIZE=12G + fi + if [ $root_pn -ne 0 ]; then boot_partsize=$(sgdisk -i $root_pn /dev/mmcblk0 | awk -F '[( ]' '/Partition size/ {print int($6)}') boot_lastsec=$(sgdisk -i $root_pn /dev/mmcblk0 | awk '/Last sector/ {print $3}') @@ -175,11 +193,42 @@ label main kernel /$image_dir/boot/vmlinuz-6.1.0-22-2-arm64 initrd /$image_dir/boot/initrd.img-6.1.0-22-2-arm64 devicetree /$image_dir/boot/elba-asic-psci.dtb - append softdog.soft_panic=1 FW_NAME=mainfwa root=/dev/mmcblk0p10 rw rootwait rootfstype=ext4 loopfstype=squashfs loop=/$image_dir/fs.squashfs + append softdog.soft_panic=1 FW_NAME=mainfwa root=/dev/mmcblk0p10 rw rootwait rootfstype=ext4 loopfstype=squashfs loop=/$image_dir/fs.squashfs isolcpus=1,2,3,5,6,7,9,10,11,13,14,15 nohz_full=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocbs=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocb_poll irqaffinity=0 } EOF } +create_bootloader_mtfuji_conf() +{ + echo "==> Create bootloader mtfuji config" + +cat <> $bl_conf_path/$BL_CONF +default main + +label main + kernel /$image_dir/boot/vmlinuz-6.1.0-22-2-arm64 + initrd /$image_dir/boot/initrd.img-6.1.0-22-2-arm64 + devicetree /$image_dir/boot/elba-asic-psci-mtfuji.dtb + append softdog.soft_panic=1 FW_NAME=mainfwa root=/dev/mmcblk0p10 rw rootwait rootfstype=ext4 loopfstype=squashfs loop=/$image_dir/fs.squashfs isolcpus=1,2,3,5,6,7,9,10,11,13,14,15 nohz_full=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocbs=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocb_poll irqaffinity=0 +} +EOF +} + +create_bootloader_lipari_conf() +{ + echo "==> Create bootloader lipari config" + +cat <> $bl_conf_path/$BL_CONF +default main + +label main + kernel /$image_dir/boot/vmlinuz-6.1.0-22-2-arm64 + initrd /$image_dir/boot/initrd.img-6.1.0-22-2-arm64 + devicetree /$image_dir/boot/elba-asic-psci-lipari.dtb + append softdog.soft_panic=1 FW_NAME=mainfwa root=/dev/mmcblk0p10 rw rootwait rootfstype=ext4 loopfstype=squashfs loop=/$image_dir/fs.squashfs isolcpus=1,2,3,5,6,7,9,10,11,13,14,15 nohz_full=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocbs=1,2,3,5,6,7,9,10,11,13,14,15 rcu_nocb_poll irqaffinity=0 +} +EOF +} set_boot_command() { local pn @@ -232,11 +281,85 @@ set_sonic_env() { fw_setenv boot_next "run sonic_image_$idx" - cleanup fi } +cpldid_to_boot0_ver() +{ + case "$running_cpld_id" in + 130) boot0=19; ;; + *) boot0=0; ;; + esac +} +install_boot0() +{ + boot0=0 + BOOT0_MAGIC=0x30f29e8b + + if [ "$install_env" = "onie" ]; then + magic=`dd if=/dev/mtd2 bs=16 count=1 | od -H | head -1 | awk '{print $5}'` + cur_ver=`dd if=/dev/mtd2 bs=16 skip=1 count=1 | od -H | head -1 | awk '{print $4}'` + else + magic=`dd if=/dev/mtd2 bs=16 count=1 status=none | od -t x4 | head -1 | awk '{print $5}'` + cur_ver=`dd if=/dev/mtd2 bs=16 skip=1 count=1 status=none | od -t x4 | head -1 | awk '{print $4}'` + fi + + cur_ver=0x$cur_ver + magic=0x$magic + cur_ver=$(printf "%d" "$cur_ver") + + cpldid_to_boot0_ver + + if [ $magic != $BOOT0_MAGIC -o $boot0 -le $cur_ver ]; then + echo "Boot0 installation not needed" + return + fi + + if [ "$install_env" = "onie" ]; then + image_path=$root_mnt + prev_install_file_path=/$image_path/$image_dir/boot/install_file + install_file_path=/$image_path/$image_dir/boot/onie_install_file + sed 's/status=none//g' $prev_install_file_path > $install_file_path + else + image_path=$HOST + install_file_path=/$image_path/$image_dir/boot/install_file + fi + + if [ ! -e /$image_path/$image_dir/boot/boot0.img ]; then + echo "boot0.img not present. Skipping boot0 installation" + return + fi + + echo "==> Installing boot0 image" + chmod +x $install_file_path + $install_file_path boot0 /$image_path/$image_dir/boot/boot0.img +} + +install_uboota() +{ + if [ "$install_env" = "onie" ]; then + image_path=$root_mnt + prev_install_file_path=/$image_path/$image_dir/boot/install_file + install_file_path=/$image_path/$image_dir/boot/onie_install_file + sed 's/status=none//g' $prev_install_file_path > $install_file_path + else + image_path=$HOST + install_file_path=/$image_path/$image_dir/boot/install_file + fi + + chmod +x $install_file_path + touch /$image_path/$image_dir/boot/first_boot + echo "created /$image_path/$image_dir/boot/first_boot" + + if [ ! -e /$image_path/$image_dir/boot/uboota.img ]; then + echo "uboota.img not present. Skipping uboota installation" + return + fi + + echo "==> Installing uboota image" + $install_file_path uboota /$image_path/$image_dir/boot/uboota.img +} ######################################################################################################################## @@ -247,13 +370,30 @@ prepare_boot_menu() { if [ "$install_env" = "onie" ]; then bl_conf_path=$root_mnt else + if [ -z "$running_cpld_id" ]; then + running_cpld_id=`printf %d \`docker exec $(docker ps -q --filter ancestor="docker-dpu") cpldapp -r 0x80\`` + fi bl_conf_path=$HOST fi file=$bl_conf_path/$BL_CONF if [ -f "$file" ]; then rm "$file" fi - create_bootloader_conf + # Mt Fuji has qspi flash of 128MB + if [ $running_cpld_id = "129" ]; then + echo "Smart Switch - lipari" + create_bootloader_lipari_conf + install_uboota + install_boot0 + elif [ $running_cpld_id = "130" ]; then + echo "Smart Switch - mtfuji" + create_bootloader_mtfuji_conf + install_uboota + install_boot0 + else + echo "Smart Nic" + create_bootloader_conf + fi MTD_UBOOTENV=$(cat /proc/mtd | grep -e 'ubootenv' | awk '{print $1}' | tr -dc '0-9') FW_ENV_DEFAULT="/dev/mtd$MTD_UBOOTENV 0x0 0x1000 0x10000" echo $FW_ENV_DEFAULT > /etc/fw_env.config diff --git a/platform/pensando/rules.mk b/platform/pensando/rules.mk index 4af757c3ae7c..4d7dd5cd5fd6 100644 --- a/platform/pensando/rules.mk +++ b/platform/pensando/rules.mk @@ -4,6 +4,7 @@ include $(PLATFORM_PATH)/one-image.mk include $(PLATFORM_PATH)/sdk.mk include $(PLATFORM_PATH)/docker-syncd-pensando.mk include $(PLATFORM_PATH)/dsc-drivers.mk +include $(PLATFORM_PATH)/sonic-platform-modules-dpu.mk SONIC_ALL += $(SONIC_ONE_IMAGE) \ $(DOCKER_FPM) diff --git a/platform/pensando/sonic-platform-modules-dpu.mk b/platform/pensando/sonic-platform-modules-dpu.mk new file mode 100644 index 000000000000..40bd32416160 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu.mk @@ -0,0 +1,15 @@ +# Pensando Platform modules + +PENSANDO_DPU_PLATFORM_MODULE_VERSION = 1.0 + +export PENSANDO_DPU_PLATFORM_MODULE_VERSION + +PENSANDO_DPU_PLATFORM_MODULE = sonic-platform-pensando-dpu_$(PENSANDO_DPU_PLATFORM_MODULE_VERSION)_arm64.deb +$(PENSANDO_DPU_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-dpu +$(PENSANDO_DPU_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) +$(PENSANDO_DPU_PLATFORM_MODULE)_MACHINE = pensando +$(PENSANDO_DPU_PLATFORM_MODULE)_IMAGE_TYPE = dsc +SONIC_DPKG_DEBS += $(PENSANDO_DPU_PLATFORM_MODULE) + + +$(eval $(call add_extra_package,$(PENSANDO_DPU_PLATFORM_MODULE))) \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/debian/changelog b/platform/pensando/sonic-platform-modules-dpu/debian/changelog new file mode 100644 index 000000000000..56017011320b --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/debian/changelog @@ -0,0 +1,3 @@ +sonic-pensando-platform-modules (1.0) unstable; urgency=low + + * Add support for DPU. diff --git a/platform/pensando/sonic-platform-modules-dpu/debian/compat b/platform/pensando/sonic-platform-modules-dpu/debian/compat new file mode 100644 index 000000000000..f11c82a4cb6c --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/debian/compat @@ -0,0 +1 @@ +9 \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/debian/control b/platform/pensando/sonic-platform-modules-dpu/debian/control new file mode 100644 index 000000000000..79ea2b3dfbba --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/debian/control @@ -0,0 +1,10 @@ +Source: sonic-pensando-platform-modules +Section: main +Priority: extra +Maintainer: AMD +Build-Depends: debhelper (>= 8.0.0), bzip2 +Standards-Version: 3.9.3 + +Package: sonic-platform-pensando-dpu +Architecture: arm64 +Description: kernel modules for platform devicesl \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/debian/rules b/platform/pensando/sonic-platform-modules-dpu/debian/rules new file mode 100755 index 000000000000..eb66b3e6f8cb --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/debian/rules @@ -0,0 +1,88 @@ +#!/usr/bin/make -f +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +include /usr/share/dpkg/pkg-info.mk + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +export INSTALL_MOD_DIR:=extra + +PYTHON ?= python3 + +PACKAGE_PRE_NAME := sonic-platform-pensando +MOD_SRC_DIR:= $(shell pwd) +MODULE_DIRS:= dpu +UTILS_DIR := utils +SERVICE_DIR := service +CHECKER_DIR := checker + +%: + dh $@ --with systemd,python2 --buildsystem=pybuild + +clean: + dh_testdir + dh_testroot + dh_clean + +build: + (for mod in $(MODULE_DIRS); do \ + python3 setup.py bdist_wheel; \ + $(PYTHON) setup.py build; \ + done) + +binary: binary-arch binary-indep + +binary-arch: + + +#install: build +#dh_testdir +#dh_testroot +#dh_clean -k +#dh_installdirs + +binary-indep: + dh_testdir + dh_installdirs + + # Custom package commands + (for mod in $(MODULE_DIRS); do \ + python3 setup.py bdist_wheel; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} /usr/local/bin; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} /lib/systemd/system; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} /etc/monit/conf.d; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} /usr/share/sonic/device/arm64-elba-asic-r0/Pensando-elba/; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} /usr/share/sonic/device/arm64-elba-asic-flash128-r0/Pensando-elba/; \ + cp $(MOD_SRC_DIR)/$${mod}/$(UTILS_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin/; \ + cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system/; \ + cp $(MOD_SRC_DIR)/$${mod}/$(CHECKER_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/etc/monit/conf.d/; \ + cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_DIR)/*.network debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/network/; \ + cp $(MOD_SRC_DIR)/dist/sonic_platform-1.0-py3-none-any.whl debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/share/sonic/device/arm64-elba-asic-r0/; \ + cp $(MOD_SRC_DIR)/dist/sonic_platform-1.0-py3-none-any.whl debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/share/sonic/device/arm64-elba-asic-flash128-r0/; \ + $(PYTHON) setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb --prefix=/usr/local; \ + done) + # Resuming debhelper scripts + dh_testroot + dh_install + dh_installchangelogs + dh_installdocs + dh_systemd_enable + dh_installinit + dh_systemd_start + dh_link + dh_fixperms + dh_compress + dh_strip + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +.PHONY: build binary binary-arch binary-indep clean diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/checker/dpu-db-util-checker b/platform/pensando/sonic-platform-modules-dpu/dpu/checker/dpu-db-util-checker new file mode 100644 index 000000000000..5e8d90f73f5e --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/checker/dpu-db-util-checker @@ -0,0 +1,4 @@ +check program dpu-db-util with path "/bin/systemctl is-active dpu-db-util.service" + if status != 0 then restart + start program = "/usr/bin/systemctl start dpu-db-util.service" + stop program = "/usr/bin/systemctl stop dpu-db-util.service" diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-db-util.service b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-db-util.service new file mode 100644 index 000000000000..e59b1f9a5362 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-db-util.service @@ -0,0 +1,12 @@ +[Unit] +Description=Pensando DPU health status provider and chassis state db util service +After=dpu-platform-init.service + +[Service] +ExecStart=/usr/bin/python3 /usr/local/bin/dpu_db_util.py +Restart=always +StandardOutput=syslog+console +StandardError=syslog+console + +[Install] +WantedBy=multi-user.target diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-platform-init.service b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-platform-init.service new file mode 100644 index 000000000000..5226235fc505 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu-platform-init.service @@ -0,0 +1,16 @@ +[Unit] +Description=Pensando DPU platform init service +Requires=dpu.service + +BindsTo=sonic.target +After=sonic.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/python3 /usr/local/bin/dpu_pensando_util.py +RemainAfterExit=yes +StandardOutput=syslog+console +StandardError=syslog+console + +[Install] +WantedBy=sonic.target diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu_provisioning.service b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu_provisioning.service new file mode 100644 index 000000000000..66633a7ba0c9 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/service/dpu_provisioning.service @@ -0,0 +1,16 @@ +[Unit] +Description=dpu config db provisioning +Requires=docker.service +After=docker.service +After=dpu.service +Requires=dpu.service +Before=database.service + +[Service] +User=root +ExecStart=/usr/local/bin/dpu_provisioning.sh +StandardOutput=syslog +StandardError=syslog + +[Install] +WantedBy=multi-user.target diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_db_util.py b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_db_util.py new file mode 100644 index 000000000000..6a3d58447ed4 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_db_util.py @@ -0,0 +1,431 @@ +#!/usr/bin/env python3 +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +############################################################################# + +import sys +import signal +import subprocess +import threading +import time +from datetime import datetime +import json +import docker +import redis +import syslog +from sonic_py_common import daemon_base, logger, syslogger +import multiprocessing +import grpc +from concurrent import futures + +SYSLOG_IDENTIFIER = 'dpu-db-utild' +logger_instance = syslogger.SysLogger(SYSLOG_IDENTIFIER) + +def log_info(msg, also_print_to_console=False): + logger_instance.log_info(msg, also_print_to_console) + +def log_err(msg, also_print_to_console=False): + logger_instance.log_error(msg, also_print_to_console) + +try: + from health_checker.manager import HealthCheckerManager + from sonic_py_common import daemon_base + import sonic_platform + from sonic_platform.chassis import Chassis + from sonic_platform.helper import APIHelper + from pathlib import Path + grpc_files_path = (str(Path(sonic_platform.__file__).parent.absolute())) + if grpc_files_path not in sys.path: + sys.path.append(grpc_files_path) + from sonic_platform import oper_pb2, oper_pb2_grpc +except Exception as e: + log_err(f'failed to load modules due to {e}') + +DPU_HEALTH_INFO_TABLE_NAME = 'DPU_STATE' +REDIS_CHASSIS_SERVER_PORT = 6380 +REDIS_CHASSIS_SERVER_IP = '169.254.200.254' +CHASSIS_STATE_DB = 13 +LOCALHOST = "127.0.0.1" +EVENT_PORT = 11360 +PDS_PORT = 11357 +NOT_AVAILABLE = 'N/A' +ERR_UNKNOWN = 1 +SIGNALS_TO_NAMES_DICT = dict((getattr(signal, n), n) for n in dir(signal) if n.startswith('SIG') and '_' not in n) + +# operd event functions +g_count = 0 +CRITICAL_EVENTS = [ + 2, 4, 6, 7, 11, 12, 15, 16, 17, 18, 19, 20, 4001, 4002 +] +NETWORK_EVENTS = [ + 1001, # "Port link is up" + 1002 # "Port link is down" +] + +# process handler + +def get_slot_id(chassis): + try: + if chassis == None: + chassis = Chassis() + slot = chassis.get_my_slot() + except Exception as e: + log_err("failed to fetch chassis slot id due to {e}") + slot = -1 + slot_id = str(slot) if slot != -1 else 'UNDEFINED' + return slot_id + +exit_code = ERR_UNKNOWN + +class EventHandler(logger.Logger): + + def __init__(self, chassis, db): + super(EventHandler, self).__init__(SYSLOG_IDENTIFIER) + + # operd attributes + self.events = [] + self.events.extend(CRITICAL_EVENTS) + self.events.extend(NETWORK_EVENTS) + self.event_thread = None + self.event_stop = False + + # dpu state db update related attributes + try: + self.apiHelper = APIHelper() + self.dpu_docker_name = self.apiHelper.get_dpu_docker_container_name() + except: + log_err('Failed to get dpu docker name') + self.db = db + self.chassis = chassis + slot = get_slot_id(self.chassis) + self.slot_id = str(slot) if slot != -1 else 'UNDEFINED' + self.table = f'{DPU_HEALTH_INFO_TABLE_NAME}|DPU{self.slot_id}' + self._update_dpu_date_plane_db() + + def _log_emerg(self, msg): + # syslogger.SysLogger doesn't have LOG_EMERG, hence creating one + syslog.openlog(SYSLOG_IDENTIFIER) + syslog.syslog(syslog.LOG_EMERG,msg) + syslog.closelog() + + def _bool_to_healthd_status(self, status): + if status: + return "OK" + else: + return "Not OK" + + def bool_to_link_status(self, status): + if status: + return "up" + else: + return "down" + + def _is_dpu_container_running(self): + try: + client = docker.from_env() + containers = client.containers.list(all=True) + dpu_docker_status = False + for container in containers: + container_name = container.name + container_status = container.status + if container_name == self.dpu_docker_name: + dpu_docker_status = True if container_status == 'running' else False + return dpu_docker_status + except Exception as e: + log_err(f"failed to fetch dpu docker running status due to {e}") + return False + + def _fetch_pdsagent_status(self): + try: + cmd = "ps -ef | grep 'pdsagent\|pds_dp_app'" + output = self.apiHelper.run_docker_cmd(cmd) + name = 'pdsagent' + pdsagent_status = False + if "pdsagent" in output: + pdsagent_status = True + elif "pds_dp_app" in output: + pdsagent_status = True + name = 'pds_dp_app' + else: + pdsagent_status = False + return name, pdsagent_status + except Exception as e: + log_err(f'failed to fetch pdsagent status due to {e}') + return 'pdsagent', False + + def _fetch_pciemgrd_status(self): + try: + cmd = "ps -ef | grep 'pciemgrd'" + output = self.apiHelper.run_docker_cmd(cmd) + pciemgrd_status = False + if "pciemgrd" in output: + pciemgrd_status = True + else: + pciemgrd_status = False + return pciemgrd_status + except Exception as e: + log_err(f'failed to fetch pciemgrd status due to {e}') + return False + + def _update_dpu_date_plane_db(self): + try: + dpu_status = 'down' + pdsagent_name, pdsagent_status = self._fetch_pdsagent_status() + pciemgrd_status = self._fetch_pciemgrd_status() + if pdsagent_status and pciemgrd_status: + dpu_status = 'up' + dpu_docker_status = self._is_dpu_container_running() + reason = f"DPU container named {self.dpu_docker_name} is{'' if dpu_docker_status else ' not'} running," + reason += f" {pdsagent_name} running : {self._bool_to_healthd_status(pdsagent_status)}," + reason += f" pciemgrd running : {self._bool_to_healthd_status(pciemgrd_status)}" + fvs_data_plane_data = [ + ('dpu_data_plane_state', dpu_status), + ('dpu_data_plane_time', datetime.now().strftime("%a %b %d %I:%M:%S %p UTC %Y")), + ('dpu_data_plane_reason', reason) + ] + for name, value in fvs_data_plane_data: + self.db.hset(self.table, name, value) + except Exception as e: + log_err(f'Failed to init dpu date plane entries due to {e}') + + def _fetch_eth_link_status(self): + try: + cmd = "/nic/bin/pdsctl show interface --type uplink | grep -i uplink" + output = self.apiHelper.run_docker_cmd(cmd) + uplinks_info = output.split('\n') + num_uplink = int(uplinks_info[-1].split(':')[-1].replace(' ','')) + eth_link_reason = [] + state = True + for i in range(num_uplink): + uplink_info = uplinks_info[i].split() + name = uplink_info[2] + admin_status = uplink_info[3] + oper_status = uplink_info[4] + eth_state = False + if admin_status == 'UP' and oper_status == 'UP': + eth_state = True + state &= eth_state + eth_link_reason.append(f"{name} is {self.bool_to_link_status(eth_state)}") + return state, "host-ethlink-status: " + ', '.join(eth_link_reason) + except Exception as e: + log_err(f'failed to fetch eth uplink status due to {e}') + return False, "Failed to fetch host eth link status" + + def _update_dpu_control_plane_db(self): + try: + control_plane_status = self.db.hget(self.table, 'dpu_control_plane_state') + control_plane_reason = self.db.hget(self.table, 'dpu_control_plane_reason') + if (control_plane_status == None) or (control_plane_status == 'up'): + control_plane_status = True + else: + control_plane_status = False + all_container_reason = control_plane_reason.replace(', host-ethlink-status:', 'host-ethlink-status:').split('host-ethlink-status:')[0] + eth_link_status, eth_link_reason = self._fetch_eth_link_status() + if control_plane_status: + control_plane_status &= eth_link_status + else: + if ('All containers are up and running' in control_plane_reason): + control_plane_status = eth_link_status + + control_plane_reason = [] + if all_container_reason != '': + control_plane_reason.append(all_container_reason) + control_plane_reason.append(eth_link_reason) + fvs_control_plane_data = [ + ('dpu_control_plane_state', self.bool_to_link_status(control_plane_status)), + ('dpu_control_plane_time', datetime.now().strftime("%a %b %d %I:%M:%S %p UTC %Y")), + ('dpu_control_plane_reason', ', '.join(control_plane_reason)) + ] + for name, value in fvs_control_plane_data: + self.db.hset(self.table, name, value) + except Exception as e: + log_err(f'Failed to populate dpu control plane entries due to {e}') + + def _getGrpcEventMessage(self): + while True: + if self.event_stop: + return + grpcmsg = oper_pb2.OperInfoRequest() + spec = grpcmsg.Request.add() + spec.InfoType = oper_pb2.OPER_INFO_TYPE_EVENT + spec.Action = oper_pb2.OPER_INFO_OP_SUBSCRIBE + for event in self.events: + spec.EventFilter.Types.append(event) + yield grpcmsg + + def _process_event(self, event): + global g_count + + try: + event_type = event.EventInfo.Type + event_description = event.EventInfo.Description + event_message = event.EventInfo.Message + except Exception as e: + log_err(f"Failed to process event due to {e}") + return + + try: + if event_type in CRITICAL_EVENTS: + # log event + g_count += 1 + self._log_emerg(f"Event # {g_count} Time -> {time.asctime()}") + self._log_emerg(f"Received event {event}") + + # update dpu state db for data plane + if self.db == None: + return + dpu_data_plane_status = 'down' + dpu_data_plane_reason = event_description + fvs_data_plane_data = [ + ('dpu_data_plane_state', dpu_data_plane_status), + ('dpu_data_plane_time', datetime.now().strftime("%a %b %d %I:%M:%S %p UTC %Y")), + ('dpu_data_plane_reason', dpu_data_plane_reason) + ] + for name, value in fvs_data_plane_data: + self.db.hset(self.table, name, value) + except Exception as e: + log_err(f"Failed to update dpu state db data plane fields due to {e}") + + try: + if event_type in NETWORK_EVENTS: + # log event + g_count += 1 + log_info(f"Event # {g_count} Time -> {time.asctime()}") + log_info(f"Received event {event}") + + # update dpu state db for control plane + if self.db == None: + return + self._update_dpu_control_plane_db() + except Exception as e: + log_err(f"Failed to update dpu state db control plane fields due to {e}") + + def _event_listener(self): + channel_addr = "{}:{}".format(LOCALHOST,str(EVENT_PORT)) + channel = grpc.insecure_channel(channel_addr) + stub = oper_pb2_grpc.OperSvcStub(channel) + resp = stub.OperInfoSubscribe(self._getGrpcEventMessage()) + time.sleep(1) + for event in resp: + self._process_event(event) + + def start(self): + # spawn operd listener thread + self.event_stop = False + if (self.event_thread == None) or (not self.event_thread.is_alive()): + self.event_thread = threading.Thread(target=self._event_listener) + self.event_thread.daemon = True + self.event_thread.start() + + def stop(self): + self.log_warning("Stopping event listener thread") + self.event_stop = True + if self.event_thread is not None: + self.event_thread.join() + self.event_thread = None + +# +# Daemon ======================================================================= +# +class DpuDBUtilDaemon(daemon_base.DaemonBase): + # Interval to update CHASSIS_STATE_DB + INTERVAL = 60 + + def __init__(self): + """ + Initializer of DpuDBUtilDaemon + """ + super(DpuDBUtilDaemon, self).__init__(SYSLOG_IDENTIFIER) + + # Set minimum logging level to INFO + self.set_min_log_priority_info() + + self.stop_event = threading.Event() + + self.wait_time = self.INTERVAL + + self.chassis = Chassis() + self.db = None + try: + self.db = redis.Redis( + host=REDIS_CHASSIS_SERVER_IP, + port=REDIS_CHASSIS_SERVER_PORT, + decode_responses=True, + db=CHASSIS_STATE_DB) + # checking if server is accessible + self.db.ping() + except Exception as e: + self.db = None + log_err(f'Failed to connect to db due to {e}') + pass + if self.db == None: + return + self.event_handler = EventHandler(self.chassis, self.db) + self.event_handler.start() + + def deinit(self): + """ + Deinitializer of DpuDBUtilDaemon + """ + if self.db == None: + return + self.event_handler.stop() + + # Override signal handler from DaemonBase + def signal_handler(self, sig, frame): + """ + Signal handler + :param sig: Signal number + :param frame: not used + :return: + """ + FATAL_SIGNALS = [signal.SIGINT, signal.SIGTERM] + NONFATAL_SIGNALS = [signal.SIGHUP] + + global exit_code + + if sig in FATAL_SIGNALS: + log_info("Caught signal '{}' - exiting...".format(SIGNALS_TO_NAMES_DICT[sig])) + exit_code = 128 + sig # Make sure we exit with a non-zero code so that supervisor will try to restart us + if self.db != None: + self.event_handler.stop() + self.stop_event.set() + elif sig in NONFATAL_SIGNALS: + log_info("Caught signal '{}' - ignoring...".format(SIGNALS_TO_NAMES_DICT[sig])) + else: + log_err("Caught unhandled signal '{}' - ignoring...".format(SIGNALS_TO_NAMES_DICT[sig])) + + # Main daemon logic + def run(self): + """ + Run main logical of this daemon + :return: + """ + if self.db == None: + return False + if self.stop_event.wait(self.wait_time): + # We received a fatal signal + return False + return True + + +# +# Main ========================================================================= +# +def main(): + dpudbd = DpuDBUtilDaemon() + + dpudbd.log_info("Starting up...") + + while dpudbd.run(): + pass + + dpudbd.log_info("Shutting down DpuDBUtilDaemon with exit code {}...".format(exit_code)) + + dpudbd.deinit() + return exit_code + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_pensando_util.py b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_pensando_util.py new file mode 100644 index 000000000000..b2e222a8dfdc --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_pensando_util.py @@ -0,0 +1,145 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved + +import os +import subprocess +import sys +import logging +import time +import re +import json +from sonic_platform.helper import APIHelper +from sonic_py_common import syslogger + +QSFP_STAT_CTRL_CPLD_ADDR = "0x2" +apiHelper = APIHelper() + +SYSLOG_IDENTIFIER = 'dpu_pensando_util' +logger_instance = syslogger.SysLogger(SYSLOG_IDENTIFIER) + +def log_info(msg, also_print_to_console=False): + logger_instance.log_info(msg, also_print_to_console) + +def log_err(msg, also_print_to_console=True): + logger_instance.log_error(msg, also_print_to_console) + +def run_cmd(cmd): + status, output = subprocess.getstatusoutput(cmd) + if status != 0: + try: + log_err(cmd + " failed with err " + str(status) + "\n") + except: + log_err("platform_init: Failed file ops while logging") + else: + log_info(f"command executed : {cmd}") + log_info(output) + return output + +def fetch_dpu_files(): + docker_id = apiHelper.get_dpu_docker_imageID() + cmd = "sudo docker cp {}:/tmp/fru.json /home/admin".format(docker_id) + run_cmd(cmd) + cmd = "sudo docker cp {}:/nic/bin/cpldapp /home/admin".format(docker_id) + run_cmd(cmd) + cmd = "sudo docker cp {}:/nic/lib/libpal.so /home/admin".format(docker_id) + run_cmd(cmd) + cmd = "sudo docker cp {}:/nic/lib/liblogger.so /home/admin".format(docker_id) + run_cmd(cmd) + cmd = "sudo docker cp {}:/nic/etc/VERSION.json /home/admin".format(docker_id) + run_cmd(cmd) + cmd = "sudo docker cp {}:/usr/bin/mmc /usr/local/bin".format(docker_id) + run_cmd(cmd) + +def set_onie_version(): + version = '' + try: + cmd = 'cat /host/machine.conf | grep -i onie_version' + output = run_cmd(cmd) + version = output.split('=')[1] + except: + pass + if version == '': + try: + cmd = "fw_printenv onie_version" + output = run_cmd(cmd) + version = output.split('=')[1] + except: + version = "Not Available" + pass + try: + fru_file = "/home/admin/fru.json" + data = json.load(open(fru_file)) + data["onie_version"] = version + with open(fru_file, "w") as json_file: + json.dump(data, json_file, indent=4) + except: + pass + +def cp_to_shared_mem(): + api_helper_platform = apiHelper.get_platform() + platform = api_helper_platform if api_helper_platform != None else "arm64-elba-asic-r0" + cmd = "sudo cp /home/admin/fru.json /usr/share/sonic/device/{}/fru.json".format(platform) + run_cmd(cmd) + cmd = "sudo cp /home/admin/cpldapp /usr/share/sonic/device/{}/cpldapp".format(platform) + run_cmd(cmd) + cmd = "sudo cp /home/admin/libpal.so /usr/share/sonic/device/{}/libpal.so".format(platform) + run_cmd(cmd) + cmd = "sudo cp /home/admin/liblogger.so /usr/share/sonic/device/{}/liblogger.so".format(platform) + run_cmd(cmd) + cmd = "sudo cp /home/admin/VERSION.json /usr/share/sonic/device/{}/VERSION.json".format(platform) + run_cmd(cmd) + +def set_cpldapp(): + cmd = "sudo cp /home/admin/cpldapp /usr/local/bin" + run_cmd(cmd) + cmd = "sudo cp /home/admin/libpal.so /lib/libpal.so" + run_cmd(cmd) + cmd = "sudo cp /home/admin/liblogger.so /lib/liblogger.so" + run_cmd(cmd) + +def set_ubootenv_config(): + cmd = "cat /proc/mtd | grep -e 'ubootenv' | awk '{print $1}' | tr -dc '0-9'" + mtd_ubootenv = run_cmd(cmd) + fw_env_config = "/dev/mtd{} 0x0 0x1000 0x10000".format(mtd_ubootenv) + with open("/etc/fw_env.config","w") as f: + f.write(fw_env_config) + +def configure_iptable_rules(): + try: + iptable_cfg_cmd = "sudo iptables-legacy -D tcp_inbound -p tcp --dport 11357:11360 -j DROP" + run_cmd(iptable_cfg_cmd) + except: + pass + +def pcie_tx_setup(): + dpu_slot_id = int(run_cmd("cpldapp -r 0xA").strip(), 16) + if dpu_slot_id == 6 or dpu_slot_id == 7: + run_cmd("docker exec polaris /nic/tools/run-aacs-server.sh -p 9001 export SERDES_DUT_IP=localhost:9001") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl serdes -addr 1:39 -pre 0 -post 0 -atten 10") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl serdes -addr 1:3b -pre 0 -post 0 -atten 10") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl serdes -addr 1:3d -pre 0 -post 0 -atten 10") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl serdes -addr 1:3f -pre 0 -post 0 -atten 10") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl dev -addr 1:39 -v 1") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl dev -addr 1:3b -v 1") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl dev -addr 1:3d -v 1") + run_cmd("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl dev -addr 1:3f -v 1") + +def main(): + #All init routines to be written below + cmd = 'PATH=$PATH:/usr/sbin/' + run_cmd(cmd) + try: + set_ubootenv_config() + except: + pass + time.sleep(10) + configure_iptable_rules() + fetch_dpu_files() + time.sleep(5) + set_onie_version() + cp_to_shared_mem() + set_cpldapp() + pcie_tx_setup() + +if __name__ == "__main__": + main() + diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_provisioning.sh b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_provisioning.sh new file mode 100755 index 000000000000..bb77fd15093f --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/dpu_provisioning.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +device="/usr/share/sonic/device" +platform=$(grep 'onie_platform=' /host/machine.conf | cut -d '=' -f 2) +pipeline=`cat /usr/share/sonic/device/$platform/default_pipeline` +docker_name=$pipeline +if [ "$pipeline" == "rudra" ]; then + docker_name="dpu" +fi +hex_val=$(docker exec -i $docker_name cpldapp -r 0xA | tr -d '\r') +val=$((hex_val)) + +echo "dpu provisioning for dpu $val" + +if [ -f /boot/first_boot ]; then + if [ "$platform" == "arm64-elba-asic-flash128-r0" ]; then + echo "python3 -m pip install $device/$platform/sonic_platform-1.0-py3-none-any.whl" + python3 -m pip install $device/$platform/sonic_platform-1.0-py3-none-any.whl + echo "cp /usr/share/sonic/device/$platform/config_db.json /etc/sonic/config_db.json" + cp /usr/share/sonic/device/$platform/config_db.json /etc/sonic/config_db.json + + jq_command=$(cat < /etc/sonic/config_db.json.tmp && mv /etc/sonic/config_db.json.tmp /etc/sonic/config_db.json +EOF + ) + + echo "$jq_command" + eval "$jq_command" + + # Update platform_components.json dynamically + platform_components="/usr/share/sonic/device/$platform/platform_components.json" + if [ -f "$platform_components" ]; then + jq --arg val "$val" ' + .chassis |= with_entries( + .value.component |= with_entries( + if .key | test("^DPU.*-0$") then + .key = (.key | gsub("-0$"; "-\($val)")) + else + . + end + ) + )' "$platform_components" > "${platform_components}.tmp" && mv "${platform_components}.tmp" "$platform_components" + echo "Updated platform_components.json with value: $val" + else + echo "platform_components.json not found, skipping update." + fi + else + echo "cp /usr/share/sonic/device/$platform/config_db_$pipeline.json /etc/sonic/config_db.json" + cp /usr/share/sonic/device/$platform/config_db_$pipeline.json /etc/sonic/config_db.json + fi + + echo "cp /etc/sonic/config_db.json /etc/sonic/init_cfg.json" + cp /etc/sonic/config_db.json /etc/sonic/init_cfg.json + echo "File copied successfully." + rm /boot/first_boot +else + echo "/boot/first_boot not found. No action taken." +fi + +mkdir -p /host/images +chmod +x /boot/install_file + +sleep 5 +INTERFACE="eth0-midplane" +if ip link show "$INTERFACE" &> /dev/null; then + echo "dhclient $INTERFACE" + dhclient $INTERFACE +fi diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/utils/fetch_dpu_status b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/fetch_dpu_status new file mode 100755 index 000000000000..c915ee0011e3 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/fetch_dpu_status @@ -0,0 +1,316 @@ +#!/usr/bin/env python3 +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# This helps to boot to goldfw/mainfwb from sonic +# +############################################################################# + +import sys +import subprocess +from datetime import datetime +import json +import syslog +import docker +import redis +from sonic_py_common import syslogger + +SYSLOG_IDENTIFIER = 'platform-healthd' +logger_instance = syslogger.SysLogger(SYSLOG_IDENTIFIER) + +def log_info(msg, also_print_to_console=False): + logger_instance.log_info(msg, also_print_to_console) + +def log_err(msg, also_print_to_console=False): + logger_instance.log_error(msg, also_print_to_console) + +try: + from swsscommon import swsscommon + from health_checker.manager import HealthCheckerManager + from sonic_py_common import daemon_base + from sonic_platform.chassis import Chassis + from sonic_platform.helper import APIHelper +except Exception as e: + log_err(f'failed to load modules due to {e}') + +DPU_HEALTH_INFO_TABLE_NAME = 'DPU_STATE' +REDIS_CHASSIS_SERVER_PORT = 6380 +REDIS_CHASSIS_SERVER_IP = '169.254.200.254' +CHASSIS_STATE_DB = 13 +STATE_DB = 6 +REDIS_LOCALHOST_SERVER_PORT = 6379 +REDIS_LOCALHOST_SERVER_IP = '127.0.0.1' +NOT_AVAILABLE = 'N/A' + +try: + apiHelper = APIHelper() + chassis = Chassis() +except Exception as e: + log_err(f'failed to fetch dpu docker name due to {e}') + +def get_slot_id(chassis): + try: + return chassis.get_my_slot() + except: + return -1 + +def bool_to_healthd_status(status): + if status: + return "OK" + else: + return "Not OK" + +def bool_to_link_status(status): + if status: + return "up" + else: + return "down" + +class DPUHealthUpdater(): + + def __init__(self, chassis): + self.db = None + self.chassis = chassis + slot = get_slot_id(self.chassis) + self.slot_id = str(slot) if slot != -1 else 'UNDEFINED' + self.pdsagent_status = None + self.pciemgrd_status = None + self.platform_health_stats = None + self.table = f'{DPU_HEALTH_INFO_TABLE_NAME}|DPU{self.slot_id}' + try: + self.db = redis.Redis( + host=REDIS_CHASSIS_SERVER_IP, + port=REDIS_CHASSIS_SERVER_PORT, + decode_responses=True, + db=CHASSIS_STATE_DB) + # checking if server is accessible + try: + self.db.ping() + except Exception as e: + self.db = None + log_err(f'Failed to connect to db due to {e}') + if self.db == None: + self.db = redis.Redis( + host=REDIS_LOCALHOST_SERVER_IP, + port=REDIS_LOCALHOST_SERVER_PORT, + decode_responses=True, + db=STATE_DB) + except Exception as e: + self.db = None + log_err(f'Failed to connect to db due to {e}') + pass + + + def delete_dpu_health_table_entries(self): + try: + if self.db: + all_keys = self.db.hkeys(self.table) + keys_to_delete = [key for key in all_keys if 'data_plane' not in key] + for key in keys_to_delete: + self.db.hdel(self.table, key) + except Exception as e: + log_err(f'failed to delete dpu health table entries due to {e}') + + def _are_containers_running(self): + try: + client = docker.from_env() + containers = client.containers.list(all=True) + all_container_status = True + container_not_running = [] + container_restarting = [] + reason = "" + for container in containers: + container_name = container.name + container_status = container.status + if container_status == 'restarting': + all_container_status &= False + container_restarting.append(container_name) + elif container_status == 'exited': + all_container_status &= False + container_not_running.append(container_name) + if container_not_running: + reason += "Container not running : " + ', '.join(container_not_running) + if container_restarting: + reason += "Container restarting : " + ', '.join(container_restarting) + if reason == "": + reason = "All containers are up and running" + return all_container_status, reason + except Exception as e: + log_err(f"failed to fetch dpu docker running status due to {e}") + return False, f"failed to fetch dpu docker running status due to {e}" + + def _fetch_monitor_list(self): + try: + manager = HealthCheckerManager() + manager.config.load_config() + manager.config.user_defined_checkers.clear() + stats = manager.check(self.chassis) + return stats + except: + log_err('failed to fetch sonic host health check status') + return None + + def _fetch_pdsagent_status(self): + try: + cmd = "ps -ef | grep 'pdsagent\|pds_dp_app'" + output = apiHelper.run_docker_cmd(cmd) + name = 'pdsagent' + if "pdsagent" in output: + self.pdsagent_status = True + print("dpu-pdsagent:OK") + elif "pds_dp_app" in output: + self.pdsagent_status = True + name = 'pds_dp_app' + print("dpu-pds_dp_app:OK") + else: + self.pdsagent_status = False + print("dpu-pdsagent:Not OK") + + return name + except Exception as e: + log_err(f'failed to fetch pdsagent status due to {e}') + print("dpu-pdsagent:Not OK") + return 'pdsagent' + + def _fetch_pciemgrd_status(self): + try: + cmd = "ps -ef | grep 'pciemgrd'" + output = apiHelper.run_docker_cmd(cmd) + if "pciemgrd" in output: + self.pciemgrd_status = True + print("dpu-pciemgrd:OK") + else: + self.pciemgrd_status = False + print("dpu-pciemgrd:Not OK") + except Exception as e: + log_err(f'failed to fetch pciemgrd status due to {e}') + print("dpu-pciemgrd:Not OK") + + def _fetch_eth_link_status(self): + stats = [] + try: + cmd = "/nic/bin/pdsctl show interface --type uplink | grep -i uplink" + output = apiHelper.run_docker_cmd(cmd) + uplinks_info = output.split('\n') + num_uplink = int(uplinks_info[-1].split(':')[-1].replace(' ','')) + for i in range(num_uplink): + uplink_info = uplinks_info[i].split() + name = uplink_info[2] + admin_status = uplink_info[3] + oper_status = uplink_info[4] + state = False + if admin_status == 'UP' and oper_status == 'UP': + print(f"dpu-eth_{name}_status:OK") + state = True + else: + print(f"dpu-eth_{name}_status:Not OK") + uplink_stat = {} + uplink_stat['name'] = name + uplink_stat['state'] = state + stats.append(uplink_stat) + return stats + except Exception as e: + print(f"dpu-eth_uplinks_status:Not OK") + log_err(f'failed to fetch eth uplink status due to {e}') + uplink_stat = {} + uplink_stat['name'] = 'host_eth_link' + uplink_stat['state'] = False + return [uplink_stat] + + def _fetch_pcie_link_status(self): + host_mgmt_status = False + int_mgmt_status = False + + if self.pdsagent_status != True: + print('dpu-pcie_link:DOWN') + + reason = '' + try: + cmd = "/nic/bin/pdsctl show lif | grep -i adminstate" + output = apiHelper.run_docker_cmd(cmd) + fields = output.split() + admin_state_index = fields.index('AdminState') - 1 + oper_state_index = fields.index('OperState') - 1 + cmd = "/nic/bin/pdsctl show lif | grep INTERNAL-MGMT" + output = apiHelper.run_docker_cmd(cmd) + int_mgmt_data = output.split() + admin_status = int_mgmt_data[admin_state_index] + oper_status = int_mgmt_data[oper_state_index] + if admin_status == 'UP' and oper_status == 'UP': + int_mgmt_status = True + else: + int_mgmt_status = False + + cmd = "/nic/bin/pdsctl show lif | grep HOST-MGMT" + output = apiHelper.run_docker_cmd(cmd) + host_mgmt_data = output.split() + admin_status = host_mgmt_data[admin_state_index] + oper_status = host_mgmt_data[oper_state_index] + if admin_status == 'UP' and oper_status == 'UP': + host_mgmt_status = True + else: + host_mgmt_status = False + if host_mgmt_status and int_mgmt_status: + print('dpu-pcie_link:OK') + else: + print('dpu-pcie_link:Not OK') + except: + print('dpu-pcie_link:Not OK') + + def _refresh_dpu_health_status(self): + try: + pdsagent_name = self._fetch_pdsagent_status() + self._fetch_pciemgrd_status() + eth_link_stats = self._fetch_eth_link_status() + self._fetch_pcie_link_status() + + fvs_data = [ + ('id', self.slot_id) + ] + + all_container_status, reason = self._are_containers_running() + dpu_control_plane_state = all_container_status + dpu_control_plane_reason = [reason] + try: + eth_link_reason = [] + for idx, eth_link_stat in enumerate(eth_link_stats): + name = eth_link_stat.get('name', NOT_AVAILABLE) + state = eth_link_stat.get('state', False) + dpu_control_plane_state &= state + eth_link_reason.append(f"{name} is {bool_to_link_status(state)}") + dpu_control_plane_reason.append("host-ethlink-status: " + ', '.join(eth_link_reason)) + dpu_control_plane_reason = ', '.join(dpu_control_plane_reason) + except Exception as e: + log_err(f'failed to generate fvs data for host eth link due to {e}') + + fvs_control_plane_data = [ + ('dpu_control_plane_state', bool_to_link_status(dpu_control_plane_state)), + ('dpu_control_plane_time', datetime.now().strftime("%a %b %d %I:%M:%S %p UTC %Y")), + ('dpu_control_plane_reason', dpu_control_plane_reason) + ] + fvs_data.extend(fvs_control_plane_data) + + self.delete_dpu_health_table_entries() + for name, value in fvs_data: + self.db.hset(self.table, name, value) + + except Exception as e: + log_err(f'Failed to refresh platform health status due to {e}, deleting db table') + self.delete_dpu_health_table_entries() + + def run(self): + self.platform_health_stats = self._fetch_monitor_list() + self._refresh_dpu_health_status() + +def fetch_dpu_details(): + global chassis + print(f"DPU Category") + try: + dpu_health_updater = DPUHealthUpdater(chassis) + dpu_health_updater.run() + except Exception as e: + log_err(f'failed to fetch dpu details due to {e}')\ + +if __name__ == '__main__': + fetch_dpu_details() diff --git a/platform/pensando/sonic-platform-modules-dpu/dpu/utils/pdsctl b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/pdsctl new file mode 100755 index 000000000000..1a19d67d2f38 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/dpu/utils/pdsctl @@ -0,0 +1,24 @@ +#!/bin/bash +# {C} Copyright 2023 AMD Systems Inc. All rights reserved + +DPU_DOCKER_INFO_DIR=/host/dpu-docker-info + +# Function to display usage information +function usage() { + echo "Usage: $0 " +} + +# Check if the first argument is empty or if it's help option +if [ -z "$1" ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then + usage + exit 1 +fi + +# Function to execute command in Docker container +function ExecPdsCmd() { + dpu_docker_name=$(<"$DPU_DOCKER_INFO_DIR/name") + docker exec "$dpu_docker_name" /nic/bin/pdsctl "$@" +} + +# Call the function to execute the command in Docker container +ExecPdsCmd "$@" \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/setup.py b/platform/pensando/sonic-platform-modules-dpu/setup.py new file mode 100755 index 000000000000..9ab3f2b830fb --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/setup.py @@ -0,0 +1,79 @@ +from setuptools import setup, find_packages +from setuptools.command.build_py import build_py as _build_py +import distutils.command +import os +import sys +import glob + +class GrpcTool(distutils.cmd.Command): + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + import grpc_tools.protoc + + proto_files = glob.glob('sonic_platform/proto/**/*.proto', recursive=True) # Find all .proto files + + for proto_file in proto_files: + grpc_tools.protoc.main([ + 'grpc_tools.protoc', + '-Isonic_platform/proto', + '--python_out=sonic_platform', + '--grpc_python_out=sonic_platform', + proto_file + ]) + +class BuildPyCommand(_build_py, object): + + def initialize_options(self): + # execute GrpcTool only if the proto dir is present. + if os.path.exists('sonic_platform/proto'): + self.run_command('GrpcTool') + + proto_py_files = glob.glob('sonic_platform/**/*_pb2*.py', recursive=True) + for py_file in proto_py_files: + if not os.path.exists(py_file): + print('Required file not present: {0}'.format(py_file)) + sys.exit(1) + + super(BuildPyCommand, self).initialize_options() + +setup( + name='sonic-platform', + version='1.0', + description='SONiC platform API implementation on Pensando DPU Platform', + license='Apache 2.0', + author='SONiC Team', + author_email='linuxnetdev@microsoft.com', + url='https://github.com/Azure/sonic-buildimage', + maintainer='AMD', + maintainer_email='shantanu.shrivastava@amd.com', + packages=[ + 'sonic_platform' + ], + package_data={'': ['*.json', '*.sh', '*.service', 'meta/*']}, + cmdclass={ + 'build_py': BuildPyCommand, + 'GrpcTool': GrpcTool + }, + setup_requires=[ + 'grpcio-tools', + 'pytest-runner' + ], + classifiers=[ + 'Development Status :: 3 - Alpha', + 'Environment :: Plugins', + 'Intended Audience :: Developers', + 'Intended Audience :: Information Technology', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: Apache Software License', + 'Natural Language :: English', + 'Operating System :: POSIX :: Linux', + 'Programming Language :: Python :: 3.7', + 'Topic :: Utilities', + ], + keywords='sonic SONiC platform PLATFORM', +) diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/__init__.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/__init__.py new file mode 100644 index 000000000000..399a2d34797a --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/__init__.py @@ -0,0 +1,2 @@ +__all__ = ["platform", "chassis", "fan", "fan_drawer", "sensor", "psu", "thermal", "watchdog"] +from sonic_platform import * diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/chassis.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/chassis.py new file mode 100644 index 000000000000..547600610309 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/chassis.py @@ -0,0 +1,413 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Chassis information which are available in the platform +# +############################################################################# + +try: + import os + import threading + import time + import sys + import subprocess + from sonic_platform_base.chassis_base import ChassisBase + from .helper import APIHelper + import syslog + import inspect + from sonic_py_common import syslogger +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +NUM_THERMAL = 2 +NUM_VOLTAGE_SENSORS = 3 +NUM_CURRENT_SENSORS = 3 +HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" +REBOOT_CAUSE_FILE = "reboot-cause.txt" +HOST_CHK_CMD = "docker > /dev/null 2>&1" +REBOOT_CAUSE_SOFTWARE = "Software causes" +REBOOT_CAUSE_EXTERNAL = "External causes" +RESET_CAUSE_PATH = "/sys/firmware/pensando/rstcause/this_cause" + +#cpld masks for system led +SYSTEM_LED_GREEN = 0x7 +SYSTEM_LED_YELLOW = 0x38 +SYSTEM_LED_REG = 0x15 + +SYSLOG_IDENTIFIER = "sonic_platform.chassis" +logger_instance = syslogger.SysLogger(SYSLOG_IDENTIFIER) + +def log_info(msg, also_print_to_console=False): + logger_instance.log_info(msg, also_print_to_console) + +REBOOT_CAUSE_MAP = { + 25 : "ASIC warm reset", + 24 : "eSecure enabled", + 23 : "AC power cycle/CPLD reload", + 20 : "Host power cycle", + 16 : "Software power cycle", + 19 : "Therm trip", + 18 : "VRD fault", + 12 : "Runtime watchdog reset", + 8 : "Pcie reset", + 2 : "Pcie reset", + 3 : "NCSID power cycle", + 0 : "Reboot", + 1 : "Kernel Panic", + 15 : "Hardware watchdog reset", +} +REBOOT_CAUSE_NON_HARDWARE_LIST = [16, 20, 0, 1, 8, 2, 24, 25, 12] + +class Chassis(ChassisBase): + """Platform-specific Chassis class""" + __shared_state = dict() + _thermals_initialized = False + _voltage_sensor_initialized = False + _current_sensor_initialized = False + + def __init__(self): + self.__dict__ = self.__shared_state + self._api_helper = APIHelper() + ChassisBase.__init__(self) + + if not self._api_helper.is_host(): + self._api_helper.setup_cpldapp() + + log_info("System chassis is ready") + + ############################################## + # System LED methods + ############################################## + + def initizalize_system_led(self): + '''Handled by sysmond in dpu container''' + return True + + def get_status_led(self): + cmd = "cpldapp -r {}".format(str(SYSTEM_LED_REG)) + try: + output = self._api_helper.runCMD(cmd) + reg_val = int(output, 16) + if (reg_val & SYSTEM_LED_GREEN): + return self.STATUS_LED_COLOR_GREEN + elif (reg_val & SYSTEM_LED_YELLOW): + return self.STATUS_LED_COLOR_AMBER + else: + return self.STATUS_LED_COLOR_OFF + except: + return self.STATUS_LED_COLOR_OFF + + def set_status_led(self, color): + '''handled by sysmond in dpu container''' + return False + + ############################################## + # THERMAL methods + ############################################## + + def get_num_thermals(self): + if not self._thermals_initialized: + self.__initialize_thermals() + return len(self._thermal_list) + + def get_all_thermals(self): + if not self._thermals_initialized: + self.__initialize_thermals() + return self._thermal_list + + def get_thermal(self, index): + """ + Retrieves thermal unit represented by (0-based) index + Args: + index: An integer, the index (0-based) of the thermal to + retrieve + Returns: + An object dervied from ThermalBase representing the specified thermal + """ + thermal = None + + try: + if not self._thermals_initialized: + self.__initialize_thermals() + thermal = self._thermal_list[index] + except IndexError: + sys.stderr.write("THERMAL index {} out of range (0-{})\n".format( + index, len(self._thermal_list)-1)) + return thermal + + def __initialize_thermals(self): + from sonic_platform.thermal import Thermal + global NUM_THERMAL + board_id = self._api_helper.get_board_id() + if board_id == 130: + NUM_THERMAL = 5 + if Thermal._thermals_available(): + for index in range(0, NUM_THERMAL): + thermal = Thermal(index) + self._thermal_list.append(thermal) + self._thermals_initialized = True + log_info("System thermal sensors are initialized") + + ############################################## + # Voltage Sensor Methods + ############################################## + + def get_num_voltage_sensors(self): + if not self._voltage_sensor_initialized: + self.__initialize_voltage_sensors() + return len(self._voltage_sensor_list) + + def get_all_voltage_sensors(self): + if not self._voltage_sensor_initialized: + self.__initialize_voltage_sensors() + return self._voltage_sensor_list + + def get_voltage_sensor(self, index): + if not self._voltage_sensor_initialized: + self.__initialize_voltage_sensors() + try: + voltage_sensor = self._voltage_sensor_list[index] + except IndexError: + sys.stderr.write("Voltage sensor index {} out of range (0-{})\n".format( + index, len(self._voltage_sensor_list)-1)) + return voltage_sensor + + def __initialize_voltage_sensors(self): + from sonic_platform.sensor import VoltageSensor + if VoltageSensor._validate_voltage_sensors(): + for index in range(0, NUM_VOLTAGE_SENSORS): + voltage = VoltageSensor(index) + self._voltage_sensor_list.append(voltage) + self._voltage_sensor_initialized = True + log_info("system voltage sensors are initialised") + + ############################################## + # Current Sensor Methods + ############################################## + + def get_num_current_sensors(self): + if not self._current_sensor_initialized: + self.__initialize_current_sensors() + return len(self._current_sensor_list) + + def get_all_current_sensors(self): + if not self._current_sensor_initialized: + self.__initialize_current_sensors() + return self._current_sensor_list + + def get_current_sensor(self, index): + if not self._current_sensor_initialized: + self.__initialize_current_sensors() + try: + current_sensor = self._current_sensor_list[index] + except IndexError: + sys.stderr.write("Current sensor index {} out of range (0-{})\n".format( + index, len(self._current_sensor_list)-1)) + return current_sensor + + def __initialize_current_sensors(self): + from sonic_platform.sensor import CurrentSensor + if CurrentSensor._validate_current_sensors(): + for index in range(0, NUM_CURRENT_SENSORS): + current = CurrentSensor(index) + self._current_sensor_list.append(current) + self._current_sensor_initialized = True + log_info("system current sensors are initialised") + + ############################################## + # Component methods + ############################################## + + def get_all_components(self): + try: + if self._api_helper.is_host(): + if len(self._component_list) == 0: + self.__initialize_components() + return self._component_list + except IndexError: + sys.stderr.write("Failed to initialize components\n") + return [] + + def get_component(self, index): + """ + Retrieves component represented by (0-based) index + Args: + index: An integer, the index (0-based) of the component to retrieve + Returns: + An object dervied from ComponentBase representing the specified component + """ + component = None + + try: + if self._api_helper.is_host(): + if len(self._component_list) == 0: + self.__initialize_components() + component = self._component_list[index] + except IndexError: + sys.stderr.write("Component index {} out of range (0-{})\n".format( + index, len(self._component_list)-1)) + + return + + def __initialize_components(self): + from sonic_platform.component import Component + component_data = Component.populate_component_data() + num_component = len(component_data.keys()) + for index in range(0, num_component): + component = Component(component_index = index) + self._component_list.append(component) + log_info("System components are initialized") + + ############################################## + # Other methods + ############################################## + + def get_eeprom(self): + if not hasattr(self, "_eeprom") or self._eeprom is None: + self.__initialize_eeprom() + return self._eeprom + + def __initialize_eeprom(self): + from sonic_platform.eeprom import Eeprom + self._eeprom = Eeprom() + log_info("system eeprom is ready") + + def get_watchdog(self): + from sonic_platform.watchdog import Watchdog + watchdog = Watchdog() + log_info("Watchdog initialized") + return watchdog + + ############################################## + # device or chassis methods + ############################################## + + def get_name(self): + """ + Retrieves the name of the chassis + Returns: + string: The name of the chassis + """ + model = "" + hwsku = self._api_helper.get_hwsku() + try: + model = self.get_model() + except: + return hwsku + return hwsku + " " + model + + def get_presence(self): + """ + Retrieves the presence of the chassis + Returns: + bool: True if chassis is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the chassis + Returns: + string: Model/part number of chassis + """ + if not hasattr(self, "_eeprom") or self._eeprom is None: + self.__initialize_eeprom() + return self._eeprom.get_part_number() + + def get_serial(self): + """ + Retrieves the serial number of the chassis (Service tag) + Returns: + string: Serial number of chassis + """ + if not hasattr(self, "_eeprom") or self._eeprom is None: + self.__initialize_eeprom() + return self._eeprom.get_serial_number() + + def get_status(self): + """ + Retrieves the operational status of the chassis + Returns: + bool: A boolean value, True if chassis is operating properly + False if not + """ + return True + + def get_base_mac(self): + """ + Retrieves the base MAC address for the chassis + Returns: + A string containing the MAC address in the format + 'XX:XX:XX:XX:XX:XX' + """ + if not hasattr(self, "_eeprom") or self._eeprom is None: + self.__initialize_eeprom() + return self._eeprom.get_base_mac() + + def get_system_eeprom_info(self): + """ + Retrieves the full content of system EEPROM information for the chassis + Returns: + A dictionary where keys are the type code defined in + OCP ONIE TlvInfo EEPROM format and values are their corresponding + values. + """ + if not hasattr(self, "_eeprom") or self._eeprom is None: + self.__initialize_eeprom() + return self._eeprom.system_eeprom_info() + + def get_my_slot(self): + cmd = "cpldapp -r 0xA" + try: + slot_id = self._api_helper.runCMD(cmd) + return int(slot_id,16) + except: + return -1 + + def get_reboot_cause(self): + """ + Retrieves the cause of the previous reboot + Returns: + A tuple (string, string) where the first element is a string + containing the cause of the previous reboot. This string must be + one of the predefined strings in this class. If the first string + is "REBOOT_CAUSE_HARDWARE_OTHER", the second string can be used + to pass a description of the reboot cause. + """ + bits = REBOOT_CAUSE_MAP.keys() + try: + reset_cause = int(self._api_helper.readline_txt_file(RESET_CAUSE_PATH),16) + for bit in bits: + if((reset_cause >> bit) & 1): + if bit in REBOOT_CAUSE_NON_HARDWARE_LIST: + return (self.REBOOT_CAUSE_NON_HARDWARE, REBOOT_CAUSE_MAP[bit]) + else: + return (self.REBOOT_CAUSE_HARDWARE_OTHER, REBOOT_CAUSE_MAP[bit]) + + reboot_cause_path = (HOST_REBOOT_CAUSE_PATH + REBOOT_CAUSE_FILE) + sw_reboot_cause = self._api_helper.readline_txt_file(reboot_cause_path) or "Unknown" + if "Unknown" in sw_reboot_cause: + return (self.REBOOT_CAUSE_NON_HARDWARE, "Unknown") + return (self.REBOOT_CAUSE_NON_HARDWARE, sw_reboot_cause) + except: + return (self.REBOOT_CAUSE_NON_HARDWARE, "Unknown") + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/component.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/component.py new file mode 100644 index 000000000000..e89b1850f104 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/component.py @@ -0,0 +1,441 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +################################################################################ +# Pensando +# +# Component contains an implementation of SONiC Platform Base API and +# provides the components firmware management function, such as +# EMMC, CPLD, and transceivers +# +################################################################################ + +try: + import threading + import sys,os.path + import logging + import time + import json + import yaml + import re + import subprocess + from pathlib import Path + from .helper import APIHelper + from sonic_platform_base.component_base import ComponentBase + +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +sys.path.append(str(Path(__file__).parent.absolute())) + +CHASSIS_COMPONENT_MAPPING = None +MMC_DATA_PATH = "/sys/class/mmc_host/mmc0/mmc0:0001/{}" +MMC_DEV_PATH = "/dev/mmcblk0" +NOT_AVAILABLE = 'None' +IMAGES_PATH = "/host/images" + +def parse_re(pattern, buffer, index = 0, alt_val = "N/A"): + res_list = re.findall(pattern, buffer) + return res_list[index] if res_list else alt_val + +def get_slot_id(): + try: + from sonic_platform.chassis import Chassis + chassis = Chassis() + slot = chassis.get_my_slot() + except Exception as e: + log_err("failed to fetch chassis slot id due to {e}") + slot = -1 + slot_id = str(slot) if slot != -1 else 'UNDEFINED' + return slot_id + +def fetch_version_info(apiHelper): + try: + from sonic_installer.bootloader import get_bootloader + bootloader = get_bootloader() + curimage = bootloader.get_current_image() + curimage = curimage.split('-')[-1] + fwupdate_version_list = [] + try: + dpu_docker_name = apiHelper.get_dpu_docker_container_name() + cmd = "/nic/tools/fwupdate -l | grep -v 'FATAL' " + cmd += "| grep -v 'sh: /dev/mapper: unknown operand'| " + cmd += "grep -v 'standard metadata magic not found'" + output = apiHelper.run_docker_cmd(cmd) + fw_version_data = json.loads(output) + try: + fwupdate_version_list.append(fw_version_data['mainfwa']['system_image']['software_version']) + except: + fwupdate_version_list.append(NOT_AVAILABLE) + try: + fwupdate_version_list.append(fw_version_data['mainfwa']['uboot']['software_version']) + except: + fwupdate_version_list.append(NOT_AVAILABLE) + try: + fwupdate_version_list.append(fw_version_data['goldfw']['kernel_fit']['software_version']) + except: + fwupdate_version_list.append(NOT_AVAILABLE) + try: + fwupdate_version_list.append(fw_version_data['goldfw']['uboot']['software_version']) + except: + fwupdate_version_list.append(NOT_AVAILABLE) + try: + major_id = apiHelper.runCMD("cpldapp -r 0x0").replace('0x','') + minor_id = apiHelper.runCMD("cpldapp -r 0x1e").replace('0x','') + cpld_version = "{}.{}".format(major_id,minor_id) + fwupdate_version_list.append(cpld_version) + except: + fwupdate_version_list.append(NOT_AVAILABLE) + except Exception as e: + log_err(f"Failed to fetch mainfwa/goldfw/cpld version info due to {e}") + fwupdate_version_list = [NOT_AVAILABLE]*5 + version_info_list = [curimage] + version_info_list.extend(fwupdate_version_list) + return version_info_list + except Exception as e: + log_err(f"Failed to fetch sonic version info due to {e}") + return [NOT_AVAILABLE]*7 + +""" +Chassis Module Component Version Description +------------------------ -------- ------------------- --------------- -------------------------------- +Pensando-elba DSS-MTFUJI N/A DPUFW-7 20241119.204642 DPU-7 SONiC Image + DPUQSPI_GOLDFW-7 1.68-G-22 DPU-7 GOLDFW + DPUQSPI_GOLDUBOOT-7 1.68-G-22 DPU-7 GOLDUBOOT + DPUQSPI_UBOOTA-7 1.5.0-EXP DPU-7 UBOOTA + eMMC N/A Internal storage device +""" + +def add_version_info(CHASSIS_COMPONENT_MAPPING, stat): + [current_version, mainfwa_sw, mainfwa_uboot, goldfw_sw, goldfw_uboot, cpld_version] = stat + + component_index = 0 + slot_id = get_slot_id() + + ##### SONiC version + deviceinfo = {} + deviceinfo["name"] = f"DPUFW-{slot_id}" + deviceinfo["file_id"] = "sonic-pensando" + deviceinfo["extension"] = "bin" + deviceinfo["description"] = f"DPU-{slot_id} SONiC Image" + deviceinfo["productid"] = NOT_AVAILABLE + deviceinfo["firmware version"] = current_version + deviceinfo["serial number"] = NOT_AVAILABLE + CHASSIS_COMPONENT_MAPPING[component_index] = deviceinfo + component_index = component_index + 1 + + ##### GOLDFW version + deviceinfo = {} + deviceinfo["name"] = f"DPUQSPI_GOLDFW-{slot_id}" + deviceinfo["file_id"] = "goldfw" + deviceinfo["extension"] = "tar" + deviceinfo["description"] = f"DPU-{slot_id} GOLDFW" + deviceinfo["productid"] = NOT_AVAILABLE + deviceinfo["firmware version"] = goldfw_sw + deviceinfo["serial number"] = NOT_AVAILABLE + CHASSIS_COMPONENT_MAPPING[component_index] = deviceinfo + component_index = component_index + 1 + + ##### GOLDUBOOT version + deviceinfo = {} + deviceinfo["name"] = f"DPUQSPI_GOLDUBOOT-{slot_id}" + deviceinfo["file_id"] = "golduboot" + deviceinfo["extension"] = "img" + deviceinfo["description"] = f"DPU-{slot_id} GOLDUBOOT" + deviceinfo["productid"] = NOT_AVAILABLE + deviceinfo["firmware version"] = goldfw_uboot + deviceinfo["serial number"] = NOT_AVAILABLE + CHASSIS_COMPONENT_MAPPING[component_index] = deviceinfo + component_index = component_index + 1 + + ##### UBOOTA version + deviceinfo = {} + deviceinfo["name"] = f"DPUQSPI_UBOOTA-{slot_id}" + deviceinfo["file_id"] = "uboota" + deviceinfo["extension"] = "img" + deviceinfo["description"] = f"DPU-{slot_id} UBOOTA" + deviceinfo["productid"] = NOT_AVAILABLE + deviceinfo["firmware version"] = mainfwa_uboot + deviceinfo["serial number"] = NOT_AVAILABLE + CHASSIS_COMPONENT_MAPPING[component_index] = deviceinfo + component_index = component_index + 1 + + return CHASSIS_COMPONENT_MAPPING + +class Component(ComponentBase): + """Platform-specific Component class""" + @classmethod + def populate_component_data(cls): + global CHASSIS_COMPONENT_MAPPING + from sonic_platform.helper import APIHelper + apiHelper = APIHelper() + + if CHASSIS_COMPONENT_MAPPING == None: + CHASSIS_COMPONENT_MAPPING = {} + else: + return CHASSIS_COMPONENT_MAPPING + + stat = fetch_version_info(apiHelper) + CHASSIS_COMPONENT_MAPPING = add_version_info(CHASSIS_COMPONENT_MAPPING, stat) + + component_index = len(CHASSIS_COMPONENT_MAPPING) + deviceinfo = {} + deviceinfo["name"] = "eMMC" + deviceinfo["description"] = "Internal storage device" + deviceinfo["productid"] = NOT_AVAILABLE + try: + firmware_rev = NOT_AVAILABLE + try: + firmware_rev_bytes = bytes.fromhex((open(MMC_DATA_PATH.format("fwrev")).read()).replace('0x','')) + firmware_rev = firmware_rev_bytes.decode("ascii") + except: + firmware_rev = NOT_AVAILABLE + pass + deviceinfo["firmware version"] = firmware_rev + deviceinfo["serial number"] = open(MMC_DATA_PATH.format("serial")).read() + deviceinfo["ffu capable"] = open(MMC_DATA_PATH.format("ffu_capable")).read() + except: + deviceinfo["firmware version"] = NOT_AVAILABLE + deviceinfo["serial number"] = NOT_AVAILABLE + + CHASSIS_COMPONENT_MAPPING[component_index] = deviceinfo + return CHASSIS_COMPONENT_MAPPING + + + def __init__(self, component_index = 0): + global CHASSIS_COMPONENT_MAPPING + self._api_helper = APIHelper() + if CHASSIS_COMPONENT_MAPPING == None: + CHASSIS_COMPONENT_MAPPING = Component.populate_component_data() + + ComponentBase.__init__(self) + self.component_index = component_index + + def get_firmware_version(self): + """ + Retrieves the firmware version of module + Returns: string: The firmware versions of the module + """ + version = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("firmware version", None) + return version + + def _get_uboot_version(self, image_path, file_path): + try: + cmd = f'cat {image_path}/{file_path} | grep --text "software_version" | grep --text ","' + command_output = self._api_helper.runCMD(cmd) + pattern = r'"software_version":\s*"([\w.\-]+)"' + match = re.search(pattern, command_output) + if match: + version = match.group(1) # Extract the captured version + return version + else: + return NOT_AVAILABLE + except: + return NOT_AVAILABLE + + def _get_goldfw_version(self, image_path, file_path): + try: + manifest_path = os.path.join(image_path, "MANIFEST") + cmd = f'tar -xvf {image_path}/{file_path} -C {image_path} MANIFEST' + self._api_helper.runCMD(cmd) + if os.path.exists(manifest_path): + file = open(manifest_path, "r") + data = json.load(file) + file.close() + self._api_helper.runCMD(f"rm -f {manifest_path}") + version = data.get('software_version', NOT_AVAILABLE) + return version + else: + return NOT_AVAILABLE + except: + return NOT_AVAILABLE + + def get_available_firmware_version(self, image_path): + """ + Retrieves the available firmware version of the component + Note: the firmware version will be read from image + Args: image_path: A string, path to firmware image + Returns: A string containing the available fw version of component + """ + current_version = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("firmware version", None) + name = self.get_name() + if (image_path == None) or (image_path == ""): + image_path = IMAGES_PATH + try: + matching_files = [] + file_id = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("file_id", None) + extension = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("extension", None) + if (file_id != None) and os.path.exists(image_path) and os.path.isdir(image_path): + files = os.listdir(image_path) + pattern = re.compile(rf'^{re.escape(file_id)}_ver_([\w.\-]+)\.{re.escape(extension)}$') + for file in files: + match = pattern.match(file) + if match: + version = match.group(1) + version_from_file = NOT_AVAILABLE + if "UBOOT" in name: + version_from_file = self._get_uboot_version(image_path, file) + if "GOLDFW" in name: + version_from_file = self._get_goldfw_version(image_path, file) + if version_from_file != NOT_AVAILABLE: + version = version_from_file + matching_files.append((file, version)) + matching_files.sort(key=lambda x: x[1], reverse=True) + #### reading version from files + if matching_files: + highest_version_file, highest_version = matching_files[0] + if highest_version > current_version: + return highest_version + else: + return current_version + else: + return current_version + except Exception as e: + return current_version + + def get_name(self): + """ + Retrieves the name of the component + Returns: A string containing the name of the component + """ + name = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("name", None) + return name + + def get_description(self): + """ + Retrieves the description of the component + Returns: A string containing the description of the component + """ + description = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("description", None) + return description + + def update_firmware(self, image_path): + """ + Updates firmware of the component + This API performs firmware update: it assumes firmware installation and + loading in a single call. + In case platform component requires some extra steps (apart from calling + Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - + this will be done automatically by API + Args: image_path: A string, path to firmware image + Raises: RuntimeError: update failed + """ + available_version = self.get_available_firmware_version(None) + file_id = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("file_id", None) + extension = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("extension", None) + file_path = f"{image_path}/{file_id}_ver_{available_version}.{extension}" + if os.path.exists(file_path): + return self.install_firmware(file_path) + return False + + def install_firmware(self, image_path): + """ + Installs firmware of the component + In case platform component requires some extra steps (apart from calling + Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - + that has to be done separately + Args: image_path: A string, path to firmware image + Raises: RuntimeError: update failed + """ + name = self.get_name() + if name == "eMMC": + cmd = "mmc ffu " + image_path + " " + MMC_DEV_PATH + self._api_helper.runCMD(cmd) + return True + elif "DPUFW" in name: + print(f"use sonic-installer cmd for installation of {name}") + return False + else: + file_id = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("file_id", None) + extension = CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("extension", None) + file_name = os.path.basename(image_path) + pattern = rf"^{re.escape(file_id)}_ver_(.+)\.{re.escape(extension)}$" + match = re.match(pattern, file_name) + if not match: + print(f"file {image_path} is not correct for {name}, check naming convention") + print(f"naming convention - {file_id}_ver_.{extension}") + return False + if "UBOOT" in name: + try: + version_from_file = self._get_uboot_version(os.path.dirname(image_path), os.path.basename(image_path)) + print(f"installing {image_path} with version {version_from_file} for component {name}") + cmd = f"/boot/install_file {file_id} {image_path}" + print(cmd) + ret = self._api_helper.runCMD(cmd) + print(ret) + return True + except Exception as e: + print(f"installation failed due to {e}") + return False + if "GOLDFW" in name: + try: + version_from_file = self._get_goldfw_version(os.path.dirname(image_path), os.path.basename(image_path)) + container_name = self._api_helper.get_dpu_docker_container_name() + print(f"installing {image_path} with version {version_from_file} for component {name}") + cmd = f"docker cp {image_path} {container_name}:/data/" + print(cmd) + ret = self._api_helper.runCMD(cmd) + cmd = ["docker", "exec", container_name, "/nic/tools/fwupdate", "-i", "goldfw", "-p", f"/data/{file_name}"] + print(cmd) + status, result = self._api_helper.run_command(cmd) + return status + except Exception as e: + print(f"installation failed due to {e}") + return False + return False + + ###################### Device methods ######################## + ############################################################## + + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return NOT_AVAILABLE + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return CHASSIS_COMPONENT_MAPPING.get(self.component_index,{}).get("serial number", None) + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/eeprom.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/eeprom.py new file mode 100644 index 000000000000..a18d83768bae --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/eeprom.py @@ -0,0 +1,164 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Eeprom information of system +# +############################################################################# + +try: + import binascii + import redis + import struct + import time + import os + from collections import OrderedDict + from .helper import APIHelper + from .fru_tlvinfo_decoder import FruTlvInfoEncoder +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +HOST_PLATFORM_PATH = '/usr/share/sonic/device' +DOCKER_HWSKU_PATH = '/usr/share/sonic/platform' + +class Eeprom(FruTlvInfoEncoder): + """Platform-specific EEPROM class""" + + def __init__(self, is_psu=False, psu_index=0, is_fantray=False, fantray_index=0): + self.start_offset = 0 + self._api_helper = APIHelper() + + host_platform_path = "/".join([HOST_PLATFORM_PATH, self._api_helper.get_platform()]) + self.eeprom_path = host_platform_path + "/eeprom" + self.fru_path = host_platform_path + "/fru.json" + if not self._api_helper.is_host(): + self.eeprom_path = "/tmp/eeprom" + self.fru_path = DOCKER_HWSKU_PATH + "/fru.json" + if not os.path.exists(self.fru_path): + self._api_helper.runCMD("touch "+self.fru_path) + self._setup_files() + # System EEPROM is in ONIE TlvInfo EEPROM format + super(Eeprom, self).__init__(self.eeprom_path, + self.start_offset, '', True, self.fru_path) + self._load_system_eeprom() + + def _setup_files(self): + if self._api_helper.is_host(): + docker_image_id = self._api_helper.get_dpu_docker_imageID() + cmd = "docker cp {}:/tmp/fru.json /home/admin".format(docker_image_id) + self._api_helper.runCMD(cmd) + time.sleep(0.5) + self._api_helper.runCMD("cp /home/admin/fru.json {}".format(self.fru_path)) + + def _load_system_eeprom(self): + """ + Reads the system EEPROM and retrieves the values corresponding + to the codes defined as per ONIE TlvInfo EEPROM format and fills + them in a dictionary. + """ + try: + # Read System EEPROM as per ONIE TlvInfo EEPROM format. + self.eeprom_data = self.read_eeprom() + except: + self.base_mac = 'NA' + self.serial_number = 'NA' + self.part_number = 'NA' + self.model_str = 'NA' + self.serial = 'NA' + self.eeprom_tlv_dict = dict() + else: + eeprom = self.eeprom_data + self.eeprom_tlv_dict = dict() + + if not self.is_valid_tlvinfo_header(eeprom): + self.base_mac = 'NA' + self.serial_number = 'NA' + self.part_number = 'NA' + self.model_str = 'NA' + self.serial = 'NA' + return + + total_length = (eeprom[9] << 8) | (eeprom[10]) + tlv_index = self._TLV_INFO_HDR_LEN + tlv_end = self._TLV_INFO_HDR_LEN + total_length + + while (tlv_index + 2) < len(eeprom) and tlv_index < tlv_end: + if not self.is_valid_tlv(eeprom[tlv_index:]): + break + + tlv = eeprom[tlv_index:tlv_index + 2 + + eeprom[tlv_index + 1]] + code = "0x%02X" % (tlv[0]) + + if tlv[0] == self._TLV_CODE_VENDOR_EXT: + value = str((tlv[2] << 24) | (tlv[3] << 16) | + (tlv[4] << 8) | tlv[5]) + value += tlv[6:6 + tlv[1]].decode('ascii') + else: + name, value = self.decoder(None, tlv) + + self.eeprom_tlv_dict[code] = value + if eeprom[tlv_index] == self._TLV_CODE_CRC_32: + break + + tlv_index += eeprom[tlv_index+1] + 2 + + self.base_mac = self.eeprom_tlv_dict.get( + "0x%X" % (self._TLV_CODE_MAC_BASE), 'NA') + self.serial_number = self.eeprom_tlv_dict.get( + "0x%X" % (self._TLV_CODE_SERIAL_NUMBER), 'NA') + self.part_number = self.eeprom_tlv_dict.get( + "0x%X" % (self._TLV_CODE_PART_NUMBER), 'NA') + self.model_str = self.eeprom_tlv_dict.get( + "0x%X" % (self._TLV_CODE_PRODUCT_NAME), 'NA') + self.serial = self.eeprom_tlv_dict.get( + "0x%X" % (self._TLV_CODE_SERVICE_TAG), 'NA') + + def get_serial_number(self): + """ + Returns the serial number. + """ + return self.serial_number + + def get_part_number(self): + """ + Returns the part number. + """ + return self.part_number + + def airflow_fan_type(self): + """ + Returns the airflow fan type. + """ + if self.is_psu_eeprom: + return int(binascii.hexlify(self.psu_type.encode('utf-8')), 16) + else: + return int(binascii.hexlify(self.fan_type.encode('utf-8')), 16) + + # System EEPROM specific methods + def get_base_mac(self): + """ + Returns the base MAC address found in the system EEPROM. + """ + return self.base_mac + + def get_model(self): + """ + Returns the Model name. + """ + return self.model_str + + def get_serial(self): + """ + Returns the servicetag number. + """ + return self.serial + + def system_eeprom_info(self): + """ + Returns a dictionary, where keys are the type code defined in + ONIE EEPROM format and values are their corresponding values + found in the system EEPROM. + """ + return self.eeprom_tlv_dict diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan.py new file mode 100644 index 000000000000..504e07a11aba --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan.py @@ -0,0 +1,18 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the fan status which are available in the platform +# +############################################################################# + +try: + from sonic_platform_base.fan_base import FanBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class Fan(FanBase): + """Platform-specific Fan class""" + def __init__(self): + FanBase.__init__(self) diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan_drawer.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..9917caa5e435 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fan_drawer.py @@ -0,0 +1,19 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +######################################################################## +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Fan-Drawers' information available in the platform. +# +######################################################################## + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class FanDrawer(FanDrawerBase): + """Platform-specific Fan class""" + + def __init__(self): + FanDrawerBase.__init__(self) diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fru_tlvinfo_decoder.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fru_tlvinfo_decoder.py new file mode 100644 index 000000000000..82d29bc60b66 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/fru_tlvinfo_decoder.py @@ -0,0 +1,891 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# FruTlvInfoEncoder class reads eeprom data from fru.json on Pensando dpu +# and convert its content to TlvInfo format +# +############################################################################# + +from __future__ import print_function + +try: + import sys + import os + import redis + import json + from sonic_platform_base.sonic_eeprom.eeprom_tlvinfo import TlvInfoDecoder + from sonic_platform_base.sonic_eeprom import eeprom_base + from .helper import APIHelper +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + +STATE_DB_INDEX = 6 + +# +# TlvInfo Format - This eeprom format was defined by Cumulus Networks +# and can be found here: +# +# +class FruTlvInfoEncoder(eeprom_base.EepromDecoder): + + # Header Field Constants + _TLV_INFO_ID_STRING = b"TlvInfo\x00" + _TLV_INFO_VERSION = 0x01 + _TLV_INFO_HDR_LEN = 11 + _TLV_INFO_MAX_LEN = 2048 + _TLV_TOTAL_LEN_MAX = _TLV_INFO_MAX_LEN - _TLV_INFO_HDR_LEN + _TLV_HDR_ENABLED = 1 + + # The Undefined TLV Type + _TLV_CODE_UNDEFINED = 0xFC + + # Default TLV Types + _TLV_CODE_PRODUCT_NAME = 0x21 + _TLV_CODE_PART_NUMBER = 0x22 + _TLV_CODE_SERIAL_NUMBER = 0x23 + _TLV_CODE_MAC_BASE = 0x24 + _TLV_CODE_MANUF_DATE = 0x25 + _TLV_CODE_DEVICE_VERSION = 0x26 + _TLV_CODE_LABEL_REVISION = 0x27 + _TLV_CODE_PLATFORM_NAME = 0x28 + _TLV_CODE_ONIE_VERSION = 0x29 + _TLV_CODE_MAC_SIZE = 0x2A + _TLV_CODE_MANUF_NAME = 0x2B + _TLV_CODE_MANUF_COUNTRY = 0x2C + _TLV_CODE_VENDOR_NAME = 0x2D + _TLV_CODE_DIAG_VERSION = 0x2E + _TLV_CODE_SERVICE_TAG = 0x2F + _TLV_CODE_VENDOR_EXT = 0xFD + _TLV_CODE_CRC_32 = 0xFE + + # By default disable the Quanta specific codes + _TLV_CODE_QUANTA_MAGIC = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_CRC = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_CARD_TYPE = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_HW_VERSION = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_SW_VERSION = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_MANUF_DATE = _TLV_CODE_UNDEFINED + _TLV_CODE_QUANTA_MODEL_NAME = _TLV_CODE_UNDEFINED + + # TLV Value Display Switch + _TLV_DISPLAY_VENDOR_EXT = True + + + def __init__(self, path, start, status, ro, fru_path, max_len=_TLV_INFO_MAX_LEN): + self._api_helper = APIHelper() + # overwrite initial eeprom file + if os.path.exists(path): + self._api_helper.runCMD("rm {}".format(path)) + self._api_helper.runCMD("touch {}".format(path)) + super(FruTlvInfoEncoder, self).__init__(path, None, start, status, ro) + self.eeprom_start = start + self.eeprom_max_len = max_len + self.fru_path = fru_path + self.fru_data = self._load_fru_data() + self._redis_client = None + eeprom = self._convert_fru_to_tlvInfoHeader() + self.write_eeprom(eeprom) + + def _load_fru_data(self): + json_data = None + try: + json_data = json.load(open(self.fru_path)) + except: + print("Failed to load data") + return json_data + + def _generate_tlv_header(self,e): + ''' + ID String 8 “TlvInfo” + Header Version 1 0x01 + Total Length 2 Total number of bytes that follow + TLV 1 Varies The data for TLV 1 + TLV 2 Varies The data for TLV 2 + . . . + . . . + TLV N Varies The data for TLV N + CRC-32 TLV 6 Type = 0xFE, Length = 4, Value = 4 byte CRC-32 + ''' + e_len = len(e) + 6 # 6 is len of crc-32 TLV + eeprom = bytearray() + eeprom += self._TLV_INFO_ID_STRING + eeprom += bytearray([self._TLV_INFO_VERSION]) + eeprom += bytearray([(e_len >> 8) & 0xFF]) + bytearray([e_len & 0xFF]) + e + return eeprom + + def _generate_crc(self,e): + if self._TLV_CODE_CRC_32 != self._TLV_CODE_UNDEFINED: + e = e + bytearray([self._TLV_CODE_CRC_32]) + bytearray([4]) + elif self._TLV_CODE_QUANTA_CRC != self._TLV_CODE_UNDEFINED: + e = e + bytearray([self._TLV_CODE_QUANTA_CRC]) + bytearray([2]) + else: + print("\nFailed to formulate new eeprom\n") + exit + e += self.encode_checksum(self.calculate_checksum(e)) + return e + + def _generate_tlv_fields(self): + + tlvs = bytearray() + + product_name = self.fru_data.get("product-name","Not Available") + new_tlv = self.encoder((self._TLV_CODE_PRODUCT_NAME,),product_name) + tlvs += new_tlv + + part_number = self.fru_data.get("part-number","Not Available") + new_tlv = self.encoder((self._TLV_CODE_PART_NUMBER,),part_number) + tlvs += new_tlv + + serial_number = self.fru_data.get("serial-number","Not Available") + new_tlv = self.encoder((self._TLV_CODE_SERIAL_NUMBER,),serial_number) + tlvs += new_tlv + + base_mac = self.fru_data.get("mac-address","Not Available") + new_tlv = self.encoder((self._TLV_CODE_MAC_BASE,),base_mac) + tlvs += new_tlv + + mfr_date = self.fru_data.get("manufacturing-date","Not Available") + new_tlv = self.encoder((self._TLV_CODE_MANUF_DATE,),mfr_date) + tlvs += new_tlv + + dev_version = self.fru_data.get("board-id","0") + new_tlv = self.encoder((self._TLV_CODE_DEVICE_VERSION,),dev_version) + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_LABEL_REVISION,),"Not Available") + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_PLATFORM_NAME,),"Not Available") + tlvs += new_tlv + + onie_version = self.fru_data.get("onie_version","Not Available") + new_tlv = self.encoder((self._TLV_CODE_ONIE_VERSION,),onie_version) + tlvs += new_tlv + + mac_size = self.fru_data.get("num-mac-address","0") + new_tlv = self.encoder((self._TLV_CODE_MAC_SIZE,),mac_size) + tlvs += new_tlv + + mfr_name = self.fru_data.get("manufacturer", "Not Available") + new_tlv = self.encoder((self._TLV_CODE_MANUF_NAME,),mfr_name) + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_MANUF_COUNTRY,),"Not Available") + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_VENDOR_NAME,),"Not Available") + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_DIAG_VERSION,),"Not Available") + tlvs += new_tlv + + new_tlv = self.encoder((self._TLV_CODE_SERVICE_TAG,),"Not Available") + tlvs += new_tlv + + frufileid = self.fru_data.get("frufileid","0") + eng_change_lvl = self.fru_data.get("engineering-change-level","0") + board_assembly_area = self.fru_data.get("board-assembly-area","0") + extra_fru_data = frufileid + "\n\n" + eng_change_lvl + "\n\n" + board_assembly_area + extra_fru_data = " ".join([hex(ord(x)) for x in extra_fru_data]) + new_tlv = self.encoder((self._TLV_CODE_VENDOR_EXT,),extra_fru_data) + tlvs += new_tlv + return tlvs + + def _convert_fru_to_tlvInfoHeader(self): + tlvs = self._generate_tlv_fields() + e = self._generate_tlv_header(tlvs) + eeprom = self._generate_crc(e) + return eeprom + + def __print_db(self, code, num=0): + if not num: + field_name = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Name') + if not field_name: + pass + else: + field_len = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Len') + field_value = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Value') + print("%-20s 0x%02X %3s %s" % (field_name, code, field_len, field_value)) + else: + for index in range(num): + field_name = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Name_{}'.format(index)) + field_len = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Len_{}'.format(index)) + field_value = self._redis_hget('EEPROM_INFO|{}'.format(hex(code)), 'Value_{}'.format(index)) + print("%-20s 0x%02X %3s %s" % (field_name, code, field_len, field_value)) + + + def decode_eeprom(self, e): + ''' + Decode and print out the contents of the EEPROM. + ''' + visitor = EepromDecodeVisitor() + self.visit_eeprom(e, visitor) + + + def set_eeprom(self, e, cmd_args): + ''' + Returns the new contents of the EEPROM. If command line arguments are supplied, + then those fields are overwritten or added to the existing EEPROM contents. If + not command line arguments are supplied, the user is prompted for the contents + of the EEPROM. + ''' + new_tlvs = bytearray() + (crc_is_valid, crc) = self.is_checksum_valid(e) + if crc_is_valid: + if self._TLV_HDR_ENABLED: + tlv_index = self._TLV_INFO_HDR_LEN + tlv_end = self._TLV_INFO_HDR_LEN + ((e[9] << 8) | e[10]) + else : + tlv_index = self.eeprom_start + tlv_end = self._TLV_INFO_MAX_LEN + + while tlv_index < len(e) and \ + tlv_index < tlv_end and \ + self.is_valid_tlv(e[tlv_index:]) and \ + e[tlv_index] != self._TLV_CODE_CRC_32 and \ + e[tlv_index] != self._TLV_CODE_QUANTA_CRC: + new_tlvs += e[tlv_index:tlv_index + 2 + e[tlv_index + 1]] + tlv_index += e[tlv_index+1] + 2 + + if len(cmd_args): + for arg_str in cmd_args: + for arg in arg_str.split(','): + k, v = arg.split('=') + k = int(k.strip(), 0) + v = v.strip() + new_tlv = self.encoder((k,), v) + (tlv_found, index) = self.get_tlv_index(new_tlvs, k) + if tlv_found: + new_tlvs = new_tlvs[:index] + new_tlv + \ + new_tlvs[index + 2 + new_tlvs[index + 1]:] + else: + new_tlvs += new_tlv + + else: + action = "a" + while action not in ['f', 'F']: + + action = raw_input("\n[a]dd, [m]odify, [d]elete, [f]inished: ") + if action in ['a', 'A', 'm', 'M']: + code = raw_input("Enter a TLV type code: ") + code = int(code, 0) + value = raw_input("Enter the value: ") + new_tlv = self.encoder((code,), value) + (tlv_found, index) = self.get_tlv_index(new_tlvs, code) + if tlv_found: + new_tlvs = new_tlvs[:index] + new_tlv + \ + new_tlvs[index + 2 + new_tlvs[index + 1]:] + else: + new_tlvs += new_tlv + elif action in ['d', 'D']: + code = raw_input("Enter a TLV type code: ") + code = int(code, 0) + (tlv_found, index) = self.get_tlv_index(new_tlvs, code) + if tlv_found: + new_tlvs = new_tlvs[:index] + \ + new_tlvs[index + 2 + new_tlvs[index + 1]:] + elif action in ['f', 'F']: + pass + else: + print("\nInvalid input, please enter 'a', 'm', 'd', or 'f'\n") + + if self._TLV_HDR_ENABLED: + new_tlvs_len = len(new_tlvs) + 6 + new_e = self._TLV_INFO_ID_STRING + bytearray([self._TLV_INFO_VERSION]) + \ + bytearray([(new_tlvs_len >> 8) & 0xFF]) + \ + bytearray([new_tlvs_len & 0xFF]) + new_tlvs + else: + new_e = new_tlvs + + if self._TLV_CODE_CRC_32 != self._TLV_CODE_UNDEFINED: + new_e = new_e + bytearray([self._TLV_CODE_CRC_32]) + bytearray([4]) + elif self._TLV_CODE_QUANTA_CRC != self._TLV_CODE_UNDEFINED: + new_e = new_e + bytearray([self._TLV_CODE_QUANTA_CRC]) + bytearray([2]) + else: + print("\nFailed to formulate new eeprom\n") + exit + new_e += self.encode_checksum(self.calculate_checksum(new_e)) + self.decode_eeprom(new_e) + if len(new_e) > min(self._TLV_INFO_MAX_LEN, self.eeprom_max_len): + sys.stderr.write("\nERROR: There is not enough room in the EEPROM to save data.\n") + exit(1) + return new_e + + + def is_valid_tlvinfo_header(self, e): + ''' + Perform sanity checks on the first 11 bytes of the TlvInfo EEPROM + data passed in as a bytearray. + 1. Large enough to hold the header + 2. First 8 bytes contain null-terminated ASCII string "TlvInfo" + 3. Version byte is 1 + 4. Total length bytes contain value which is less than or equal + to the allowed maximum (2048-11) + ''' + return len(e) >= self._TLV_INFO_HDR_LEN and \ + e[0:8] == self._TLV_INFO_ID_STRING and \ + e[8] == self._TLV_INFO_VERSION and \ + ((e[9] << 8) | e[10]) <= self._TLV_TOTAL_LEN_MAX + + + def is_valid_tlv(self, e): + ''' + Perform basic sanity checks on a TLV field. The TLV is in the bytearray + provided. + 1. The TLV is at least 2 bytes long + 2. The length byte contains a value which does not cause the value + field to go beyond the length of the string. + ''' + return (len(e) >= 2 and (2 + e[1] <= len(e))) + + + def is_checksum_valid(self, e): + ''' + Validate the checksum in the provided TlvInfo EEPROM data. + ''' + if not self.is_valid_tlvinfo_header(e): + return (False, 0) + + offset = self._TLV_INFO_HDR_LEN + ((e[9] << 8) | e[10]) + if len(e) < offset or \ + e[offset-6] != self._TLV_CODE_CRC_32 or \ + e[offset-5] != 4: + return (False, 0) + + crc = self.calculate_checksum(e[:offset-4]) + tlv_crc = e[offset-4] << 24 | e[offset-3] << 16 | \ + e[offset-2] << 8 | e[offset-1] + if tlv_crc == crc: + return(True, crc) + + return (False, crc) + + + def read_eeprom(self): + ''' + Read the eeprom contents. This is performed in two steps. First + the 11 bytes of the TlvInfo structure (the header) are read and + sanity checked. Then using the total length field in the header, + the rest of the data is read from the EEPROM. + ''' + offset = 0 + if self._TLV_HDR_ENABLED: + h = self.read_eeprom_bytes(self._TLV_INFO_HDR_LEN) + offset = self._TLV_INFO_HDR_LEN + if len(h) != self._TLV_INFO_HDR_LEN: + raise RuntimeError("expected to read %d bytes from %s, " \ + %(self._TLV_INFO_HDR_LEN, self.p) + \ + "but only read %d" %(len(h),)) + if not self.is_valid_tlvinfo_header(h): + return h + sizeof_tlvs = (h[9] << 8) | h[10] + else: + h = "" + sizeof_tlvs = self._TLV_INFO_MAX_LEN + + t = self.read_eeprom_bytes(sizeof_tlvs, offset) + if len(t) != sizeof_tlvs: + raise RuntimeError("expected to read %d bytes from %s, " \ + %(sizeof_tlvs, self.p) + \ + "but only read %d" %(len(t))) + return h + t + + + def read_eeprom_db(self): + ''' + Print out the contents of the EEPROM from database + ''' + db_state = self._redis_hget('EEPROM_INFO|State', 'Initialized') + if db_state != '1': + return -1 + tlv_version = self._redis_hget('EEPROM_INFO|TlvHeader', 'Version') + if tlv_version: + print("TlvInfo Header:") + print(" Id String: %s" % self._redis_hget('EEPROM_INFO|TlvHeader', 'Id String')) + print(" Version: %s" % tlv_version) + print(" Total Length: %s" % self._redis_hget('EEPROM_INFO|TlvHeader', 'Total Length')) + + print("TLV Name Code Len Value") + print("-------------------- ---- --- -----") + + for index in range(self._TLV_CODE_PRODUCT_NAME, self._TLV_CODE_SERVICE_TAG + 1): + self.__print_db(index) + + try: + num_vendor_ext = int(self._redis_hget('EEPROM_INFO|{}'.format(hex(self._TLV_CODE_VENDOR_EXT)), 'Num_vendor_ext')) + except (ValueError, TypeError): + pass + else: + self.__print_db(self._TLV_CODE_VENDOR_EXT, num_vendor_ext) + + self.__print_db(self._TLV_CODE_CRC_32) + + print("") + + is_valid = self._redis_hget('EEPROM_INFO|Checksum', 'Valid') + if is_valid != '1': + print("(*** checksum invalid)") + else: + print("(checksum valid)") + + return 0 + + + def update_eeprom_db(self, e): + ''' + Decode the contents of the EEPROM and update the contents to database + ''' + visitor = EepromRedisVisitor(self) + self.visit_eeprom(e, visitor) + return 0 if visitor.error is None else -1 + + + def get_tlv_field(self, e, code): + ''' + Given an EEPROM bytearray the TLV field for the provided code is + returned. This routine validates the EEPROM data (checksum and + other sanity checks) and then searches for a TLV field with the + supplied type code. A tuple of two items is returned. The first + item is a boolean indicating success and, if True, the second + item is a 3 element list with the type (int), length (int), + and value (bytearray) of the requested TLV. + ''' + (is_valid, valid_crc) = self.is_checksum_valid(e) + if not is_valid: + return (False, None) + if self._TLV_HDR_ENABLED: + tlv_index = self._TLV_INFO_HDR_LEN + tlv_end = ((e[9] << 8) | e[10]) + self._TLV_INFO_HDR_LEN + else: + tlv_index = self.eeprom_start + tlv_end = self._TLV_INFO_MAX_LEN + while tlv_index < len(e) and tlv_index < tlv_end: + if not self.is_valid_tlv(e[tlv_index:]): + return (False, None) + if e[tlv_index] == code: + return (True, [e[tlv_index], e[tlv_index+1], \ + e[tlv_index+2:tlv_index+2+e[tlv_index+1]]]) + tlv_index += e[tlv_index+1] + 2 + return (False, None) + + + def get_tlv_index(self, e, code): + ''' + Given an EEPROM bytearray with just TLV fields (no TlvInfo header) + finds the index of the requested type code. This routine searches + for a TLV field with the supplied type code. A tuple of two items + is returned. The first item is a boolean indicating success and, + if True, the second item is the index in the supplied EEPROM bytearray + of the matching type code. + ''' + tlv_index = 0 + while tlv_index < len(e): + if not self.is_valid_tlv(e[tlv_index:]): + return (False, 0) + if e[tlv_index] == code: + return (True, tlv_index) + tlv_index += e[tlv_index+1] + 2 + return (False, 0) + + + def base_mac_addr(self, e): + ''' + Returns the value field of the MAC #1 Base TLV formatted as a string + of colon-separated hex digits. + ''' + (is_valid, t) = self.get_tlv_field(e, self._TLV_CODE_MAC_BASE) + if not is_valid or t[1] != 6: + return super(TlvInfoDecoder, self).switchaddrstr(e) + + return ":".join(["{:02x}".format(T) for T in t[2]]).upper() + + + def switchaddrrange(self, e): + ''' + Returns the value field of the MAC #1 Size TLV formatted as a decimal + string + ''' + (is_valid, t) = self.get_tlv_field(e, self._TLV_CODE_MAC_SIZE) + if not is_valid: + return super(TlvInfoDecoder, self).switchaddrrange(e) + + return str((t[2][0] << 8) | t[2][1]) + + + def modelstr(self, e): + ''' + Returns the value field of the Product Name TLV as a string + ''' + (is_valid, t) = self.get_tlv_field(e, self._TLV_CODE_PRODUCT_NAME) + if not is_valid: + return super(TlvInfoDecoder, self).modelstr(e) + + return t[2].decode("ascii") + + + def serial_number_str(self, e): + ''' + Returns the value field of the Serial Number TLV as a string + ''' + valid, t = self.get_tlv_field(e, self._TLV_CODE_SERIAL_NUMBER) + if not valid: + return super(TlvInfoDecoder, self).serial_number_str(e) + return t[2].decode("ascii") + + + def part_number_str(self, e): + ''' + Returns the value field of the Part Number TLV as a string + ''' + valid, t = self.get_tlv_field(e, self._TLV_CODE_PART_NUMBER) + if not valid: + return super(TlvInfoDecoder, self).part_number_str(e) + return t[2].decode("ascii") + + + def decoder(self, s, t): + ''' + Return a string representing the contents of the TLV field. The format of + the string is: + 1. The name of the field left justified in 20 characters + 2. The type code in hex right justified in 5 characters + 3. The length in decimal right justified in 4 characters + 4. The value, left justified in however many characters it takes + The vailidity of EEPROM contents and the TLV field has been verified + prior to calling this function. The 's' parameter is unused + ''' + if t[0] == self._TLV_CODE_PRODUCT_NAME: + name = "Product Name" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_PART_NUMBER: + name = "Part Number" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_SERIAL_NUMBER: + name = "Serial Number" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_MAC_BASE: + name = "Base MAC Address" + value = ":".join(["{:02x}".format(T) for T in t[2:8]]).upper() + elif t[0] == self._TLV_CODE_MANUF_DATE: + name = "Manufacture Date" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_DEVICE_VERSION: + name = "Device Version" + value = str(t[2]) + elif t[0] == self._TLV_CODE_LABEL_REVISION: + name = "Label Revision" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_PLATFORM_NAME: + name = "Platform Name" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_ONIE_VERSION: + name = "ONIE Version" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_MAC_SIZE: + name = "MAC Addresses" + value = str((t[2] << 8) | t[3]) + elif t[0] == self._TLV_CODE_MANUF_NAME: + name = "Manufacturer" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_MANUF_COUNTRY: + name = "Manufacture Country" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_VENDOR_NAME: + name = "Vendor Name" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_DIAG_VERSION: + name = "Diag Version" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_SERVICE_TAG: + name = "Service Tag" + value = t[2:2 + t[1]].decode("ascii") + elif t[0] == self._TLV_CODE_VENDOR_EXT: + name = "Vendor Extension" + value = "" + if self._TLV_DISPLAY_VENDOR_EXT: + for c in t[2:2 + t[1]]: + value += "0x%02X " % c + value = value.rstrip() + elif t[0] == self._TLV_CODE_CRC_32 and len(t) == 6: + name = "CRC-32" + value = "0x%08X" % ((t[2] << 24) | (t[3] << 16) | (t[4] << 8) | t[5]) + # Quanta specific codes below here. + # These decodes are lifted from their U-Boot codes + elif t[0] == self._TLV_CODE_QUANTA_MAGIC and len(t) == 3: + name = "Magic Number" + value = "0x%02X" % t[2] + elif t[0] == self._TLV_CODE_QUANTA_CRC and len(t) == 4: + name = "QUANTA-CRC" + value = "0x%04X" % ((t[2] << 8) + t[3]) + elif t[0] == self._TLV_CODE_QUANTA_CARD_TYPE and len(t) == 6: + name = "Card Type" + value = "0x%08X" % ((t[2] << 24) | (t[3] << 16) | (t[4] << 8) | t[5]) + elif t[0] == self._TLV_CODE_QUANTA_HW_VERSION and len(t) == 6: + name = "Hardware Version" + value = "%d.%d" % (t[2], t[3]) + elif t[0] == self._TLV_CODE_QUANTA_SW_VERSION and len(t) == 6: + name = "Software Version" + value = "%d.%d.%d.%d" % ((t[2] >> 4), (t[2] & 0xF), (t[3] >> 4), (t[3] & 0xF)) + elif t[0] == self._TLV_CODE_QUANTA_MANUF_DATE and len(t) == 6: + name = "Manufacture Date" + value = "%04d/%d/%d" % (((t[2] << 8) | t[3]), t[4], t[5]) + elif t[0] == self._TLV_CODE_QUANTA_MODEL_NAME: + name = "Model Name" + value = t[2:2 + t[1]].decode("ascii") + else: + name = "Unknown" + value = "" + for c in t[2:2 + t[1]]: + value += "0x%02X " % c + value = value.replace('\x00', '') + return name, value + + + def encoder(self, I, v): + ''' + Validate and encode the string 'v' into the TLV specified by 'I'. + I[0] is the TLV code. + ''' + try: + if I[0] == self._TLV_CODE_PRODUCT_NAME or \ + I[0] == self._TLV_CODE_PART_NUMBER or \ + I[0] == self._TLV_CODE_SERIAL_NUMBER or \ + I[0] == self._TLV_CODE_LABEL_REVISION or \ + I[0] == self._TLV_CODE_PLATFORM_NAME or \ + I[0] == self._TLV_CODE_ONIE_VERSION or \ + I[0] == self._TLV_CODE_MANUF_NAME or \ + I[0] == self._TLV_CODE_VENDOR_NAME or \ + I[0] == self._TLV_CODE_DIAG_VERSION or \ + I[0] == self._TLV_CODE_SERVICE_TAG: + errstr = "A string less than 256 characters" + if len(v) > 255: + raise + value = v.encode("ascii", "replace") + elif I[0] == self._TLV_CODE_DEVICE_VERSION: + errstr = "A number between 0 and 255" + num = int(v, 0) + if num < 0 or num > 255: + raise + value = bytearray([num]) + elif I[0] == self._TLV_CODE_MAC_SIZE: + errstr = "A number between 0 and 65535" + num = int(v, 0) + if num < 0 or num > 65535: + raise + value = bytearray([(num >> 8) & 0xFF, num & 0xFF]) + elif I[0] == self._TLV_CODE_MANUF_DATE: + value = v.encode("ascii", "replace") + elif I[0] == self._TLV_CODE_MAC_BASE: + errstr = 'XX:XX:XX:XX:XX:XX' + if v == "Not Available": + value = v.encode("ascii", "replace") + else: + mac_digits = v.split(':') + if len(mac_digits) != 6: + raise + value = bytearray() + for c in mac_digits: + value += bytearray([int(c, 16)]) + elif I[0] == self._TLV_CODE_MANUF_COUNTRY: + errstr = 'CC, a two character ISO 3166-1 alpha-2 country code' + if len(v) < 2: + raise + value = v.encode("ascii", "replace") + elif I[0] == self._TLV_CODE_CRC_32: + value = bytearray() + # Disallow setting any Quanta specific codes + elif I[0] == self._TLV_CODE_QUANTA_MAGIC or \ + I[0] == self._TLV_CODE_QUANTA_CARD_TYPE or \ + I[0] == self._TLV_CODE_QUANTA_HW_VERSION or \ + I[0] == self._TLV_CODE_QUANTA_SW_VERSION or \ + I[0] == self._TLV_CODE_QUANTA_MANUF_DATE or \ + I[0] == self._TLV_CODE_QUANTA_MODEL_NAME: + raise Exception('quanta-read-only') + else: + errstr = '0xXX ... A list of space-separated hexidecimal numbers' + value = bytearray() + for c in v.split(): + value += bytearray([int(c, 0)]) + except Exception as inst: + if (len(inst.args) > 0) and (inst.args[0] == 'quanta-read-only'): + sys.stderr.write("Error: '" + "0x%02X" % (I[0],) + "' -- Unable to set the read-only Quanta codes.\n") + else: + sys.stderr.write("Error: '" + "0x%02X" % (I[0],) + "' correct format is " + errstr + "\n") + exit(0) + + return bytearray([I[0]]) + bytearray([len(value)]) + value + + + def is_checksum_field(self, I): + return False + + + def checksum_field_size(self): + return 4 + + + def checksum_type(self): + return 'crc32' + + @property + def redis_client(self): + """Handy property to get a redis client. Make sure only create the redis client once. + + Returns: + A redis client instance + """ + if not self._redis_client: + self._redis_client = redis.Redis(db=STATE_DB_INDEX) + return self._redis_client + + def _redis_hget(self, key, field): + value = self.redis_client.hget(key, field) + if value is not None: + value = value.decode().rstrip('\0') + return value + + def visit_eeprom(self, e, visitor): + """Visit the content of EEPROM data. + + Args: + e: the EEPROM data + visitor: A instance of EEPROM vistor, see an example at EepromDefaultVisitor + """ + if self._TLV_HDR_ENABLED : + if not self.is_valid_tlvinfo_header(e): + visitor.set_error('EEPROM does not contain data in a valid TlvInfo format.') + return + + total_len = (e[9] << 8) | e[10] + tlv_index = self._TLV_INFO_HDR_LEN + tlv_end = self._TLV_INFO_HDR_LEN + total_len + visitor.visit_header(e[0:7].decode("ascii"), int(e[8]), total_len) + else : + tlv_index = self.eeprom_start + tlv_end = self._TLV_INFO_MAX_LEN + visitor.visit_header(None, None, None) + + while (tlv_index + 2) < len(e) and tlv_index < tlv_end: + if not self.is_valid_tlv(e[tlv_index:]): + visitor.set_error('Invalid TLV field starting at EEPROM offset %d' % tlv_index) + break + tlv = e[tlv_index:tlv_index + 2 + e[tlv_index + 1]] + name, value = self.decoder(None, tlv) + visitor.visit_tlv(name, tlv[0], tlv[1], value) + + if e[tlv_index] == self._TLV_CODE_QUANTA_CRC or \ + e[tlv_index] == self._TLV_CODE_CRC_32: + break + tlv_index += e[tlv_index+1] + 2 + visitor.visit_end(e) + + +class EepromDefaultVisitor: + def visit_header(self, eeprom_id, version, header_length): + """Visit EEPROM header. If EEPROM header is not present, this method is still called, + but the input arguments will all be None. + + Args: + eeprom_id (str): EEPROM ID + version (int): EEPROM version + header_length (int): EEPROM header length + """ + pass + + def visit_tlv(self, name, code, length, value): + """Visit a TLV + + Args: + name (str): name of the TLV + code (int): code of the TLV + length (int): value length of the TLV + value (str): TLV value + """ + pass + + def visit_end(self, eeprom_data): + """The method will be called when visit EEPROM data finish + + Args: + eeprom_data: EEPROM data + """ + pass + + def set_error(self, error): + """Set error when visiting EEPROM data + + Args: + error (str): error message + """ + pass + + +class EepromDecodeVisitor(EepromDefaultVisitor): + def visit_header(self, eeprom_id, version, header_length): + if eeprom_id is not None: + print("TlvInfo Header:") + print(" Id String: %s" % eeprom_id) + print(" Version: %d" % version) + print(" Total Length: %d" % header_length) + print("TLV Name Code Len Value") + print("-------------------- ---- --- -----") + + def visit_tlv(self, name, code, length, value): + print("%-20s 0x%02X %3d %s" % (name, code, length, value)) + + def set_error(self, error): + print(error) + + +class EepromRedisVisitor(EepromDefaultVisitor): + def __init__(self, eeprom_object): + self.eeprom_object = eeprom_object + self.redis_client = eeprom_object.redis_client + self.vendor_ext_tlv_num = 0 + self.fvs = {} + self.error = None + + def visit_header(self, eeprom_id, version, header_length): + if eeprom_id is not None: + self.fvs['Id String'] = eeprom_id + self.fvs['Version'] = version + self.fvs['Total Length'] = header_length + self.redis_client.hmset("EEPROM_INFO|TlvHeader", self.fvs) + self.fvs.clear() + + def visit_tlv(self, name, code, length, value): + if code == self.eeprom_object._TLV_CODE_VENDOR_EXT: + vendor_index = str(self.vendor_ext_tlv_num) + self.fvs['Name_{}'.format(vendor_index)] = name + self.fvs['Len_{}'.format(vendor_index)] = length + self.fvs['Value_{}'.format(vendor_index)] = value + self.vendor_ext_tlv_num += 1 + else: + self.fvs['Name'] = name + self.fvs['Len'] = length + self.fvs['Value'] = value + self.redis_client.hmset('EEPROM_INFO|{}'.format(hex(code)), self.fvs) + self.fvs.clear() + + def visit_end(self, eeprom_data): + if self.vendor_ext_tlv_num > 0: + self.fvs['Num_vendor_ext'] = str(self.vendor_ext_tlv_num) + self.redis_client.hmset('EEPROM_INFO|{}'.format(hex(self.eeprom_object._TLV_CODE_VENDOR_EXT)), self.fvs) + self.fvs.clear() + + (is_valid, _) = self.eeprom_object.is_checksum_valid(eeprom_data) + if is_valid: + self.fvs['Valid'] = '1' + else: + self.fvs['Valid'] = '0' + + self.redis_client.hmset('EEPROM_INFO|Checksum', self.fvs) + self.fvs.clear() + + self.fvs['Initialized'] = '1' + self.redis_client.hmset('EEPROM_INFO|State', self.fvs) + + def set_error(self, error): + self.error = error + print(error) \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/helper.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/helper.py new file mode 100644 index 000000000000..e7c28a35c0ea --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/helper.py @@ -0,0 +1,145 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of helper functions that would be +# required for various plugin files +# +############################################################################# + +import os +import sys +import subprocess +import re +import subprocess +from sonic_py_common import device_info +import syslog +import json + +HOST_CHK_CMD = "docker > /dev/null 2>&1" +QSFP_STAT_CTRL_CPLD_ADDR = "0x2" +DPU_DOCKER_IMAGE_NAME_FILE="/host/dpu-docker-info/image" +DPU_DOCKER_CONTAINER_NAME_FILE = "/host/dpu-docker-info/name" + +class APIHelper(): + + def __init__(self): + pass + + def get_platform(self): + return device_info.get_platform() + + def get_hwsku(self): + return device_info.get_hwsku() + + def is_host(self): + return os.system(HOST_CHK_CMD) == 0 + + def run_command(self, cmd): + status = True + result = [] + try: + p = subprocess.Popen( + cmd, + shell=False, + universal_newlines=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=os.environ + ) + + for line in iter(p.stdout.readline, ''): + print(line.strip()) + result.append(line.strip()) + + for line in iter(p.stderr.readline, ''): + print(line.strip()) + result.append(line.strip()) + + p.wait() + + if p.returncode != 0: + status = False # Non-zero return code indicates failure + + except FileNotFoundError as e: + status = False + print(f"Command not found: {e}") + except Exception as e: + status = False + print(f"Error running command: {e}") + + return status, "\n".join(result) + + def get_dpu_docker_container_name(self): + docker_container_name = None + try: + with open(DPU_DOCKER_CONTAINER_NAME_FILE, "r") as file: + docker_container_name = file.read() + return docker_container_name.replace('\n', '') + except: + return "dpu" + + def get_dpu_docker_image_name(self): + docker_image_name = None + try: + with open(DPU_DOCKER_IMAGE_NAME_FILE, "r") as file: + docker_image_name = file.read() + return docker_image_name.replace('\n', '') + except: + return "dpu:v1" + + def get_dpu_docker_imageID(self): + + docker_image_name = self.get_dpu_docker_image_name() + cmd = f'docker ps | grep {docker_image_name}' + try: + output = self.runCMD(cmd) + pattern = f"[a-f0-9]*[\s]*{docker_image_name}" + docker_image_id = re.findall(pattern, output)[0].split(" ")[0] + return docker_image_id + except: + return None + + def run_docker_cmd(self, inp_cmd): + docker_image_id = self.get_dpu_docker_imageID() + if docker_image_id == None: + return None + cmd = f"docker exec {docker_image_id} " + cmd += inp_cmd + return self.runCMD(cmd) + + def runCMD(self,cmd): + try: + ret = subprocess.getoutput(cmd) + except Exception as e: + print("Exception in runCMD due to %s, cleaning up and exiting\n" % str(e)) + sys.exit(2) + return ret + + def get_board_id(self): + try: + board_id_hex = self.runCMD("cpldapp -r 0x80") + if board_id_hex: + board_id = int(board_id_hex, 16) + return board_id + except Exception as e: + print(f"Failed to get board id due to {e}") + return 0 + + def readline_txt_file(self, path): + try: + with open(path, 'r') as f: + output = f.readline() + return output.strip('\n') + except Exception: + pass + return '' + + def setup_cpldapp(self): + cmd = "cp /usr/share/sonic/platform/cpldapp /usr/local/bin" + self.runCMD(cmd) + cmd = "cp /usr/share/sonic/platform/libpal.so /lib/libpal.so" + self.runCMD(cmd) + cmd = "cp /usr/share/sonic/platform/liblogger.so /lib/liblogger.so" + self.runCMD(cmd) + diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/platform.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/platform.py new file mode 100644 index 000000000000..b96607c39c36 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/platform.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the platform information +# +############################################################################# + +try: + from sonic_platform_base.platform_base import PlatformBase + from sonic_platform.chassis import Chassis +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Platform(PlatformBase): + + def __init__(self): + PlatformBase.__init__(self) + self._chassis = Chassis() diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/proto/oper.proto b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/proto/oper.proto new file mode 100644 index 000000000000..2dc284be5108 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/proto/oper.proto @@ -0,0 +1,710 @@ +// +// {C} Copyright 2020 Pensando Systems Inc. All rights reserved +// +//------------------------------------------------------------------------------ +/// +/// \file +/// protobuf specification for operational info +/// +//------------------------------------------------------------------------------ + +syntax = "proto3"; +package operd; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/descriptor.proto"; +import "google/protobuf/any.proto"; + +service OperSvc { + // OperInfoSubscribe() API is used to subscribe for the events of interest; + // as and when events happen, they are streamed to the client + rpc OperInfoSubscribe (stream OperInfoRequest) returns (stream OperInfoResponse) {} +} + +extend google.protobuf.FieldOptions { + optional bool nullable = 65001; + optional bool embed = 65002; + optional string customtype = 65003; + optional string customname = 65004; + optional string jsontag = 65005; + optional string moretags = 65006; + optional string casttype = 65007; + optional string castkey = 65008; + optional string castvalue = 65009; + + optional bool stdtime = 65010; + optional bool stdduration = 65011; + optional bool wktpointer = 65012; + +} + +// API return codes (more descriptive than protobuf enums) +enum ApiStatus { + API_STATUS_OK = 0; // success + API_STATUS_ERR = 1; // catch-all error + API_STATUS_INVALID_ARG = 2; // invalid argument + API_STATUS_EXISTS_ALREADY = 3; // object already exists + API_STATUS_OUT_OF_MEM = 4; // out of memory + API_STATUS_NOT_FOUND = 5; // object not found + API_STATUS_OUT_OF_RESOURCE = 6; // out of resource + API_STATUS_RETRY = 7; // if operation can be retried + API_STATUS_OPERATION_NOT_ALLOWED = 8; // if operation is not allowed on + // specific type of object + API_STATUS_TIMEOUT = 9; // operation timed out + API_STATUS_HW_ENTRY_EXISTS = 10; // entry exists in h/w table + API_STATUS_OPERATION_NOT_SUPPORTED = 11; // operation not supported + API_STATUS_IN_USE = 12; // object in use + // sometimes APIs are skipped (i.e. not processed) because other + // APIs before that ran into some error + API_STATUS_OPERATION_NOT_PROCESSED = 13; + API_STATUS_IN_PROGRESS = 14; // operation in progress +} + +// IP address families +enum IPAF { + IP_AF_NONE = 0; + IP_AF_INET = 1; // IPv4 + IP_AF_INET6 = 2; // IPv6 +} + +// IP Address object +message IPAddress { + IPAF Af = 1 [(moretags) = "meta:mandatory"]; + // IP address family + oneof v4_or_v6 { + // IPv4 address + fixed32 V4Addr = 2; + // IPv6 address + bytes V6Addr = 3; + } +} + +// security rule action is one of the below +enum SecurityRuleAction { + SECURITY_RULE_ACTION_NONE = 0; + SECURITY_RULE_ACTION_ALLOW = 1; + SECURITY_RULE_ACTION_DENY = 2; +} + +// flow log type indicates whether log is generated when flow is +// created or closed +enum FlowLogType { + FLOW_LOG_TYPE_NONE = 0; + // flow log raised at the time of flow/session creation + FLOW_LOG_TYPE_OPEN = 1; + // flow log raised at the time of flow/session deletion + FLOW_LOG_TYPE_CLOSE = 2; + // flow log raised for long lived flows while flow is active + FLOW_LOG_TYPE_ACTIVE = 3; +} + +// flow open reason +enum FlowOpenReason { + FLOW_OPEN_REASON_NONE = 0; + // flow opened by flow miss packet + FLOW_OPEN_REASON_FLOW_MISS = 1; + // flow opened by flow sync from peer + FLOW_OPEN_REASON_FLOW_SYNC = 2; + // flow opened by bulk sync from peer + FLOW_OPEN_REASON_FULL_SYNC = 3; + // flow opened by vmotion sync + FLOW_OPEN_REASON_VMOTION = 4; +} + +// flow close reason +enum FlowCloseReason { + FLOW_CLOSE_REASON_NONE = 0; + // flow closed by user API + FLOW_CLOSE_REASON_USER = 1; + // flow closed by aging (idle, drop, close etc.,) timers + FLOW_CLOSE_REASON_AGING = 2; + // flow closed by vmotion sync + FLOW_CLOSE_REASON_VMOTION = 3; + // flow closed by TCP FIN packet + FLOW_CLOSE_REASON_TCP_FULL_CLOSE = 4; + // flow closed by TCP RST packet + FLOW_CLOSE_REASON_TCP_RESET = 5; + // flow closed by config + FLOW_CLOSE_REASON_CFG = 6; + // flow closed by config mismatch + FLOW_CLOSE_REASON_CFG_MISMATCH = 7; + // flow closed by link down + FLOW_CLOSE_REASON_LINK_DOWN = 8; + // flow closed by flow update error + FLOW_CLOSE_REASON_FLOW_UPDATE_ERR = 9; + // flow closed by internal error + FLOW_CLOSE_REASON_INTERNAL_ERR = 10; + // flow closed by ALG last data session delete + FLOW_CLOSE_REASON_ALG_LAST_DATA_SESS_DEL = 11; +} + +// flow key for non-IP flows +message MACFlowKey { + // subnet identifier + bytes Subnet = 1; + // source MAC address + uint64 SrcMAC = 2; + // destination MAC address + uint64 DstMAC = 3; + // 16 bits of Ethertype in the Ethernet header + uint32 EtherType = 4; +} + +// L4 portion of flow key tuple +message FlowL4Info { + // key fields for TCP/UDP flows + message TCPUDPInfo { + uint32 SrcPort = 1; + uint32 DstPort = 2; + } + // key fields for ICMP flows + message ICMPInfo { + uint32 Type = 1; + uint32 Code = 2; + uint32 Id = 3; + } + oneof l4_info { + TCPUDPInfo TcpUdpInfo = 1; + ICMPInfo IcmpInfo = 2; + } +} + +// flow key for IP flows +message IPFlowKey { + // VPC identifier + bytes VPCId = 1; + // source IP seen in the packet + IPAddress SrcIP = 2; + // destination IP seen in the packet + IPAddress DstIP = 3; + // IP protocol + uint32 IPProtocol = 4; + // L4 information of the flow key + FlowL4Info L4Info = 5; +} + +// flow key is either IP flow key or non-IP flow key +message FlowKey { + oneof key { + // flow key for the IPv4 and IPv6 flows + IPFlowKey IPFlowKey = 1; + // flow key for the non-IP flows + MACFlowKey MACFlowKey = 2; + } +} + +// protobuf format for flow logs (this is the format consumers will see flow +// logs in). The producer (e.g., VPP) will do just a binary dump to shared +// memory and a decoder (invoked by operd) will transform the contents into +// this format +message FlowLog { + // timestamp indicating when the flow is created/closed + uint64 Timestamp = 1; + // flow open log or flow close log + FlowLogType LogType = 2; + // flow key + FlowKey Key = 3; + // SessionId identifies unique id assigned for the the flow pair + // for the lifetime of the session + uint64 SessionId = 4; + // source interface of first packet in the session + // NOTE: this is source vnic's PF/VF/Tunnel uuid if the session is initiated + // locally (irrespective of whether destination is local or remote) and + // if the session is created because first packet came on uplink, this + // field is left empty + bytes SrcInterface = 5; + // source vnic's uuid if the session is originated from local workload, + // empty otherwise + bytes SrcVnic = 6; + // vpc of the client/initiator of the session + bytes SrcVPC = 7; + // vpc of the server/destination of the session + bytes DstVPC = 8; + // security policy id, if security policy was evaluated + bytes SecurityPolicy = 9; + // security policy rule id, if security policy was evaluated + bytes SecurityPolicyRule = 10; + // flow action taken + SecurityRuleAction FlowAction = 11; + // NAT-ed source IP after the rewrite, if any + IPAddress SrcNATIP = 12; + // source NAT port, if any + uint32 SrcNATPort = 13; + // NAT-ed destination IP after the rewrite, if any + IPAddress DstNATIP = 14; + // destination NAT port, if any + uint32 DstNATPort = 15; + // initiator flow octet count + uint64 IflowBytes = 16; + // initator flow packet count + uint64 IflowPackets = 17; + // responder flow octet count + uint64 RflowBytes = 18; + // responder flow packet count + uint64 RflowPackets = 19; + // vlan id in the received packet + uint32 SrcVlan = 20; + // security policy rule hw id, if security policy was evaluated + uint32 SecurityPloicyRuleId = 21; + // destination vnic uuid + // NOTE: + // 1. this is valid only in the case of Local-to-Local traffic scenario in the BITW_SERVICE_MODE + bytes DstVnic = 22; + // indicates if it is an encrypted flow + bool Encrypted = 23; + // flow open reason + FlowOpenReason OpenReason = 24; + // indicates if the flow is originated from the host + bool HostOrigin = 25; + // ingress security policy id of destination, if security policy was evaluated + bytes DstSecurityPolicy = 26; + // ingress secuiryt policy rule id of destination, if security policy was evaluated + bytes DstSecurityPolicyRule = 27; + // flow close reason + // NOTE: only applicable when LogType is FLOW_LOG_TYPE_CLOSE + FlowCloseReason CloseReason = 28; +} + +enum EventCategory { + NONE = 0; + // system related events (service events, system boot/reboot events, etc...) + SYSTEM = 1; + // network related events (linkmgr, bgp, etc...) + NETWORK = 2; + // resource related events (cpu, mem and disk usage) + RESOURCE = 3; + // learning related events (endpoint info) + LEARN = 4; + // upgrade/rollout related events + ROLLOUT = 5; + // system interrupt related events + INTERRUPT = 6; + // ha related events + HA = 7; + // workload related events + WORKLOAD = 8; +} + +// severity level of the event +enum EventSeverity { + DEBUG = 0; // only for debugging purposes + INFO = 1; // no action needed + WARN = 2; // no immediate action needed + CRITICAL = 3; // immediate attention required +} + +message EventSource { + // name of the component which generated the event + string Component = 1; + // name of the DSC node which generated the event + string NodeName = 2; +} + + +// public/Internet or Service/Infra address +enum AddressType { + ADDR_TYPE_NONE = 0; + ADDR_TYPE_PUBLIC = 1; + ADDR_TYPE_SERVICE = 2; +} + +// Endpoint info for learning +message EpLearnPkt { + // host interface on which packet was received + bytes HostIf = 1; + // packet as received upto a maximum size of 128 bytes + bytes Packet = 2; +} + +// NAT port block event specification +message NatPortblockEvent { + // unique key identifying the port block + bytes Id = 1; + // protocol + uint32 Protocol = 2; + // source NAT IP address + IPAddress SnatIP = 3; + // NAT address is from Internet or Cloud Infra space + AddressType AddressType = 4; +} + +extend google.protobuf.EnumValueOptions { + // event category + EventCategory Category = 100001; + + // event severity + EventSeverity Severity = 100002; + + // description for the event + string Description = 100003; +} + +enum EventType { + DSE_EVENT_TYPE_NONE = 0 [(Category) = NONE, + (Severity) = DEBUG, + (Description) = "Invalid event"]; + + // ----------------------------- SYSTEM events --------------------------- // + DSE_SERVICE_STARTED = 1 [(Category) = SYSTEM, + (Severity) = DEBUG, + (Description) = "DSE service started"]; + + DSE_SERVICE_STOPPED = 2 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "DSE related process has been stopped. System performance may be impacted. Further policy changes will not be applied to this DSE till it is reloaded. Recommendation is to collect techsupport and contact support."]; + + DSE_SYSTEM_COLDBOOT = 3 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "DSE cold booted"]; + + DSE_MEM_TEMP_ABOVE_THRESHOLD = 4 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "Memory temperature is above the critical threshold. SYSTEM performance may be degraded"]; + + DSE_MEM_TEMP_BELOW_THRESHOLD = 5 [(Category) = SYSTEM, + (Severity) = INFO, + (Description) = "Memory temperature has fallen below the critical threshold"]; + + DSE_CATTRIP_INTERRUPT = 6 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "Temperature has crossed a fatal threshold, and this DSE has been reloaded. Recommendation is to check environmental conditions."]; + + DSE_PANIC_EVENT = 7 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "Encountered a panic during the last boot. Recommendation is to collect techsupport and contact support."]; + + DSE_POST_DIAG_FAILURE_EVENT = 8 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "Post diag test failed"]; + + DSE_INFO_PCIEHEALTH_EVENT = 9 [(Category) = SYSTEM, + (Severity) = INFO, + (Description) = "Detected a pcie link health event"]; + + DSE_WARN_PCIEHEALTH_EVENT = 10 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "Detected a pcie link health warning"]; + + DSE_ERR_PCIEHEALTH_EVENT = 11 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "Detected PCIe link error. System performance may be impacted. Recommendation is to collect techsupport and contact support."]; + + DSE_FILESYSTEM_USAGE_ABOVE_THRESHOLD = 12 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "Usage of the filesystem partition is above threshold"]; + + DSE_FILESYSTEM_USAGE_BELOW_THRESHOLD = 13 [(Category) = SYSTEM, + (Severity) = INFO, + (Description) = "Usage of the filesystem partition is below threshold"]; + + DSE_SERVICE_RESTARTED = 14 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "DSE service restarted"]; + + DSE_PIPELINE_STUCK = 15 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "DSE datapath pipeline is stuck"]; + + DSE_EMMC_LIFETIME_EXCEEDED = 16 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "eMMC lifetime exceeded. Contact support."]; + + DSE_SYSTEM_RECOVERY_FAILED = 17 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "DSE firmware recovery failed"]; + + DSE_SYSTEM_HALTED = 18 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "Failure to recover DSE multiple times in a row"]; + + DSE_GRACEFUL_UPGRADE_FAILED_PRE_SWITCHOVER = 19 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "DSE firmware upgrade failed before firmware switchover"]; + + DSE_GRACEFUL_UPGRADE_FAILED_POST_SWITCHOVER = 20 [(Category) = SYSTEM, + (Severity) = CRITICAL, + (Description) = "DSE firmware upgrade failed after firmware switchover"]; + + DSE_CONFIG_LOST = 21 [(Category) = SYSTEM, + (Severity) = WARN, + (Description) = "DSE configuration is erased, potentially due to other critical events"]; + + // ----------------------------- Network events -------------------------- // + LINK_UP = 1001 [(Category) = NETWORK, + (Severity) = INFO, + (Description) = "Port link is up"]; + + LINK_DOWN = 1002 [(Category) = NETWORK, + (Severity) = WARN, + (Description) = "Port link is down"]; + + BGP_SESSION_ESTABLISHED = 1003 [(Category) = NETWORK, + (Severity) = INFO, + (Description) = "BGP session is established"]; + + BGP_SESSION_DOWN = 1004 [(Category) = NETWORK, + (Severity) = WARN, + (Description) = "BGP session is down"]; + + BGP_EVPN_DUP_MAC_IP = 1005 [(Category) = NETWORK, + (Severity) = WARN, + (Description) = "BGP EVPN detected duplicate tenant MAC/IP"]; + + BGP_EVPN_DUP_MAC_IP_CLEAR = 1006 [(Category) = NETWORK, + (Severity) = INFO, + (Description) = "BGP EVPN duplicate tenant MAC/IP resolved"]; + + // ----------------------------- Resource events ------------------------- // + DSE_MAX_SESSION_LIMIT_APPROACH = 2001 [(Category) = RESOURCE, + (Severity) = WARN, + (Description) = "Session count approaching maximum supported limit"]; + + DSE_SESSION_USAGE_BELOW_THRESHOLD = 2002 [(Category) = RESOURCE, + (Severity) = INFO, + (Description) = "Session count below threshold"]; + + DSE_SESSION_LEARN_PAUSED = 2003 [(Category) = RESOURCE, + (Severity) = CRITICAL, + (Description) = "DSE maximum session limit reached, new sessions are dropped"]; + + DSE_SESSION_LEARN_RESUMED = 2004 [(Category) = RESOURCE, + (Severity) = INFO, + (Description) = "Session learning re-enabled after pause"]; + + DSE_MAX_ALG_SESSION_LIMIT_APPROACH = 2005 [(Category) = RESOURCE, + (Severity) = WARN, + (Description) = "ALG session count approaching maximum supported limit"]; + + DSE_ALG_SESSION_USAGE_BELOW_THRESHOLD = 2006 [(Category) = RESOURCE, + (Severity) = INFO, + (Description) = "ALG session count below 90% threshold"]; + + DSE_ALG_SESSION_LEARN_PAUSED = 2007 [(Category) = RESOURCE, + (Severity) = CRITICAL, + (Description) = "DSE maximum ALG session limit reached, new ALG sessions are dropped"]; + + DSE_ALG_SESSION_LEARN_RESUMED = 2008 [(Category) = RESOURCE, + (Severity) = INFO, + (Description) = "ALG session learning re-enabled after pause"]; + + // ----------------------------- Learn events ---------------------------- // + LEARN_PKT = 3001 [(Category) = LEARN, + (Severity) = INFO, + (Description) = "Packet received resulting in new endpoint learning or updates to known endpoint"]; + + // ----------------------------- Rollout events -------------------------- // + + // ----------------------------- Interrupt events ------------------------ // + DSE_HW_RMA_INTERRUPT = 4001 [(Category) = INTERRUPT, + (Severity) = CRITICAL, + (Description) = "Hardware RMA interrupt has been triggered"]; + + DSE_FATAL_INTERRUPT = 4002 [(Category) = INTERRUPT, + (Severity) = CRITICAL, + (Description) = "Fatal interrupt has been triggered"]; + + DSE_ERROR_INTERRUPT = 4003 [(Category) = INTERRUPT, + (Severity) = WARN, + (Description) = "Error interrupt has been triggered"]; + + // ----------------------------- NAT events ---------------------------- // + NAT_PORT_USAGE_THRESHOLD_EXCEEDED = 5001 [(Category) = RESOURCE, + (Severity) = WARN, + (Description) = "Request to allocate more NAT portblocks"]; + + // ----------------------------- HA events ----------------------------- // + HA_SOCKET_INIT_FAILED = 6001 [(Category) = HA, + (Severity) = CRITICAL, + (Description) = "HA socket initialization failed"]; + + HA_PEER_CONNECTION_DOWN = 6002 [(Category) = HA, + (Severity) = WARN, + (Description) = "HA connection between local and peer node is down"]; + + HA_PEER_CONNECTION_UP = 6003 [(Category) = HA, + (Severity) = INFO, + (Description) = "HA connection between local and peer node is up"]; + + HA_VIP_UP = 6004 [(Category) = HA, + (Severity) = INFO, + (Description) = "HA VIP instance UP"]; + + HA_VIP_DOWN = 6005 [(Category) = HA, + (Severity) = INFO, + (Description) = "HA VIP instance down"]; + + HA_VIP_EXIT = 6006 [(Category) = HA, + (Severity) = CRITICAL, + (Description) = "HA VIP instance exited due to failure"]; + + HA_FULL_FLOW_SYNC_START = 6007 [(Category) = HA, + (Severity) = INFO, + (Description) = "HA full flow sync has started"]; + + HA_FULL_FLOW_SYNC_END = 6008 [(Category) = HA, + (Severity) = INFO, + (Description) = "HA full flow sync has completed"]; + + HA_VERSION_NEGOTIATION_FAILED = 6009 [(Category) = HA, + (Severity) = CRITICAL, + (Description) = "HA version negotiation with peer failed"]; + + HA_DATAPATH_HEARTBEAT_FAILURE = 6010 [(Category) = HA, + (Severity) = CRITICAL, + (Description) = "HA datapath heartbeat with peer failed"]; + + HA_STOP_START_REQUIRED = 6011 [(Category) = HA, + (Severity) = WARN, + (Description) = "HA stop and start API needs to be invoked"]; + + HA_FLOW_RECONCILE_REQUIRED = 6012 [(Category) = HA, + (Severity) = WARN, + (Description) = "HA flow reconcile API needs to be invoked"]; + + // --------------------------- WORKLOAD events --------------------------- // + + VNIC_SESSION_COUNT_ABOVE_LIMIT = 7001 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's total session count exceeded configured limit"]; + + VNIC_SESSION_COUNT_BELOW_LIMIT = 7002 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's total session count dropped below configured limit"]; + + VNIC_SESSION_THRESHOLD_EXCEEDED = 7003 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's total session count exceeded configiured threshold, new sessions will be dropped once limit is reached"]; + + VNIC_SESSION_WITHIN_THRESHOLD = 7004 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's total session count dropped below the configured threshold"]; + + VNIC_TCP_SESSION_COUNT_ABOVE_LIMIT = 7005 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's TCP session count exceeded configured limit"]; + + VNIC_TCP_SESSION_COUNT_BELOW_LIMIT = 7006 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's TCP session count dropped below configured limit"]; + + VNIC_TCP_SESSION_THRESHOLD_EXCEEDED = 7007 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's TCP session count exceeded configiured threshold, new sessions will be dropped once limit is reached"]; + + VNIC_TCP_SESSION_WITHIN_THRESHOLD = 7008 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's TCP session count dropped below the configured threshold"]; + + VNIC_UDP_SESSION_COUNT_ABOVE_LIMIT = 7009 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's UDP session count exceeded configured limit"]; + + VNIC_UDP_SESSION_COUNT_BELOW_LIMIT = 7010 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's UDP session count dropped below configured limit"]; + + VNIC_UDP_SESSION_THRESHOLD_EXCEEDED = 7011 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's UDP session count exceeded configiured threshold, new sessions will be dropped once limit is reached"]; + + VNIC_UDP_SESSION_WITHIN_THRESHOLD = 7012 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's UDP session count dropped below the configured threshold"]; + + VNIC_ICMP_SESSION_COUNT_ABOVE_LIMIT = 7013 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's ICMP session count exceeded configured limit"]; + + VNIC_ICMP_SESSION_COUNT_BELOW_LIMIT = 7014 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's ICMP session count dropped below configured limit"]; + + VNIC_ICMP_SESSION_THRESHOLD_EXCEEDED = 7015 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's ICMP session count exceeded configiured threshold, new sessions will be dropped once limit is reached"]; + + VNIC_ICMP_SESSION_WITHIN_THRESHOLD = 7016 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's ICMP session count dropped below the configured threshold"]; + + VNIC_OTHER_SESSION_COUNT_ABOVE_LIMIT = 7017 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's ICMP session count exceeded configured limit"]; + + VNIC_OTHER_SESSION_COUNT_BELOW_LIMIT = 7018 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's non-TCP/UDP/ICMP session count dropped below configured limit"]; + + VNIC_OTHER_SESSION_THRESHOLD_EXCEEDED = 7019 [(Category) = WORKLOAD, + (Severity) = WARN, + (Description) = "vnic's non-TCP/UDP/ICMP session count exceeded configiured threshold, new sessions will be dropped once limit is reached"]; + + VNIC_OTHER_SESSION_WITHIN_THRESHOLD = 7020 [(Category) = WORKLOAD, + (Severity) = INFO, + (Description) = "vnic's non-TCP/UDP/ICMP session count dropped below the configured threshold"]; +} + +message EventFilter { + // if no filters specified, all events are considered + repeated EventType Types = 1; +} + +message Event { + EventType Type = 1; + EventCategory Category = 2; + EventSeverity Severity = 3; + EventSource Source = 4; + google.protobuf.Timestamp Time = 5 [(stdtime) = true]; + string Description = 6; + oneof event_info { + // TODO: deprecate Message and add EventType specific info + string Message = 7; + // information specific to learn event + EpLearnPkt EpLearnPktInfo = 8; + NatPortblockEvent NatPbEvent = 9; + } +} + +// Operational Info exported by operd plugin through push / subscription model +enum OperInfoType { + OPER_INFO_TYPE_NONE = 0; + OPER_INFO_TYPE_EVENT = 1; + OPER_INFO_TYPE_FLOW_LOG = 2; +} + +// OperInfoOp indicates whether client is subscribing or unsubscribing +enum OperInfoOp { + OPER_INFO_OP_NONE = 0; + OPER_INFO_OP_SUBSCRIBE = 1; + OPER_INFO_OP_UNSUBSCRIBE = 2; +} + +message OperInfoSpec { + // oper info of interest + OperInfoType InfoType = 1; + // action is either subscribe or unsubscribe + OperInfoOp Action = 2; + // any additional InfoType specific filters + oneof info_filter { + // filter for interested events + EventFilter EventFilter = 3; + } +} + +// OperInfoRequest captures client's intereste to subscribe for operational +// information +message OperInfoRequest { + // list of requests + repeated OperInfoSpec Request = 1; +} + +message OperInfoResponse { + ApiStatus Status = 1; + OperInfoType InfoType = 2; + // operational information specific to InfoType + oneof oper_info { + // information specific for events + Event EventInfo = 3; + FlowLog FlowLogInfo = 4; + } +} diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/psu.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/psu.py new file mode 100644 index 000000000000..9bee0fc9e8a5 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/psu.py @@ -0,0 +1,20 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the PSUs status which are available in the platform +# +############################################################################# + +try: + from sonic_platform_base.psu_base import PsuBase + from .helper import APIHelper +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class Psu(PsuBase): + """Platform-specific Psu class""" + + def __init__(self, psu_index=0): + PsuBase.__init__(self) \ No newline at end of file diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/sensor.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/sensor.py new file mode 100644 index 000000000000..3a58e3fa3cdf --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/sensor.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +######################################################################## +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the voltage and current information which are available in the platform +# +######################################################################## + + +try: + from sonic_platform_base.sensor_base import SensorBase + import os + import syslog +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +# [ Sensor-Name, sysfs] +VOLTAGE_SENSOR_MAPPING = [ + ["Voltage sensor 1", "/sys/class/hwmon/hwmon0/in2_input"], + ["Voltage sensor 2", "/sys/class/hwmon/hwmon1/in2_input"], + ["Voltage sensor 3", "/sys/class/hwmon/hwmon2/in2_input"] +] + +# [ Sensor-Name, sysfs] +CURRENT_SENSOR_MAPPING = [ + ["Current sensor 1", "/sys/class/hwmon/hwmon0/curr1_input"], + ["Current sensor 2", "/sys/class/hwmon/hwmon1/curr1_input"], + ["Current sensor 3", "/sys/class/hwmon/hwmon2/curr1_input"] +] + +class VoltageSensor(SensorBase): + """ + Abstract base class for interfacing with a voltage sensor module + """ + @classmethod + def _validate_voltage_sensors(cls): + for [sensor_name, sensor_hwmon] in VOLTAGE_SENSOR_MAPPING: + if not os.path.exists(sensor_hwmon): + return False + return True + + @classmethod + def get_type(cls): + return "SENSOR_TYPE_VOLTAGE" + + @classmethod + def get_unit(cls): + return "V" + + def __init__(self, voltage_sensor_index): + SensorBase.__init__(self) + self.index = voltage_sensor_index + self.sensor_hwmon_path = None + sensor_hwmon = VOLTAGE_SENSOR_MAPPING[self.index][1] + if os.path.exists(sensor_hwmon): + self.sensor_hwmon_path = sensor_hwmon + + def get_name(self): + return VOLTAGE_SENSOR_MAPPING[self.index][0] + + def get_value(self): + voltage = 0.0 + try: + with open(self.sensor_hwmon_path, 'r') as file: + voltage = float(int(file.read())/1000) + except Exception: + return None + return voltage + +class CurrentSensor(SensorBase): + """ + Abstract base class for interfacing with a current sensor module + """ + @classmethod + def _validate_current_sensors(cls): + for [sensor_name, sensor_hwmon] in CURRENT_SENSOR_MAPPING: + if not os.path.exists(sensor_hwmon): + return False + return True + + @classmethod + def get_type(cls): + return "SENSOR_TYPE_CURRENT" + + @classmethod + def get_unit(cls): + return "mA" + + def __init__(self, current_sensor_index): + SensorBase.__init__(self) + self.index = current_sensor_index + self.sensor_hwmon_path = None + sensor_hwmon = CURRENT_SENSOR_MAPPING[self.index][1] + if os.path.exists(sensor_hwmon): + self.sensor_hwmon_path = sensor_hwmon + + def get_name(self): + return CURRENT_SENSOR_MAPPING[self.index][0] + + def get_value(self): + current = 0 + try: + with open(self.sensor_hwmon_path, 'r') as file: + current = int(file.read()) + except Exception: + return None + return current diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/thermal.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/thermal.py new file mode 100644 index 000000000000..77cb4f7e8a21 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/thermal.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +######################################################################## +# Pensando +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Thermals' information which are available in the platform +# +######################################################################## + + +try: + from sonic_platform_base.thermal_base import ThermalBase + import os + import syslog + from .helper import APIHelper +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +g_board_id = None + +class Thermal(ThermalBase): + """Pensando-specific Thermal class""" + + # [ Sensor-Name] + SENSOR_MAPPING = [ + 'Board Temperature', + 'Die Temperature' + ] + + SENSOR_MAPPING_MTFUJI = [ + ["Die temperature", "/sys/class/hwmon/hwmon0/temp2_input"], + ["Board temperature", "/sys/class/hwmon/hwmon0/temp1_input"], + ["Thermal sensor 1", "/sys/class/hwmon/hwmon0/temp1_input"], + ["Thermal sensor 2", "/sys/class/hwmon/hwmon1/temp1_input"], + ["Thermal sensor 3", "/sys/class/hwmon/hwmon2/temp1_input"] + ] + + @classmethod + def _thermals_available(cls): + global g_board_id + from sonic_platform.helper import APIHelper + apiHelper = APIHelper() + g_board_id = apiHelper.get_board_id() + temp_hwmon = '/sys/bus/i2c/devices/i2c-0/0-004c/hwmon' + if g_board_id == 130: + temp_hwmon = '/sys/class/hwmon/hwmon0/temp1_input' + if os.path.exists(temp_hwmon): + return True + return False + + def __init__(self, thermal_index, sfp = None): + global g_board_id + ThermalBase.__init__(self) + self.index = thermal_index + 1 + self.board_id = g_board_id + if self.board_id != 130: + temp_hwmon = '/sys/bus/i2c/devices/i2c-0/0-004c/hwmon' + self.temp_dir = None + if os.path.exists(temp_hwmon): + self.temp_dir = temp_hwmon + '/' + os.listdir(temp_hwmon)[0] + + def get_name(self): + """ + Retrieves the name of the thermal + Returns: + string: The name of the thermal + """ + if self.board_id == 130: + return self.SENSOR_MAPPING_MTFUJI[self.index - 1][0] + return self.SENSOR_MAPPING[self.index - 1] + + def get_presence(self): + """ + Retrieves the presence of the thermal + Returns: + bool: True if thermal is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the Thermal + Returns: + string: Model/part number of Thermal + """ + return 'NA' + + def get_serial(self): + """ + Retrieves the serial number of the Thermal + Returns: + string: Serial number of Thermal + """ + return 'NA' + + def get_status(self): + """ + Retrieves the operational status of the thermal + Returns: + A boolean value, True if thermal is operating properly, + False if not + """ + return True + + def get_temperature(self): + """ + Retrieves current temperature reading from thermal + Returns: + A float number of current temperature in Celsius up to + nearest thousandth of one degree Celsius, e.g. 30.125 + """ + temperature = 0.0 + if(self.get_presence()): + try : + temp_file = None + if self.board_id == 130: + temp_file = self.SENSOR_MAPPING_MTFUJI[self.index - 1][1] + else: + temp_file = self.temp_dir +'/temp{0}_input'.format(str(self.index)) + temperature = float(open(temp_file).read()) / 1000.0 + except Exception: + pass + return float(temperature) + + def get_high_critical_threshold(self): + """ + Retrieves the high critical threshold temperature of thermal + + Returns: + A float number, the high critical threshold temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + temperature = 0.0 + if(self.get_presence()): + try : + temp_file = self.temp_dir +'/temp{0}_crit'.format(str(self.index)) + temperature = float(open(temp_file).read()) / 1000.0 + except Exception: + pass + return float(temperature) + + def set_high_critical_threshold(self, temperature): + """ + Sets the critical high threshold temperature of thermal + + Args : + temperature: A float number up to nearest thousandth of one degree Celsius, + e.g. 30.125 + + Returns: + A boolean, True if threshold is set successfully, False if not + """ + return True + + diff --git a/platform/pensando/sonic-platform-modules-dpu/sonic_platform/watchdog.py b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/watchdog.py new file mode 100644 index 000000000000..58c8a28fbec8 --- /dev/null +++ b/platform/pensando/sonic-platform-modules-dpu/sonic_platform/watchdog.py @@ -0,0 +1,50 @@ +# {C} Copyright 2023 AMD Systems Inc. All rights reserved +############################################################################# +# Pensando +# +# Watchdog contains an implementation of SONiC Platform Base API +# +############################################################################# + +try: + import os + import time + import threading + from sonic_platform_base.watchdog_base import WatchdogBase + from .helper import APIHelper + import syslog +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class Watchdog(WatchdogBase): + + def __init__(self): + WatchdogBase.__init__(self) + + def arm(self, seconds): + """ + For Pensando, watchdog gets handled by pensando image running on + docker:dpu docker. returning -1. + """ + return -1 + + def disarm(self): + """ + For Pensando, watchdog gets handled by pensando image running on + docker:dpu docker. Setting disarm true to avoid watchdog-timer.service errors + """ + return True + + def is_armed(self): + """ + For Pensando, watchdog gets handled by pensando image running on + docker:dpu docker. returning False + """ + return False + + def get_remaining_time(self): + """ + For Pensando, watchdog gets handled by pensando image running on + docker:dpu docker. returning -1. + """ + return -1 \ No newline at end of file From dddb6cc1e0aa3b1d45be60a621279663adeb0175 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Thu, 20 Feb 2025 07:59:27 +0800 Subject: [PATCH 25/47] Install python3 FIPS packages (#21682) Install python3 FIPS packages Why I did it Python3 FIPS package not installed: admin@vlab-01:~$ sudo apt list --installed | grep libpython libpython3-stdlib/now 3.11.2-1+b1 amd64 [installed,local] libpython3.11-minimal/now 3.11.2-6+deb12u5 amd64 [installed,local] libpython3.11-stdlib/now 3.11.2-6+deb12u5 amd64 [installed,local] libpython3.11/now 3.11.2-6+deb12u5 amd64 [installed,local] How I did it Add python3 FIPS package to install list. Purge all python3 dev package before install python3 FIPS package, because these dev package will break dependency How to verify it Pass all UT. Manually confirm the package installed --- files/build_templates/sonic_debian_extension.j2 | 14 ++++++++++++++ rules/sonic-fips.mk | 6 +++++- slave.mk | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 6ff46082547d..55f8f3cc3ed0 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -1052,7 +1052,12 @@ sudo cp files/build_templates/startup_tsa_tsb.service $FILESYSTEM_ROOT_USR_LIB_S sudo cp $BUILD_TEMPLATES/sonic.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target +# All Python development packages must be removed, as they will conflict with the dependencies of the Python FIPS packages sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python3-dev +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y libpython3-dev +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y '^python3\.[0-9]+-dev' +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y '^libpython3\.[0-9]+-dev' + sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get clean -y sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get autoremove -y @@ -1177,6 +1182,15 @@ sudo rm -rf $FILESYSTEM_ROOT/tmp/mask_disabled_services.py sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install python3-dbus +# Install FIPS python package will break apt-get purge command, so install after all purge command finish +if [ "$INCLUDE_FIPS" == y ]; then + {% if installer_python_debs.strip() -%} + {% for deb in installer_python_debs.strip().split(' ') -%} + sudo dpkg --root=$FILESYSTEM_ROOT -i {{deb}} + {% endfor %} + {% endif %} +fi + {% if installer_debs.strip() -%} {% for deb in installer_debs.strip().split(' ') -%} diff --git a/rules/sonic-fips.mk b/rules/sonic-fips.mk index 6adb95c57dc0..c1f2c016ee62 100644 --- a/rules/sonic-fips.mk +++ b/rules/sonic-fips.mk @@ -77,7 +77,11 @@ FIPS_PACKAGE_ALL = $(SYMCRYPT_OPENSSL) $(FIPS_DERIVED_TARGET) ifeq ($(INCLUDE_FIPS), y) - FIPS_BASEIMAGE_INSTALLERS = $(FIPS_OPENSSL_LIBSSL) $(FIPS_OPENSSL_LIBSSL_DEV) $(FIPS_OPENSSL) $(SYMCRYPT_OPENSSL) $(FIPS_OPENSSH_CLIENT) $(FIPS_OPENSSH) $(FIPS_OPENSSH_SFTP_SERVER) $(FIPS_OPENSSH_SERVER) $(FIPS_KRB5) + FIPS_BASEIMAGE_INSTALLERS = $(FIPS_OPENSSL_LIBSSL) $(FIPS_OPENSSL_LIBSSL_DEV) $(FIPS_OPENSSL) $(SYMCRYPT_OPENSSL) \ + $(FIPS_OPENSSH_CLIENT) $(FIPS_OPENSSH) $(FIPS_OPENSSH_SFTP_SERVER) $(FIPS_OPENSSH_SERVER) $(FIPS_KRB5) + + # Python need install after purge python-dev + FIPS_BASEIMAGE_PYTHON_INSTALLERS = $(FIPS_LIBPYTHON_MINIMAL) $(FIPS_LIBPYTHON_STDLIB) $(FIPS_LIBPYTHON) $(FIPS_PYTHON_MINIMAL) $(FIPS_PYTHON) SONIC_MAKE_DEBS += $(SYMCRYPT_OPENSSL) $(foreach package,$(FIPS_DERIVED_TARGET),$(eval $(call add_extra_package,$(SYMCRYPT_OPENSSL),$(package)))) diff --git a/slave.mk b/slave.mk index f3d9ad3e237e..7a92768d7ee4 100644 --- a/slave.mk +++ b/slave.mk @@ -1460,6 +1460,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export kube_docker_proxy="$(KUBE_DOCKER_PROXY)" export enable_pfcwd_on_start="$(ENABLE_PFCWD_ON_START)" export installer_debs="$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$($*_INSTALLS) $(FIPS_BASEIMAGE_INSTALLERS))" + export installer_python_debs="$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(FIPS_BASEIMAGE_PYTHON_INSTALLERS))" export lazy_installer_debs="$(foreach deb, $($*_LAZY_INSTALLS),$(foreach device, $($(deb)_PLATFORM),$(addprefix $(device)@, $(IMAGE_DISTRO_DEBS_PATH)/$(deb))))" export lazy_build_installer_debs="$(foreach deb, $($*_LAZY_BUILD_INSTALLS), $(addprefix $($(deb)_MACHINE)|,$(deb)))" export installer_images="$(foreach docker, $($*_DOCKERS),\ From a8134df44b6ed060342c289c41ede819e0505c2f Mon Sep 17 00:00:00 2001 From: abdosi <58047199+abdosi@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:16:08 -0800 Subject: [PATCH 26/47] [chassis-packet] Change the Orchagent redis pop batch size to 128 to handle link notification faster. (#21771) What I did: Change the Orchagent redis pop batch size to 128 to handle link notification faster. Why I did: As part of Ixia BGP convergence test https://github.com/sonic-net/sonic-mgmt/blob/master/tests/snappi_tests/multidut/bgp/test_bgp_outbound_uplink_multi_po_flap.py we found that because of SAI programming slowness which is around 1500 Routes/sec. [Takes about approx 40sec+/- to program 60K routes across multiple iteration] Because of above slowness even if we have Link Notification available Orchagent will not process it immediately as current OA will process 1024 Entries (Route entries in our case) before it can pick Link Notification for processing. Now 1K entries can take about 2 sec+/- and if link notification are little spread out [not back 2 back] we can have batch of 1K entries which accumulate SAI delay of 2 sec. To optimize Link processing and give more chance to OA to pick Link Notification we reduce OA processing to 128 entries and this helped to reduce convergence time to about overall 2 sec. Changing OA processing from 1K to 128 entries does not have any impact of Route Programming as SAI slowness seems be tied with sequential processing at 1500 Routes per/sec. However this is helpful in processing Link Notification quicker. For our test it reduce Convergence time from about 12-15sec to 2 sec. How I verify: Ran above ixia test in multiple iteration with both 1024 and 128 pop batch size and compared the performance. --------- Signed-off-by: Abhishek Dosi --- dockers/docker-orchagent/orchagent.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dockers/docker-orchagent/orchagent.sh b/dockers/docker-orchagent/orchagent.sh index 28ce24303891..28067db7ccf5 100755 --- a/dockers/docker-orchagent/orchagent.sh +++ b/dockers/docker-orchagent/orchagent.sh @@ -18,8 +18,15 @@ fi mkdir -p /var/log/swss ORCHAGENT_ARGS="-d /var/log/swss " -# Set orchagent pop batch size to 1024 -ORCHAGENT_ARGS+="-b 1024 " +LOCALHOST_SWITCHTYPE=`sonic-db-cli CONFIG_DB hget "DEVICE_METADATA|localhost" "switch_type"` +if [[ x"${LOCALHOST_SWITCHTYPE}" == x"chassis-packet" ]]; then + # Set orchagent pop batch size to 128 for faster link notification handling + # during route-churn + ORCHAGENT_ARGS+="-b 128 " +else + # Set orchagent pop batch size to 1024 + ORCHAGENT_ARGS+="-b 1024 " +fi # Set synchronous mode if it is enabled in CONFIG_DB SYNC_MODE=$(echo $SWSS_VARS | jq -r '.synchronous_mode') From 855c58be8e3d3a8fcf095d4624a4be5db3e10589 Mon Sep 17 00:00:00 2001 From: abdosi <58047199+abdosi@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:17:27 -0800 Subject: [PATCH 27/47] [chassis-packet] Allow Fallback Route to get programmed on Downstream LC (#21775) What/Why I did: Initially I made the change that Fallback Route [routes from AH on Upstream LC] not to get programmed [mark them as deny] on Downstream LC's as reasoning was that on Downstream LC's can forward them based on Default-route. However that assumption is correct for example we have topology like this: RH is connected to ASIC0 of Upstream LC AH is connected to ASIC1 of Upstream LC Downstream LC will learn route from RH [including default-route] and will only forward to ASIC0 of upstream LC . Above assumption was fine if we always have AH and RH connected to same ASIC of Upstream LC. How I verify: UT updated Manual Verification. --- .../frr/bgpd/templates/internal/policies.conf.j2 | 6 ++++-- .../data/internal/policies.conf/result_chasiss_packet.conf | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/policies.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/policies.conf.j2 index e6eccc75fae4..c0e49cc90405 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/policies.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/policies.conf.j2 @@ -39,8 +39,9 @@ route-map FROM_BGP_INTERNAL_PEER_V4 permit 2 on-match next ! {% if CONFIG_DB__DEVICE_METADATA['localhost']['subtype'] == 'DownstreamLC' %} -route-map FROM_BGP_INTERNAL_PEER_V4 deny 3 +route-map FROM_BGP_INTERNAL_PEER_V4 permit 3 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY + set comm-list DEVICE_INTERNAL_FALLBACK_COMMUNITY delete {% else %} route-map FROM_BGP_INTERNAL_PEER_V4 permit 3 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY @@ -63,8 +64,9 @@ route-map FROM_BGP_INTERNAL_PEER_V6 permit 3 on-match next ! {% if CONFIG_DB__DEVICE_METADATA['localhost']['subtype'] == 'DownstreamLC' %} -route-map FROM_BGP_INTERNAL_PEER_V6 deny 4 +route-map FROM_BGP_INTERNAL_PEER_V6 permit 4 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY + set comm-list DEVICE_INTERNAL_FALLBACK_COMMUNITY delete {% else %} route-map FROM_BGP_INTERNAL_PEER_V6 permit 4 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY diff --git a/src/sonic-bgpcfgd/tests/data/internal/policies.conf/result_chasiss_packet.conf b/src/sonic-bgpcfgd/tests/data/internal/policies.conf/result_chasiss_packet.conf index 5569f3a5d392..d67849a86fe2 100644 --- a/src/sonic-bgpcfgd/tests/data/internal/policies.conf/result_chasiss_packet.conf +++ b/src/sonic-bgpcfgd/tests/data/internal/policies.conf/result_chasiss_packet.conf @@ -15,8 +15,9 @@ route-map FROM_BGP_INTERNAL_PEER_V4 permit 2 set local-preference 80 on-match next ! -route-map FROM_BGP_INTERNAL_PEER_V4 deny 3 +route-map FROM_BGP_INTERNAL_PEER_V4 permit 3 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY + set comm-list DEVICE_INTERNAL_FALLBACK_COMMUNITY delete ! route-map FROM_BGP_INTERNAL_PEER_V6 permit 1 set ipv6 next-hop prefer-global @@ -32,8 +33,9 @@ route-map FROM_BGP_INTERNAL_PEER_V6 permit 3 set local-preference 80 on-match next ! -route-map FROM_BGP_INTERNAL_PEER_V6 deny 4 +route-map FROM_BGP_INTERNAL_PEER_V6 permit 4 match community DEVICE_INTERNAL_FALLBACK_COMMUNITY + set comm-list DEVICE_INTERNAL_FALLBACK_COMMUNITY delete ! route-map TO_BGP_INTERNAL_PEER_V4 permit 1 match ip address prefix-list PL_LoopbackV4 From b5937982a7b09fd971a1ce564d9731edb2133635 Mon Sep 17 00:00:00 2001 From: Dayou Liu <113053330+dayouliu1@users.noreply.github.com> Date: Wed, 19 Feb 2025 18:11:36 -0800 Subject: [PATCH 28/47] Add conserver to sonic-mgmt container (#21531) Modify the sonic-mgmt Dockerfile to install the conserver package. This is needed for running dut_console tests through a conserver connection. --- dockers/docker-sonic-mgmt/Dockerfile.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/dockers/docker-sonic-mgmt/Dockerfile.j2 b/dockers/docker-sonic-mgmt/Dockerfile.j2 index ede9751820c4..831786288c29 100755 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -10,6 +10,7 @@ RUN apt-get update && apt-get install -y apt-transport-https \ build-essential \ ca-certificates \ cmake \ + conserver-client \ curl \ default-jre \ git \ From 0fd75cd1362567dcc228d2bf3e0b8901f16bf016 Mon Sep 17 00:00:00 2001 From: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:52:05 +0800 Subject: [PATCH 29/47] Fix ssh too open permission issue in sonic-mgmt image. (#21757) Why I did it Previously, the sonic-mgmt image encountered an issue where the SSH configuration was overly permissive, preventing the Docker container from starting successfully. The error message is provided below. This PR addresses and resolves the issue. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_rsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_ecdsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/etc/ssh/ssh_host_ed25519_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. sshd: no hostkeys available -- exiting. ERROR: failed to start SSH service How I did it Add a step to reset permissions under the specific folder as #20346, which faced the same issue. How to verify it Same as #21184 --- .azure-pipelines/docker-sonic-mgmt-py3-only.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml index 04f34b251f57..132bf3cca7d1 100644 --- a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml +++ b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml @@ -38,6 +38,12 @@ stages: - template: cleanup.yml - checkout: self clean: true + + - script: | + set -x + sudo setfacl -R -b $(Agent.BuildDirectory) + displayName: 'setfacl' + - bash: | set -xe git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data src/sonic-dash-api From d791fe56646ff0bff2cafaf916b4a0f999029fd9 Mon Sep 17 00:00:00 2001 From: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com> Date: Thu, 20 Feb 2025 11:28:57 +0800 Subject: [PATCH 30/47] Fix indentation issue (#21802) There is an indentation issue in PR #21757. This PR addresses this issue. --- .azure-pipelines/docker-sonic-mgmt-py3-only.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml index 132bf3cca7d1..e3434e39ffb4 100644 --- a/.azure-pipelines/docker-sonic-mgmt-py3-only.yml +++ b/.azure-pipelines/docker-sonic-mgmt-py3-only.yml @@ -42,7 +42,7 @@ stages: - script: | set -x sudo setfacl -R -b $(Agent.BuildDirectory) - displayName: 'setfacl' + displayName: 'setfacl' - bash: | set -xe From cd42237701182c6ad3fcda57eb7569d7aac51854 Mon Sep 17 00:00:00 2001 From: Sai Rama Mohan Reddy S <63886014+ram25794@users.noreply.github.com> Date: Thu, 20 Feb 2025 07:16:58 -0800 Subject: [PATCH 31/47] Install dmidecode package for ARM platforms (#21577) - Why I did it dmidecode is a package required for arm platforms including Nvidia DPUs. Platform dump in the tech support bundle was missing the dmidecode output. This occurred because dmidecode was not installed on the DPUs. - How I did it Added dmidecode to the list of required packages for installation and removed it from the installation path for the amd64 architecture only. - How to verify it Verified tech support bundle after the fix, and it now includes the dmidecode data as expected. Signed-off-by: ram25794 --- build_debian.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build_debian.sh b/build_debian.sh index e58153423c77..4b915d2d7e35 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -169,7 +169,7 @@ sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/linux-image-${LINUX_KERNEL_VERSI sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install acl if [[ $CONFIGURED_ARCH == amd64 ]]; then - sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install dmidecode hdparm + sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install hdparm fi ## Update initramfs for booting with squashfs+overlay @@ -379,6 +379,7 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in haveged \ fdisk \ gpg \ + dmidecode \ jq \ auditd \ linux-perf \ From 0cd0d8ddaa3b2e518ba34169df7b41628548ef96 Mon Sep 17 00:00:00 2001 From: Oleksandr Ivantsiv Date: Thu, 20 Feb 2025 07:18:12 -0800 Subject: [PATCH 32/47] [nvidia-bluefield] Load MFT drivers from the SONiC rootfs during BFB installation. (#21646) - Why I did it To ensure the Linux kernel and MFT drivers' signatures are aligned, load the MFT drivers in the BFB installer from the SONiC image root filesystem - How I did it Mount SONiC image rootfs and load drives from the rootfs. - How to verify it Compile and install BFB image. DPU NIC FW upgrade should finish successfully during the image installation --- .../nvidia-bluefield/installer/create_sonic_image | 7 ------- platform/nvidia-bluefield/installer/install.sh.j2 | 11 +++++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/platform/nvidia-bluefield/installer/create_sonic_image b/platform/nvidia-bluefield/installer/create_sonic_image index a131df4c3360..7369da514c6d 100755 --- a/platform/nvidia-bluefield/installer/create_sonic_image +++ b/platform/nvidia-bluefield/installer/create_sonic_image @@ -292,15 +292,8 @@ create_bfb_image() { copy_bin $tool done - kernel_mft=$(dpkg -l | grep kernel-mft-dkms-modules | awk '/^ii/ {print $2}') - if [[ $kernel_mft == "" ]]; then - echo "ERROR: kernel-mft-dkms-modules package is not installed" - exit 1 - fi - for tool in `dpkg -L mft` \ `dpkg -L mft-oem` \ - `dpkg -L $kernel_mft` \ `dpkg -L xmlstarlet | grep -v share` do if [ -d $tool ]; then diff --git a/platform/nvidia-bluefield/installer/install.sh.j2 b/platform/nvidia-bluefield/installer/install.sh.j2 index 3df6387e6044..7f36a73a6f47 100755 --- a/platform/nvidia-bluefield/installer/install.sh.j2 +++ b/platform/nvidia-bluefield/installer/install.sh.j2 @@ -235,6 +235,17 @@ if [[ $fw_upgrade_is_needed == "true" ]]; then ex mkdir -p $sonic_fs_mountpoint ex mount -t squashfs $sonic_fs_path $sonic_fs_mountpoint + kernel_mft=$(chroot $sonic_fs_mountpoint dpkg -l | grep kernel-mft-dkms-modules | awk '/^ii/ {print $2}') + mft_files=$(chroot $sonic_fs_mountpoint dpkg -L $kernel_mft) + + for f in $mft_files; do + if [[ $sonic_fs_mountpoint/$f != *.ko ]]; then + continue + fi + + insmod "$sonic_fs_mountpoint/$f" + done + ex mkdir -p /etc/mlnx/ ex ln -s /mnt/$image_dir/platform/fw/asic/fw-BF3.mfa /etc/mlnx/fw-BF3.mfa From 212b1746c2fcb887e098273d06e25123907bc8ac Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Thu, 20 Feb 2025 11:38:17 -0800 Subject: [PATCH 33/47] Count the number of undeliverable IPinIP packets (#20513) Count the number of undeliverable IPinIP packets --- .../docker-orchagent/tunnel_packet_handler.py | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/dockers/docker-orchagent/tunnel_packet_handler.py b/dockers/docker-orchagent/tunnel_packet_handler.py index 8d1b775ec9ce..39815c587780 100755 --- a/dockers/docker-orchagent/tunnel_packet_handler.py +++ b/dockers/docker-orchagent/tunnel_packet_handler.py @@ -13,6 +13,7 @@ from datetime import datetime from ipaddress import ip_interface from queue import Queue +from threading import Lock, Event, Thread from swsscommon.swsscommon import ConfigDBConnector, SonicV2Connector, \ DBConnector, Select, SubscriberStateTable @@ -29,6 +30,9 @@ STATE_DB = 'STATE_DB' APPL_DB = 'APPL_DB' +COUNTERS_DB = 'COUNTERS_DB' +TUNNEL_PKT_COUNTER_TEMPLATE = 'COUNTERS{}IPINIP_TUNNEL_CPU_PKTS' +COUNTER_KEY = 'RX_COUNT' PORTCHANNEL_INTERFACE_TABLE = 'PORTCHANNEL_INTERFACE' TUNNEL_TABLE = 'TUNNEL' PEER_SWITCH_TABLE = 'PEER_SWITCH' @@ -69,6 +73,10 @@ def __init__(self): self.config_db.connect() self.state_db = SonicV2Connector() self.state_db.connect(STATE_DB) + self.counters_db = SonicV2Connector() + self.counters_db.connect(COUNTERS_DB) + counters_db_separator = self.counters_db.get_db_separator(COUNTERS_DB) + self.tunnel_counter_table = TUNNEL_PKT_COUNTER_TEMPLATE.format(counters_db_separator) self._portchannel_intfs = None self.up_portchannels = None self.netlink_api = IPRoute() @@ -76,6 +84,7 @@ def __init__(self): self.self_ip = '' self.packet_filter = '' self.sniff_intfs = set() + self.pending_cmds = Queue() global portchannel_intfs portchannel_intfs = [name for name, _ in self.portchannel_intfs] @@ -304,6 +313,27 @@ def start_sniffer(self): while not hasattr(self.sniffer, 'stop_cb'): time.sleep(0.1) + def write_count_to_db(self): + while True: + # use a set to automatically deduplicate destination IPs + to_run = set() + + to_run.add(tuple(self.pending_cmds.get())) + pkt_count = 1 + while not self.pending_cmds.empty() and len(to_run) < 100: + to_run.add(tuple(self.pending_cmds.get())) + # we should always count each packet, but only ping for each unique IP + pkt_count += 1 + + for cmds in to_run: + logger.log_info("Running command '{}'".format(' '.join(cmds))) + subprocess.run(cmds, stdout=subprocess.DEVNULL) + try: + curr_count = int(self.counters_db.get(COUNTERS_DB, self.tunnel_counter_table, COUNTER_KEY)) + except TypeError: + curr_count = 0 + self.counters_db.set(COUNTERS_DB, self.tunnel_counter_table, COUNTER_KEY, str(curr_count + pkt_count)) + def ping_inner_dst(self, packet): """ Pings the inner destination IP for an encapsulated packet @@ -319,8 +349,7 @@ def ping_inner_dst(self, packet): cmds.append('-6') dst_ip = packet[IP].payload[inner_packet_type].dst cmds.append(dst_ip) - logger.log_info("Running command '{}'".format(' '.join(cmds))) - subprocess.run(cmds, stdout=subprocess.DEVNULL) + self.pending_cmds.put(cmds) def listen_for_tunnel_pkts(self): """ @@ -339,7 +368,6 @@ def listen_for_tunnel_pkts(self): logger.log_notice('Starting tunnel packet handler for {}' .format(self.packet_filter)) - app_db = DBConnector(APPL_DB, 0) lag_table = SubscriberStateTable(app_db, LAG_TABLE) sel = Select() @@ -355,7 +383,7 @@ def listen_for_tunnel_pkts(self): elif rc == Select.ERROR: raise Exception("Select() error") else: - lag, op, fvs = lag_table.pop() + lag, _, fvs = lag_table.pop() if self.sniffer_restart_required(lag, fvs): self.sniffer.stop() start = datetime.now() @@ -374,6 +402,8 @@ def run(self): Entry point for the TunnelPacketHandler class """ self.wait_for_portchannels() + db_thread = Thread(target=self.write_count_to_db, daemon=True) + db_thread.start() self.listen_for_tunnel_pkts() From 72543de5d616b4c3bf129d6b7b37bebeaff91539 Mon Sep 17 00:00:00 2001 From: arista-nwolfe <94405414+arista-nwolfe@users.noreply.github.com> Date: Thu, 20 Feb 2025 18:01:12 -0500 Subject: [PATCH 34/47] Fixing Wolverine LC's incorrect symlinks (#21779) * Fixing LC's pmon_daemon_control.json symlink In https://github.com/sonic-net/sonic-buildimage/pull/21512 we created separate directories for the different Wolverine SKUs but the pmon_daemon_control.json symlink was moved to the non-LC file in x86_64-arista_common * Fixing a few more LC symlinks that were pointing to the wrong files --- .../x86_64-arista_7800r3a_36d_lc/pmon_daemon_control.json | 2 +- .../system_health_monitoring_config.json | 2 +- device/arista/x86_64-arista_7800r3a_36d_lc/thermal_policy.json | 2 +- .../x86_64-arista_7800r3a_36dm2_lc/pmon_daemon_control.json | 2 +- .../system_health_monitoring_config.json | 2 +- .../arista/x86_64-arista_7800r3a_36dm2_lc/thermal_policy.json | 2 +- .../x86_64-arista_7800r3a_36p_lc/pmon_daemon_control.json | 2 +- .../system_health_monitoring_config.json | 2 +- device/arista/x86_64-arista_7800r3a_36p_lc/thermal_policy.json | 2 +- .../x86_64-arista_7800r3ak_36d2_lc/pmon_daemon_control.json | 2 +- .../system_health_monitoring_config.json | 2 +- .../arista/x86_64-arista_7800r3ak_36d2_lc/thermal_policy.json | 2 +- .../x86_64-arista_7800r3ak_36dm2_lc/pmon_daemon_control.json | 2 +- .../system_health_monitoring_config.json | 2 +- .../arista/x86_64-arista_7800r3ak_36dm2_lc/thermal_policy.json | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3a_36d_lc/pmon_daemon_control.json b/device/arista/x86_64-arista_7800r3a_36d_lc/pmon_daemon_control.json index 51d5ab7b0059..26ee0d4d1384 120000 --- a/device/arista/x86_64-arista_7800r3a_36d_lc/pmon_daemon_control.json +++ b/device/arista/x86_64-arista_7800r3a_36d_lc/pmon_daemon_control.json @@ -1 +1 @@ -../x86_64-arista_common/pmon_daemon_control.json \ No newline at end of file +../x86_64-arista_common/pmon_daemon_control_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36d_lc/system_health_monitoring_config.json b/device/arista/x86_64-arista_7800r3a_36d_lc/system_health_monitoring_config.json index 1185f771fa8e..035cde619cd9 120000 --- a/device/arista/x86_64-arista_7800r3a_36d_lc/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_7800r3a_36d_lc/system_health_monitoring_config.json @@ -1 +1 @@ -../x86_64-arista_common/system_health_monitoring_config.json \ No newline at end of file +../x86_64-arista_common/system_health_monitoring_config_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36d_lc/thermal_policy.json b/device/arista/x86_64-arista_7800r3a_36d_lc/thermal_policy.json index 0991dc7f3638..7c7982deaffa 120000 --- a/device/arista/x86_64-arista_7800r3a_36d_lc/thermal_policy.json +++ b/device/arista/x86_64-arista_7800r3a_36d_lc/thermal_policy.json @@ -1 +1 @@ -../x86_64-arista_common/thermal_policy.json \ No newline at end of file +../x86_64-arista_common/thermal_policy_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36dm2_lc/pmon_daemon_control.json b/device/arista/x86_64-arista_7800r3a_36dm2_lc/pmon_daemon_control.json index 51d5ab7b0059..26ee0d4d1384 120000 --- a/device/arista/x86_64-arista_7800r3a_36dm2_lc/pmon_daemon_control.json +++ b/device/arista/x86_64-arista_7800r3a_36dm2_lc/pmon_daemon_control.json @@ -1 +1 @@ -../x86_64-arista_common/pmon_daemon_control.json \ No newline at end of file +../x86_64-arista_common/pmon_daemon_control_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36dm2_lc/system_health_monitoring_config.json b/device/arista/x86_64-arista_7800r3a_36dm2_lc/system_health_monitoring_config.json index 1185f771fa8e..035cde619cd9 120000 --- a/device/arista/x86_64-arista_7800r3a_36dm2_lc/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_7800r3a_36dm2_lc/system_health_monitoring_config.json @@ -1 +1 @@ -../x86_64-arista_common/system_health_monitoring_config.json \ No newline at end of file +../x86_64-arista_common/system_health_monitoring_config_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36dm2_lc/thermal_policy.json b/device/arista/x86_64-arista_7800r3a_36dm2_lc/thermal_policy.json index 0991dc7f3638..7c7982deaffa 120000 --- a/device/arista/x86_64-arista_7800r3a_36dm2_lc/thermal_policy.json +++ b/device/arista/x86_64-arista_7800r3a_36dm2_lc/thermal_policy.json @@ -1 +1 @@ -../x86_64-arista_common/thermal_policy.json \ No newline at end of file +../x86_64-arista_common/thermal_policy_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36p_lc/pmon_daemon_control.json b/device/arista/x86_64-arista_7800r3a_36p_lc/pmon_daemon_control.json index 51d5ab7b0059..26ee0d4d1384 120000 --- a/device/arista/x86_64-arista_7800r3a_36p_lc/pmon_daemon_control.json +++ b/device/arista/x86_64-arista_7800r3a_36p_lc/pmon_daemon_control.json @@ -1 +1 @@ -../x86_64-arista_common/pmon_daemon_control.json \ No newline at end of file +../x86_64-arista_common/pmon_daemon_control_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36p_lc/system_health_monitoring_config.json b/device/arista/x86_64-arista_7800r3a_36p_lc/system_health_monitoring_config.json index 1185f771fa8e..035cde619cd9 120000 --- a/device/arista/x86_64-arista_7800r3a_36p_lc/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_7800r3a_36p_lc/system_health_monitoring_config.json @@ -1 +1 @@ -../x86_64-arista_common/system_health_monitoring_config.json \ No newline at end of file +../x86_64-arista_common/system_health_monitoring_config_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3a_36p_lc/thermal_policy.json b/device/arista/x86_64-arista_7800r3a_36p_lc/thermal_policy.json index 0991dc7f3638..7c7982deaffa 120000 --- a/device/arista/x86_64-arista_7800r3a_36p_lc/thermal_policy.json +++ b/device/arista/x86_64-arista_7800r3a_36p_lc/thermal_policy.json @@ -1 +1 @@ -../x86_64-arista_common/thermal_policy.json \ No newline at end of file +../x86_64-arista_common/thermal_policy_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36d2_lc/pmon_daemon_control.json b/device/arista/x86_64-arista_7800r3ak_36d2_lc/pmon_daemon_control.json index 51d5ab7b0059..26ee0d4d1384 120000 --- a/device/arista/x86_64-arista_7800r3ak_36d2_lc/pmon_daemon_control.json +++ b/device/arista/x86_64-arista_7800r3ak_36d2_lc/pmon_daemon_control.json @@ -1 +1 @@ -../x86_64-arista_common/pmon_daemon_control.json \ No newline at end of file +../x86_64-arista_common/pmon_daemon_control_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36d2_lc/system_health_monitoring_config.json b/device/arista/x86_64-arista_7800r3ak_36d2_lc/system_health_monitoring_config.json index 1185f771fa8e..035cde619cd9 120000 --- a/device/arista/x86_64-arista_7800r3ak_36d2_lc/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_7800r3ak_36d2_lc/system_health_monitoring_config.json @@ -1 +1 @@ -../x86_64-arista_common/system_health_monitoring_config.json \ No newline at end of file +../x86_64-arista_common/system_health_monitoring_config_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36d2_lc/thermal_policy.json b/device/arista/x86_64-arista_7800r3ak_36d2_lc/thermal_policy.json index 0991dc7f3638..7c7982deaffa 120000 --- a/device/arista/x86_64-arista_7800r3ak_36d2_lc/thermal_policy.json +++ b/device/arista/x86_64-arista_7800r3ak_36d2_lc/thermal_policy.json @@ -1 +1 @@ -../x86_64-arista_common/thermal_policy.json \ No newline at end of file +../x86_64-arista_common/thermal_policy_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/pmon_daemon_control.json b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/pmon_daemon_control.json index 51d5ab7b0059..26ee0d4d1384 120000 --- a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/pmon_daemon_control.json +++ b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/pmon_daemon_control.json @@ -1 +1 @@ -../x86_64-arista_common/pmon_daemon_control.json \ No newline at end of file +../x86_64-arista_common/pmon_daemon_control_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/system_health_monitoring_config.json b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/system_health_monitoring_config.json index 1185f771fa8e..035cde619cd9 120000 --- a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/system_health_monitoring_config.json @@ -1 +1 @@ -../x86_64-arista_common/system_health_monitoring_config.json \ No newline at end of file +../x86_64-arista_common/system_health_monitoring_config_linecard.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/thermal_policy.json b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/thermal_policy.json index 0991dc7f3638..7c7982deaffa 120000 --- a/device/arista/x86_64-arista_7800r3ak_36dm2_lc/thermal_policy.json +++ b/device/arista/x86_64-arista_7800r3ak_36dm2_lc/thermal_policy.json @@ -1 +1 @@ -../x86_64-arista_common/thermal_policy.json \ No newline at end of file +../x86_64-arista_common/thermal_policy_linecard.json \ No newline at end of file From 4641562edb84a0aa69c7dae1035e538a9f6f669b Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Fri, 21 Feb 2025 07:46:55 +0800 Subject: [PATCH 35/47] Enable gnmi/telemetry user authorization by config_db (#21363) Enable gnmi/telemetry user authorization by config_db. Why I did it gnmi/telemetry user authorization flag not used in SONiC and can't config by config_db How I did it Update Yang model and update gnmi/telemetry start script. How to verify it Pass all UT. --- dockers/docker-sonic-gnmi/gnmi-native.sh | 65 +++++++++++------- dockers/docker-sonic-telemetry/telemetry.sh | 67 ++++++++++++------- .../yang-models/sonic-gnmi.yang | 8 ++- .../yang-models/sonic-telemetry.yang | 7 ++ 4 files changed, 96 insertions(+), 51 deletions(-) diff --git a/dockers/docker-sonic-gnmi/gnmi-native.sh b/dockers/docker-sonic-gnmi/gnmi-native.sh index 8dae895d89df..5b9efe379a2c 100755 --- a/dockers/docker-sonic-gnmi/gnmi-native.sh +++ b/dockers/docker-sonic-gnmi/gnmi-native.sh @@ -3,6 +3,11 @@ EXIT_TELEMETRY_VARS_FILE_NOT_FOUND=1 INCORRECT_TELEMETRY_VALUE=2 TELEMETRY_VARS_FILE=/usr/share/sonic/templates/telemetry_vars.j2 +ESCAPE_QUOTE="'\''" + +extract_field() { + echo $(echo $1 | jq -r $2) +} if [ ! -f "$TELEMETRY_VARS_FILE" ]; then echo "Telemetry vars template file not found" @@ -25,30 +30,29 @@ TELEMETRY_ARGS=" -logtostderr" export CVL_SCHEMA_PATH=/usr/sbin/schema if [ -n "$CERTS" ]; then - SERVER_CRT=$(echo $CERTS | jq -r '.server_crt') - SERVER_KEY=$(echo $CERTS | jq -r '.server_key') + SERVER_CRT=$(extract_field "$CERTS" '.server_crt') + SERVER_KEY=$(extract_field "$CERTS" '.server_key') if [ -z $SERVER_CRT ] || [ -z $SERVER_KEY ]; then TELEMETRY_ARGS+=" --insecure" else TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY " fi - CA_CRT=$(echo $CERTS | jq -r '.ca_crt') + CA_CRT=$(extract_field "$CERTS" '.ca_crt') if [ ! -z $CA_CRT ]; then TELEMETRY_ARGS+=" --ca_crt $CA_CRT" fi - TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT" elif [ -n "$X509" ]; then - SERVER_CRT=$(echo $X509 | jq -r '.server_crt') - SERVER_KEY=$(echo $X509 | jq -r '.server_key') + SERVER_CRT=$(extract_field "$X509" '.server_crt') + SERVER_KEY=$(extract_field "$X509" '.server_key') if [ -z $SERVER_CRT ] || [ -z $SERVER_KEY ]; then TELEMETRY_ARGS+=" --insecure" else TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY " fi - CA_CRT=$(echo $X509 | jq -r '.ca_crt') + CA_CRT=$(extract_field "$X509" '.ca_crt') if [ ! -z $CA_CRT ]; then TELEMETRY_ARGS+=" --ca_crt $CA_CRT" fi @@ -60,34 +64,27 @@ fi if [ -z "$GNMI" ]; then PORT=8080 else - PORT=$(echo $GNMI | jq -r '.port') + PORT=$(extract_field "$GNMI" '.port') + if ! [[ $PORT =~ ^[0-9]+$ ]]; then + echo "Incorrect port value ${PORT}, expecting positive integers" >&2 + exit $INCORRECT_TELEMETRY_VALUE + fi fi + TELEMETRY_ARGS+=" --port $PORT" -CLIENT_AUTH=$(echo $GNMI | jq -r '.client_auth') +CLIENT_AUTH=$(extract_field "$GNMI" '.client_auth') if [ -z $CLIENT_AUTH ] || [ $CLIENT_AUTH == "false" ]; then TELEMETRY_ARGS+=" --allow_no_client_auth" fi -LOG_LEVEL=$(echo $GNMI | jq -r '.log_level') +LOG_LEVEL=$(extract_field "$GNMI" '.log_level') if [[ $LOG_LEVEL =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" -v=$LOG_LEVEL" else TELEMETRY_ARGS+=" -v=2" fi -if [ -nz "$GNMI" ]; then - ENABLE_CRL=$(echo $GNMI | jq -r '.enable_crl') - if [ $ENABLE_CRL == "true" ]; then - TELEMETRY_ARGS+=" --enable_crl" - fi - - CRL_EXPIRE_DURATION=$(echo $GNMI | jq -r '.crl_expire_duration') - if [ -n $CRL_EXPIRE_DURATION ]; then - TELEMETRY_ARGS+=" --crl_expire_duration $CRL_EXPIRE_DURATION" - fi -fi - # Enable ZMQ for SmartSwitch LOCALHOST_SUBTYPE=`sonic-db-cli CONFIG_DB hget "DEVICE_METADATA|localhost" "subtype"` if [[ x"${LOCALHOST_SUBTYPE}" == x"SmartSwitch" ]]; then @@ -101,7 +98,7 @@ if [[ x"${MGMT_VRF_ENABLED}" == x"true" ]]; then fi # Server will handle threshold connections consecutively -THRESHOLD_CONNECTIONS=$(echo $GNMI | jq -r '.threshold') +THRESHOLD_CONNECTIONS=$(extract_field "$GNMI" '.threshold') if [[ $THRESHOLD_CONNECTIONS =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" --threshold $THRESHOLD_CONNECTIONS" else @@ -114,7 +111,7 @@ else fi # Close idle connections after certain duration (in seconds) -IDLE_CONN_DURATION=$(echo $GNMI | jq -r '.idle_conn_duration') +IDLE_CONN_DURATION=$(extract_field "$GNMI" '.idle_conn_duration') if [[ $IDLE_CONN_DURATION =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" --idle_conn_duration $IDLE_CONN_DURATION" else @@ -126,4 +123,24 @@ else fi fi +USER_AUTH=$(extract_field "$GNMI" '.user_auth') +if [ ! -z "$USER_AUTH" ] && [ $USER_AUTH != "null" ]; then + TELEMETRY_ARGS+=" --client_auth $USER_AUTH" + + if [ $USER_AUTH == "cert" ]; then + TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT" + + ENABLE_CRL=$(echo $GNMI | jq -r '.enable_crl') + if [ $ENABLE_CRL == "true" ]; then + TELEMETRY_ARGS+=" --enable_crl" + fi + + CRL_EXPIRE_DURATION=$(extract_field "$GNMI" '.crl_expire_duration') + if [ ! -z "$CRL_EXPIRE_DURATION" ] && [ $CRL_EXPIRE_DURATION != "null" ]; then + TELEMETRY_ARGS+=" --crl_expire_duration $CRL_EXPIRE_DURATION" + fi + fi +fi + +echo "gnmi args: $TELEMETRY_ARGS" exec /usr/sbin/telemetry ${TELEMETRY_ARGS} diff --git a/dockers/docker-sonic-telemetry/telemetry.sh b/dockers/docker-sonic-telemetry/telemetry.sh index 2428922b57f6..ad1dcedd156b 100755 --- a/dockers/docker-sonic-telemetry/telemetry.sh +++ b/dockers/docker-sonic-telemetry/telemetry.sh @@ -3,6 +3,11 @@ EXIT_TELEMETRY_VARS_FILE_NOT_FOUND=1 INCORRECT_TELEMETRY_VALUE=2 TELEMETRY_VARS_FILE=/usr/share/sonic/templates/telemetry_vars.j2 +ESCAPE_QUOTE="'\''" + +extract_field() { + echo $(echo $1 | jq -r $2) +} if [ ! -f "$TELEMETRY_VARS_FILE" ]; then echo "Telemetry vars template file not found" @@ -25,31 +30,28 @@ export CVL_SCHEMA_PATH=/usr/sbin/schema export GOTRACEBACK=crash if [ -n "$CERTS" ]; then - SERVER_CRT=$(echo $CERTS | jq -r '.server_crt') - SERVER_KEY=$(echo $CERTS | jq -r '.server_key') + SERVER_CRT=$(extract_field "$CERTS" '.server_crt') + SERVER_KEY=$(extract_field "$CERTS" '.server_key') if [ -z $SERVER_CRT ] || [ -z $SERVER_KEY ]; then TELEMETRY_ARGS+=" --insecure" else TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY " fi - CA_CRT=$(echo $CERTS | jq -r '.ca_crt') + CA_CRT=$(extract_field "$CERTS" '.ca_crt') if [ ! -z $CA_CRT ]; then TELEMETRY_ARGS+=" --ca_crt $CA_CRT" fi - - # Reuse GNMI_CLIENT_CERT for telemetry service - TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT" elif [ -n "$X509" ]; then - SERVER_CRT=$(echo $X509 | jq -r '.server_crt') - SERVER_KEY=$(echo $X509 | jq -r '.server_key') + SERVER_CRT=$(extract_field "$X509" '.server_crt') + SERVER_KEY=$(extract_field "$X509" '.server_key') if [ -z $SERVER_CRT ] || [ -z $SERVER_KEY ]; then TELEMETRY_ARGS+=" --insecure" else TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY " fi - CA_CRT=$(echo $X509 | jq -r '.ca_crt') + CA_CRT=$(extract_field "$X509" '.ca_crt') if [ ! -z $CA_CRT ]; then TELEMETRY_ARGS+=" --ca_crt $CA_CRT" fi @@ -61,34 +63,26 @@ fi if [ -z "$GNMI" ]; then PORT=8080 else - PORT=$(echo $GNMI | jq -r '.port') + PORT=$(extract_field "$GNMI" '.port') + if ! [[ $PORT =~ ^[0-9]+$ ]]; then + echo "Incorrect port value ${PORT}, expecting positive integers" >&2 + exit $INCORRECT_TELEMETRY_VALUE + fi fi TELEMETRY_ARGS+=" --port $PORT" -CLIENT_AUTH=$(echo $GNMI | jq -r '.client_auth') +CLIENT_AUTH=$(extract_field "$GNMI" '.client_auth') if [ -z $CLIENT_AUTH ] || [ $CLIENT_AUTH == "false" ]; then TELEMETRY_ARGS+=" --allow_no_client_auth" fi -LOG_LEVEL=$(echo $GNMI | jq -r '.log_level') +LOG_LEVEL=$(extract_field "$GNMI" '.log_level') if [[ $LOG_LEVEL =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" -v=$LOG_LEVEL" else TELEMETRY_ARGS+=" -v=2" fi -if [ -nz "$GNMI" ]; then - ENABLE_CRL=$(echo $GNMI | jq -r '.enable_crl') - if [ $ENABLE_CRL == "true" ]; then - TELEMETRY_ARGS+=" --enable_crl" - fi - - CRL_EXPIRE_DURATION=$(echo $GNMI | jq -r '.crl_expire_duration') - if [ -n $CRL_EXPIRE_DURATION ]; then - TELEMETRY_ARGS+=" --crl_expire_duration $CRL_EXPIRE_DURATION" - fi -fi - # gNMI save-on-set behavior is disabled by default. # Save-on-set can be turned on by setting the "TELEMETRY|gnmi|save_on_set" # to "true". @@ -98,7 +92,7 @@ if [ ! -z "$SAVE_ON_SET" ]; then fi # Server will handle threshold connections consecutively -THRESHOLD_CONNECTIONS=$(echo $GNMI | jq -r '.threshold') +THRESHOLD_CONNECTIONS=$(extract_field "$GNMI" '.threshold') if [[ $THRESHOLD_CONNECTIONS =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" --threshold $THRESHOLD_CONNECTIONS" else @@ -111,7 +105,7 @@ else fi # Close idle connections after certain duration (in seconds) -IDLE_CONN_DURATION=$(echo $GNMI | jq -r '.idle_conn_duration') +IDLE_CONN_DURATION=$(extract_field "$GNMI" '.idle_conn_duration') if [[ $IDLE_CONN_DURATION =~ ^[0-9]+$ ]]; then TELEMETRY_ARGS+=" --idle_conn_duration $IDLE_CONN_DURATION" else @@ -124,4 +118,25 @@ else fi TELEMETRY_ARGS+=" -gnmi_native_write=false" +USER_AUTH=$(extract_field "$GNMI" '.user_auth') +if [ ! -z "$USER_AUTH" ] && [ $USER_AUTH != "null" ]; then + TELEMETRY_ARGS+=" --client_auth $USER_AUTH" + + if [ $USER_AUTH == "cert" ]; then + # Reuse GNMI_CLIENT_CERT for telemetry service + TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT" + + ENABLE_CRL=$(echo $GNMI | jq -r '.enable_crl') + if [ $ENABLE_CRL == "true" ]; then + TELEMETRY_ARGS+=" --enable_crl" + fi + + CRL_EXPIRE_DURATION=$(extract_field "$GNMI" '.crl_expire_duration') + if [ ! -z "$CRL_EXPIRE_DURATION" ] && [ $CRL_EXPIRE_DURATION != "null" ]; then + TELEMETRY_ARGS+=" --crl_expire_duration $CRL_EXPIRE_DURATION" + fi + fi +fi + +echo "telemetry args: $TELEMETRY_ARGS" exec /usr/sbin/telemetry ${TELEMETRY_ARGS} diff --git a/src/sonic-yang-models/yang-models/sonic-gnmi.yang b/src/sonic-yang-models/yang-models/sonic-gnmi.yang index d33ea35083dd..389bac7a1257 100644 --- a/src/sonic-yang-models/yang-models/sonic-gnmi.yang +++ b/src/sonic-yang-models/yang-models/sonic-gnmi.yang @@ -85,6 +85,13 @@ module sonic-gnmi { type uint32; description "Certificate revocation list cache expire duration."; } + + leaf user_auth { + type string { + pattern 'password|jwt|cert'; + } + description "GNMI service user authorization type."; + } } } @@ -92,7 +99,6 @@ module sonic-gnmi { description "GNMI client cert list"; list GNMI_CLIENT_CERT_LIST { - max-elements 8; key "cert_cname"; leaf cert_cname { diff --git a/src/sonic-yang-models/yang-models/sonic-telemetry.yang b/src/sonic-yang-models/yang-models/sonic-telemetry.yang index 239f23666dda..825fde053cad 100644 --- a/src/sonic-yang-models/yang-models/sonic-telemetry.yang +++ b/src/sonic-yang-models/yang-models/sonic-telemetry.yang @@ -85,6 +85,13 @@ module sonic-telemetry { type uint32; description "Certificate revocation list cache expire duration."; } + + leaf user_auth { + type string { + pattern 'password|jwt|cert'; + } + description "Telemetry service user authorization type."; + } } } From 5bcf5efb3445882193a1a040416a4e1a8cef1f2a Mon Sep 17 00:00:00 2001 From: Pavan Naregundi <92989231+pavannaregundi@users.noreply.github.com> Date: Fri, 21 Feb 2025 06:38:59 +0530 Subject: [PATCH 36/47] [Marvell][arm64] Installer optimization (#21461) Why I did it To optimization installer for marvell arm64 to use create and mount partition logic from default_platform.conf. Given that current default_platform.conf only allows install on same disk as ONIE. Add support for install block device selection. Add support for scsi block devices. How I did it Use implementation from default_platform.conf for create and mount partition and remove the implementation in platform_arm64.conf. Add option to override install block device in default_platform.conf. Also added logic to select the install block device from platform_arm64.conf. Added support for selecting scsi disk as install device in platform_arm64.conf. This also needed changes to u-boot env variable. Changed to UUID based 'root' disk selection to have a generic implementation. For backward compatibility using the existing functions for 7215_A1 platform. How to verify it Verified ONIE and SONIC to SONIC install using sonic-marvell.bin and sonic-marvell-arm64.bin. Signed-off-by: Pavan Naregundi --- installer/default_platform.conf | 18 ++-- platform/marvell/platform_arm64.conf | 153 +++++++++++++++------------ 2 files changed, 94 insertions(+), 77 deletions(-) diff --git a/installer/default_platform.conf b/installer/default_platform.conf index 85aeddb0e1d2..04cae5995ac1 100755 --- a/installer/default_platform.conf +++ b/installer/default_platform.conf @@ -35,7 +35,7 @@ create_partition() { # Install demo on same block device as ONIE - if [ "$install_env" != "build" ]; then + if [ "$install_env" != "build" ] && [ -z "$blk_dev" ]; then onie_dev=$(blkid | grep ONIE-BOOT | head -n 1 | awk '{print $1}' | sed -e 's/:.*$//') blk_dev=$(echo $onie_dev | sed -e 's/[1-9][0-9]*$//' | sed -e 's/\([0-9]\)\(p\)/\1/') @@ -154,13 +154,15 @@ create_demo_gpt_partition() last_part=$(echo "$all_part" | tail -n 1 | awk '{print $1}') # Find next available partition demo_part=1 - echo "$all_part" > $tmpfifo & - # Find the first available partition number - while read -r used_part; do - echo "Partition #$used_part is in use." - if [ "$used_part" -ne "$demo_part" ]; then break; fi - demo_part=`expr $demo_part + 1` - done < $tmpfifo + if [ ! -z "$all_part" ]; then + echo "$all_part" > $tmpfifo & + # Find the first available partition number + while read -r used_part; do + echo "Partition #$used_part is in use." + if [ "$used_part" -ne "$demo_part" ]; then break; fi + demo_part=`expr $demo_part + 1` + done < $tmpfifo + fi echo "Partition #$demo_part is available" # Create new partition diff --git a/platform/marvell/platform_arm64.conf b/platform/marvell/platform_arm64.conf index ee417e9cd3ac..617ab6ab9dbf 100644 --- a/platform/marvell/platform_arm64.conf +++ b/platform/marvell/platform_arm64.conf @@ -13,10 +13,6 @@ kernel_version=6.1.0-22-2-arm64 kernel_fname="/boot/vmlinuz-$kernel_version" initrd_fname="/boot/initrd.img-$kernel_version" fit_fname="/boot/sonic_arm64.fit" -demo_volume_label=SONiC-OS - -# global mount defines -demo_mnt=/tmp if [ "$install_env" = "onie" ]; then MACH_FILE="/etc/machine.conf" @@ -29,15 +25,20 @@ echo "Intalling SONiC from $install_env on Platform $PLATFORM" PLATFORM_AC5X=0 PLATFORM_CN9131=0 +PLATFORM_7215_A1=0 +disk_interface="mmc" case $PLATFORM in arm64-nokia_ixs7215_52xb-r0) PLATFORM_7215_A1=1; + mmc_bus="mmc0:0001"; fdt_fname="/usr/lib/linux-image-${kernel_version}/marvell/7215-ixs-a1.dtb"; fit_conf_name="#conf_7215_a1";; arm64-marvell_rd98DX35xx-r0) PLATFORM_AC5X=1; + mmc_bus="mmc0:0001"; fdt_fname="/usr/lib/linux-image-$kernel_version/marvell/ac5-98dx35xx-rd.dtb"; fit_conf_name="#conf_ac5x";; arm64-marvell_rd98DX35xx_cn9131-r0) PLATFORM_CN9131=1; + mmc_bus="mmc0:0001"; fdt_fname="/boot/cn9131-db-comexpress.dtb"; fit_conf_name="#conf_cn9131";; esac @@ -48,21 +49,16 @@ if [ $PLATFORM_AC5X -eq 1 ]; then initrd_addr=0x206000000 FW_ENV_DEFAULT='/dev/mtd0 0x400000 0x10000 0x10000' - demo_part=2 - mmc_bus="mmc0:0001" elif [ $PLATFORM_7215_A1 -eq 1 ]; then fit_addr=0x20000000 VAR_LOG=4096 FW_ENV_DEFAULT='/dev/mtd1 0x0 0x10000 0x10000' demo_part=2 - mmc_bus="mmc0:0001" elif [ $PLATFORM_CN9131 -eq 1 ]; then fdt_addr=0x1000000 fit_addr=0x8000000 initrd_addr=0x2000000 - demo_part=2 FW_ENV_DEFAULT='/dev/mtd1 0x1F0000 0x10000 0x10000' - mmc_bus="mmc0:0001" else fdt_addr=0x1000000 fit_addr=0x8000000 @@ -71,83 +67,100 @@ else fdt_fname="/usr/lib/linux-image-$kernel_version/marvell/armada-7020-comexpress.dtb" FW_ENV_DEFAULT='/dev/mtd1 0x0 0x10000 0x100000' - demo_part=1 mmc_bus="mmc0:aaaa" fi # Skip VID Header in UBIFS LINUX_MISC_CMD='apparmor=1 security=apparmor usbcore.autosuspend=-1' -#Get block device -#Default block device is eMMC, if not look for usb storage +# Get block device +# default_platform.conf will by default install SONIC on same block device as ONIE +# This funtion looks to override SONIC install target disk, with optional eMMC or SCSI disk. get_install_device() { - for i in 0 1 2 ; do - if $(ls -l /sys/block/mmcblk$i/device 2>/dev/null | grep -q "$mmc_bus") ; then - echo "/dev/mmcblk$i" - blk_dev=/dev/mmcblk$i - echo "Selected mmc $blk_dev" - return 0 - fi - done + if [ ! -z "$mmc_bus" ]; then + for i in 0 1 2 ; do + if $(ls -l /sys/block/mmcblk$i/device 2>/dev/null | grep -q "$mmc_bus") ; then + echo "/dev/mmcblk$i" + blk_dev=/dev/mmcblk$i + disk_interface="mmc" + echo "Selected mmc $blk_dev" + return + fi + done + fi - echo "ERROR storage not found" - return 1 + if [ ! -z "$scsi_bus" ]; then + for i in a b c d ; do + if $(ls -l /sys/block/sd$i/device 2>/dev/null | grep -q "$scsi_bus") ; then + echo "/dev/sd$i" + blk_dev=/dev/sd$i + disk_interface="scsi" + disk_scan="scsi scan;" + echo "Selected disk $blk_dev" + return + fi + done + fi + + echo "Waring: Storage not found. Will try installing on the same disk as ONIE." } get_install_device -if [ $? -ne 0 ]; then - echo "Error: Unable to detect $blk_dev $demo_dev" - exit 1 -fi -demo_dev=${blk_dev}p${demo_part} +if [ $PLATFORM_7215_A1 -eq 1 ]; then + # 7215_A1 to use custom logic for backward compatibility -remove_dev_partitions() { - echo "Remove all existing partitions starting partnum: ${demo_part} from ${blk_dev}" - local dev_to_install=${blk_dev}p - for p in $(seq ${demo_part} 9) ; do - if [[ -e ${dev_to_install}${p} ]]; then - echo "Removing partition ${dev_to_install}${p}" - sgdisk -d ${p} ${blk_dev} || true - fi - done - partprobe ${blk_dev} -} + demo_dev=${blk_dev}p${demo_part} -create_demo_partition() { - # SD CARD - remove_dev_partitions + remove_dev_partitions() { + echo "Remove all existing partitions starting partnum: ${demo_part} from ${blk_dev}" + local dev_to_install=${blk_dev}p + for p in $(seq ${demo_part} 9) ; do + if [[ -e ${dev_to_install}${p} ]]; then + echo "Removing partition ${dev_to_install}${p}" + sgdisk -d ${p} ${blk_dev} || true + fi + done + partprobe ${blk_dev} + } - # Create sonic partition - sgdisk --new ${demo_part}:: \ - --change-name=${demo_part}:${demo_volume_label} \ - --typecode=${demo_part}:8300 -p ${blk_dev} + create_demo_partition() { + # SD CARD + remove_dev_partitions - partprobe -} + # Create sonic partition + sgdisk --new ${demo_part}:: \ + --change-name=${demo_part}:${demo_volume_label} \ + --typecode=${demo_part}:8300 -p ${blk_dev} -create_partition() { - get_install_device - if [ $? -ne 0 ]; then - echo "Error: Unable to detect $blk_dev $demo_dev" - exit 1 - fi + partprobe + } - # Platform specific partition - create_demo_partition -} + create_partition() { + get_install_device + if [ $? -ne 0 ]; then + echo "Error: Unable to detect $blk_dev $demo_dev" + exit 1 + fi + + # Platform specific partition + create_demo_partition + } -mount_partition() { - # Make filesystem - echo "demo label: $demo_volume_label. $demo_dev..." - mkfs.ext4 -L $demo_volume_label $demo_dev + mount_partition() { + # Make filesystem + echo "demo label: $demo_volume_label. $demo_dev..." + mkfs.ext4 -L $demo_volume_label $demo_dev - mount -t ext4 -o defaults,rw $demo_dev $demo_mnt || { - echo "Error: Unable to mount $demo_dev on $demo_mnt" - exit 1 + demo_mnt=/tmp + + mount -t ext4 -o defaults,rw $demo_dev $demo_mnt || { + echo "Error: Unable to mount $demo_dev on $demo_mnt" + exit 1 + } } -} +fi prepare_boot_menu() { echo "Sync up cache ..." @@ -222,7 +235,8 @@ prepare_boot_menu() { fw_setenv ${FW_ARG} print_menu "$BORDER $BOOT1 $BOOT2 $BOOT3 $BORDER" > /dev/null fw_setenv ${FW_ARG} linuxargs "net.ifnames=0 loopfstype=squashfs loop=$image_dir/$FILESYSTEM_SQUASHFS systemd.unified_cgroup_hierarchy=0 varlog_size=$VAR_LOG ${ONIE_PLATFORM_EXTRA_CMDLINE_LINUX}" > /dev/null - sonic_bootargs_old='setenv bootargs root='$demo_dev' rw rootwait panic=1 console=ttyS0,${baudrate} ${linuxargs_old}' + uuid=$(blkid | grep "$demo_volume_label" | sed -ne 's/.* UUID=\"\([^"]*\)\".*/\1/p') + sonic_bootargs_old='setenv bootargs root=UUID='$uuid' rw rootwait panic=1 console=ttyS0,${baudrate} ${linuxargs_old}' fw_setenv ${FW_ARG} sonic_bootargs_old "$sonic_bootargs_old" > /dev/null || true sonic_boot_load_old=$(fw_printenv -n sonic_boot_load || true) old_str="_old" @@ -233,16 +247,17 @@ prepare_boot_menu() { fw_setenv ${FW_ARG} fit_addr $fit_addr > /dev/null fw_setenv ${FW_ARG} fit_conf_name $fit_conf_name > /dev/null fw_setenv ${FW_ARG} initrd_addr $initrd_addr > /dev/null - MMC_LOAD='ext4load mmc 0:'$demo_part' $fit_addr $fit_name' - fw_setenv ${FW_ARG} sonic_boot_load "$MMC_LOAD" > /dev/null + demo_part=$(sgdisk -p $blk_dev | grep -e "$demo_volume_label" | awk '{print $1}') + DISK_LOAD=''$disk_scan' ext4load '$disk_interface' 0:'$demo_part' $fit_addr $fit_name' + fw_setenv ${FW_ARG} sonic_boot_load "$DISK_LOAD" > /dev/null SONIC_BOOT_CMD='run sonic_bootargs; run sonic_boot_load; bootm $fit_addr${fit_conf_name}' SONIC_BOOT_CMD_OLD='run sonic_bootargs_old; run sonic_boot_load_old; bootm $fit_addr${fit_conf_name}' - BOOTARGS='setenv bootargs root='$demo_dev' rw rootwait panic=1 console=ttyS0,${baudrate} ${linuxargs}' + BOOTARGS='setenv bootargs root=UUID='$uuid' rw rootwait panic=1 console=ttyS0,${baudrate} ${linuxargs}' fw_setenv ${FW_ARG} sonic_bootargs "$BOOTARGS" > /dev/null fw_setenv ${FW_ARG} sonic_image_2 "$SONIC_BOOT_CMD_OLD" > /dev/null fw_setenv ${FW_ARG} sonic_image_1 "$SONIC_BOOT_CMD" > /dev/null fw_setenv ${FW_ARG} boot_next 'run sonic_image_1'> /dev/null - fw_setenv ${FW_ARG} bootcmd 'run print_menu; usb start; test -n "$boot_once" && setenv do_boot_once "$boot_once" && setenv boot_once "" && saveenv && run do_boot_once; run boot_next' > /dev/null + fw_setenv ${FW_ARG} bootcmd 'run print_menu; test -n "$boot_once" && setenv do_boot_once "$boot_once" && setenv boot_once "" && saveenv && run do_boot_once; run boot_next' > /dev/null echo "Installed SONiC base image SONiC-OS successfully" } From 52a652d1b00a4b30ffe39cf0cb7262d9e9ae65f0 Mon Sep 17 00:00:00 2001 From: saksarav-nokia Date: Fri, 21 Feb 2025 00:44:03 -0500 Subject: [PATCH 37/47] [Nokia Device] Set the clock for both Ramon and J2C+ (#21764) Why I did it Changed the clock frequency as per BCM's recommendation Work item tracking Microsoft ADO (number only): How I did it Changed the clock frequency to 1.6GHZ for both Ramons and J2C+ How to verify it Verified in our Nokia system testbed that the system is up and passing the traffic without any issues. --- .../0/jr2cp-nokia-18x100g-4x25g-config.bcm | 1 + .../1/jr2cp-nokia-18x100g-4x25g-config.bcm | 1 + .../Nokia-IXR7250E-36x400G/0/jr2cp-nokia-18x400g-config.bcm | 1 + .../Nokia-IXR7250E-36x400G/1/jr2cp-nokia-18x400g-config.bcm | 1 + .../Nokia-IXR7250E-SUP-10/0/config-ramon-1-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/1/config-ramon-1-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/10/config-ramon-6-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/11/config-ramon-6-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/12/config-ramon-7-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/13/config-ramon-7-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/14/config-ramon-8-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/15/config-ramon-8-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/2/config-ramon-2-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/3/config-ramon-2-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/4/config-ramon-3-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/5/config-ramon-3-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/6/config-ramon-4-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/7/config-ramon-4-1.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/8/config-ramon-5-0.bcm | 2 +- .../Nokia-IXR7250E-SUP-10/9/config-ramon-5-1.bcm | 2 +- 20 files changed, 20 insertions(+), 16 deletions(-) diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/jr2cp-nokia-18x100g-4x25g-config.bcm b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/jr2cp-nokia-18x100g-4x25g-config.bcm index 010367478088..b746a19540a7 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/jr2cp-nokia-18x100g-4x25g-config.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/0/jr2cp-nokia-18x100g-4x25g-config.bcm @@ -1477,6 +1477,7 @@ protocol_traps_mode.BCM8885X=IN_LIF rate_ext_mdio_divisor=16 schan_intr_enable.BCM8885X=0 schan_timeout_usec.BCM8885X=900000 +system_ref_core_clock_khz.BCM8885X=1600000 serdes_fabric_clk_freq_in.BCM8885X=1 serdes_fabric_clk_freq_out.BCM8885X=bypass serdes_nif_clk_freq_in0.BCM8885X=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/jr2cp-nokia-18x100g-4x25g-config.bcm b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/jr2cp-nokia-18x100g-4x25g-config.bcm index 034b80def8ed..81e490410c8f 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/jr2cp-nokia-18x100g-4x25g-config.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x100G/1/jr2cp-nokia-18x100g-4x25g-config.bcm @@ -1496,6 +1496,7 @@ protocol_traps_mode.BCM8885X=IN_LIF rate_ext_mdio_divisor=16 schan_intr_enable.BCM8885X=0 schan_timeout_usec.BCM8885X=900000 +system_ref_core_clock_khz.BCM8885X=1600000 serdes_fabric_clk_freq_in.BCM8885X=1 serdes_fabric_clk_freq_out.BCM8885X=bypass serdes_nif_clk_freq_in0.BCM8885X=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/jr2cp-nokia-18x400g-config.bcm b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/jr2cp-nokia-18x400g-config.bcm index 2c241bcfff4a..da3a5a7c17a0 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/jr2cp-nokia-18x400g-config.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/jr2cp-nokia-18x400g-config.bcm @@ -1497,6 +1497,7 @@ protocol_traps_mode.BCM8885X=IN_LIF rate_ext_mdio_divisor=16 schan_intr_enable.BCM8885X=0 schan_timeout_usec.BCM8885X=900000 +system_ref_core_clock_khz.BCM8885X=1600000 serdes_fabric_clk_freq_in.BCM8885X=1 serdes_fabric_clk_freq_out.BCM8885X=bypass serdes_nif_clk_freq_in0.BCM8885X=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/jr2cp-nokia-18x400g-config.bcm b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/jr2cp-nokia-18x400g-config.bcm index 1ec4a9074523..2a3743d1f806 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/jr2cp-nokia-18x400g-config.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/jr2cp-nokia-18x400g-config.bcm @@ -1497,6 +1497,7 @@ protocol_traps_mode.BCM8885X=IN_LIF rate_ext_mdio_divisor=16 schan_intr_enable.BCM8885X=0 schan_timeout_usec.BCM8885X=900000 +system_ref_core_clock_khz.BCM8885X=1600000 serdes_fabric_clk_freq_in.BCM8885X=1 serdes_fabric_clk_freq_out.BCM8885X=bypass serdes_nif_clk_freq_in0.BCM8885X=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/config-ramon-1-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/config-ramon-1-0.bcm index c9036f36c9ec..8e920732bd1f 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/config-ramon-1-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/config-ramon-1-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/config-ramon-1-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/config-ramon-1-1.bcm index 8c0517292d4a..2768b97881b9 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/config-ramon-1-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/config-ramon-1-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/config-ramon-6-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/config-ramon-6-0.bcm index dc5a99c09533..f4744e6b7367 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/config-ramon-6-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/config-ramon-6-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/config-ramon-6-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/config-ramon-6-1.bcm index 12f59db6b93d..4529e2a14558 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/config-ramon-6-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/config-ramon-6-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/config-ramon-7-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/config-ramon-7-0.bcm index e7769dbe80af..a5ee6b4bf501 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/config-ramon-7-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/config-ramon-7-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/config-ramon-7-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/config-ramon-7-1.bcm index 276b576485a6..160f2e3b7bc4 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/config-ramon-7-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/config-ramon-7-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/config-ramon-8-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/config-ramon-8-0.bcm index bd35d4a44eac..4537abd251c7 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/config-ramon-8-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/config-ramon-8-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/config-ramon-8-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/config-ramon-8-1.bcm index 140d21415fff..0bd17ca6aa05 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/config-ramon-8-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/config-ramon-8-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/config-ramon-2-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/config-ramon-2-0.bcm index fbcfc7a8ed07..036df9461019 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/config-ramon-2-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/config-ramon-2-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/config-ramon-2-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/config-ramon-2-1.bcm index 8c485dffa120..845d90483662 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/config-ramon-2-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/config-ramon-2-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/config-ramon-3-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/config-ramon-3-0.bcm index 7d73ac75aeec..89cdab2df45f 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/config-ramon-3-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/config-ramon-3-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/config-ramon-3-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/config-ramon-3-1.bcm index 95d9b4117409..f6ec2ab3f6de 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/config-ramon-3-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/config-ramon-3-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/config-ramon-4-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/config-ramon-4-0.bcm index ddbe158e4d5c..88c6f6a6a4aa 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/config-ramon-4-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/config-ramon-4-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/config-ramon-4-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/config-ramon-4-1.bcm index 26595b410621..457e1da59c8a 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/config-ramon-4-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/config-ramon-4-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/config-ramon-5-0.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/config-ramon-5-0.bcm index a845cc4cb0f1..8e2914602614 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/config-ramon-5-0.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/config-ramon-5-0.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/config-ramon-5-1.bcm b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/config-ramon-5-1.bcm index 953da5cc9245..42d0d1f2a302 100644 --- a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/config-ramon-5-1.bcm +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/config-ramon-5-1.bcm @@ -36,7 +36,7 @@ serdes_fabric_clk_freq_out.BCM8879X=bypass soc_family.BCM8879X=BCM8879X srd_tx_drv_hv_disable.BCM8879X=0 system_contains_multiple_pipe_device.BCM8879X=0 -system_ref_core_clock_khz.BCM8879X=1200000 +system_ref_core_clock_khz.BCM8879X=1600000 table_dma_enable.BCM8879X=0 tdma_intr_enable.BCM8879X=0 tdma_timeout_usec.BCM8879X=5000000 From 58c1c419c67d6d3788891e907ab07f37835b93c9 Mon Sep 17 00:00:00 2001 From: Pavan Naregundi <92989231+pavannaregundi@users.noreply.github.com> Date: Fri, 21 Feb 2025 23:56:12 +0530 Subject: [PATCH 38/47] [Marvell] Update HWSKU (#21488) Why I did it Update HWSKU for DB and RD boards to work with latest SAI SDK for Marvell platforms. Also remove HWSKU's for unsupported platforms. How to verify it Loaded sonic image on respective RD and DB boards and verified show interfaces status. Signed-off-by: Pavan Naregundi --- .../FALCON16X25G/buffers_defaults_t0.j2 | 36 - .../FALCON16X25G/buffers_defaults_t1.j2 | 36 - .../FALCON16X25G/port_config.ini | 19 - .../FALCON16X25G/profile.ini | 2 - .../FALCON16X25G/sai.profile | 3 - .../FALCON16x400G/buffers_defaults_t0.j2 | 36 - .../FALCON16x400G/buffers_defaults_t1.j2 | 36 - .../FALCON16x400G/port_config.ini | 19 - .../FALCON16x400G/profile.ini | 2 - .../FALCON16x400G/sai.profile | 3 - .../FALCON32X25G/buffers_defaults_t0.j2 | 36 - .../FALCON32X25G/buffers_defaults_t1.j2 | 36 - .../FALCON32X25G/port_config.ini | 35 - .../FALCON32X25G/profile.ini | 2 - .../FALCON32X25G/sai.profile | 3 - .../db98cx8580_16cd/buffers_config.j2 | 165 - .../db98cx8580_16cd/buffers_defaults_t0.j2 | 36 - .../db98cx8580_16cd/buffers_defaults_t1.j2 | 36 - .../db98cx8580_16cd/port_config.ini | 19 - .../db98cx8580_16cd/profile.ini | 2 - .../db98cx8580_16cd/sai.profile | 3 - .../default_sku | 1 - .../platform_asic | 1 - .../plugins/eeprom.py | 11 - .../plugins/sfputil.py | 248 -- .../pmon_daemon_control.json | 3 - .../installer.conf | 1 + .../ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 | 2 +- .../ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml | 140 +- .../ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 | 2 +- .../ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml | 212 +- .../rd98DX35xx/ASK-PP-AC5X-RD.md5 | 2 +- .../rd98DX35xx/ASK-PP-AC5X-RD.xml | 9 +- .../SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 | 2 +- .../SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml | 28 +- .../rd98DX35xx}/buffers.json.j2 | 1 + .../rd98DX35xx/buffers_defaults_t0.j2 | 49 + .../rd98DX35xx/buffers_defaults_t1.j2 | 49 + .../rd98DX35xx}/qos.json.j2 | 0 .../ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 | 2 +- .../ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml | 140 +- .../ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 | 2 +- .../ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml | 212 +- .../rd98DX35xx_cn9131/ASK-PP-AC5X-RD.md5 | 2 +- .../rd98DX35xx_cn9131/ASK-PP-AC5X-RD.xml | 9 +- .../SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 | 2 +- .../SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml | 28 +- .../rd98DX35xx_cn9131}/buffers.json.j2 | 1 + .../rd98DX35xx_cn9131/buffers_defaults_t0.j2 | 49 + .../rd98DX35xx_cn9131/buffers_defaults_t1.j2 | 49 + .../rd98DX35xx_cn9131}/qos.json.j2 | 0 .../armhf-marvell_et6448m_52x-r0/default_sku | 1 - .../et6448m/buffers_defaults_t1.j2 | 45 - .../et6448m/port_config.ini | 53 - .../et6448m/profile.ini | 1 - .../et6448m/sai.profile | 3 - .../armhf-marvell_et6448m_52x-r0/fancontrol | 9 - .../platform_asic | 1 - .../plugins/eeprom.py | 11 - .../plugins/psuutil.py | 69 - .../plugins/sfputil.py | 263 -- .../pmon_daemon_control.json | 4 - .../armhf-marvell_et6448m_52x-r0/sensors.conf | 18 - .../ASK-Board-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-Board-F2T_48x25G-8x100G.xml | 168 +- .../ASK-L1-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-L1-F2T_48x25G-8x100G.xml | 526 ++- .../ASK-PP-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-PP-F2T_48x25G-8x100G.xml | 9 +- .../F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.md5 | 2 +- .../F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.xml | 45 +- .../F2T48x25G8x100G/buffers_defaults_t0.j2 | 55 +- .../F2T48x25G8x100G/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../F2T80x25G/ASK-Board-F2T_80x25G.md5 | 2 +- .../F2T80x25G/ASK-Board-F2T_80x25G.xml | 192 +- .../F2T80x25G/ASK-L1-F2T_80x25G.md5 | 2 +- .../F2T80x25G/ASK-L1-F2T_80x25G.xml | 940 +++--- .../F2T80x25G/ASK-PP-F2T_80x25G.md5 | 2 +- .../F2T80x25G/ASK-PP-F2T_80x25G.xml | 9 +- .../F2T80x25G/SAI-F2T_80x25G.md5 | 2 +- .../F2T80x25G/SAI-F2T_80x25G.xml | 208 +- .../F2T80x25G/buffers_defaults_t0.j2 | 55 +- .../F2T80x25G/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../F2T80x25G/hwsku.json | 443 +++ .../F2T80x25G/port_config.ini | 166 +- .../ASK-Board-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-Board-F2T_48x25G-8x100G.xml | 168 +- .../ASK-L1-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-L1-F2T_48x25G-8x100G.xml | 526 ++- .../ASK-PP-F2T_48x25G-8x100G.md5 | 2 +- .../ASK-PP-F2T_48x25G-8x100G.xml | 9 +- .../db98cx8514_10cc/SAI-F2T_48x25G-8x100G.md5 | 2 +- .../db98cx8514_10cc/SAI-F2T_48x25G-8x100G.xml | 45 +- .../db98cx8514_10cc/buffers.json.j2 | 1 + .../db98cx8514_10cc/buffers_defaults_t0.j2 | 55 +- .../db98cx8514_10cc/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../platform.json | 411 +++ .../FC128x25G/ASK-Board-F3_2T-128x25G.md5 | 2 +- .../FC128x25G/ASK-Board-F3_2T-128x25G.xml | 141 +- .../FC128x25G/ASK-L1-F3_2T-128x25G.md5 | 2 +- .../FC128x25G/ASK-L1-F3_2T-128x25G.xml | 137 +- .../FC128x25G/ASK-PP-F3_2T-128x25G.md5 | 2 +- .../FC128x25G/ASK-PP-F3_2T-128x25G.xml | 9 +- .../FC128x25G/SAI-F3_2T-128x25G.md5 | 2 +- .../FC128x25G/SAI-F3_2T-128x25G.xml | 22 +- .../ASK-Board-F3_2T-128x25G.md5 | 2 +- .../ASK-Board-F3_2T-128x25G.xml | 141 +- .../db98cx8522_10cc/ASK-L1-F3_2T-128x25G.md5 | 2 +- .../db98cx8522_10cc/ASK-L1-F3_2T-128x25G.xml | 137 +- .../db98cx8522_10cc/ASK-PP-F3_2T-128x25G.md5 | 2 +- .../db98cx8522_10cc/ASK-PP-F3_2T-128x25G.xml | 9 +- .../db98cx8522_10cc/SAI-F3_2T-128x25G.md5 | 2 +- .../db98cx8522_10cc/SAI-F3_2T-128x25G.xml | 22 +- .../platform.json | 32 +- .../FC128x50G/ASK-Board-F6_4T-128x50G.md5 | 2 +- .../FC128x50G/ASK-Board-F6_4T-128x50G.xml | 233 +- .../FC128x50G/ASK-L1-F6_4T-128x50G.md5 | 2 +- .../FC128x50G/ASK-L1-F6_4T-128x50G.xml | 2383 +++++++------ .../FC128x50G/ASK-PP-F6_4T-128x50G.md5 | 2 +- .../FC128x50G/ASK-PP-F6_4T-128x50G.xml | 9 +- .../FC128x50G/SAI-F6_4T-128x50G.md5 | 2 +- .../FC128x50G/SAI-F6_4T-128x50G.xml | 301 +- .../FC128x50G/buffers_defaults_t0.j2 | 55 +- .../FC128x50G/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../FC128x50G/hwsku.json | 780 +++++ .../FC128x50G/port_config.ini | 262 +- .../ASK-Board-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-Board-F6_4T-48x25G-4x100G.xml | 157 +- .../ASK-L1-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-L1-F6_4T-48x25G-4x100G.xml | 522 ++- .../ASK-PP-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-PP-F6_4T-48x25G-4x100G.xml | 9 +- .../SAI-F6_4T-48x25G-4x100G.md5 | 2 +- .../SAI-F6_4T-48x25G-4x100G.xml | 45 +- .../FC48x25G4x100GR4/buffers_defaults_t0.j2 | 55 +- .../FC48x25G4x100GR4/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../ASK-Board-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-Board-F6_4T-48x25G-4x100G.xml | 157 +- .../ASK-L1-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-L1-F6_4T-48x25G-4x100G.xml | 522 ++- .../ASK-PP-F6_4T-48x25G-4x100G.md5 | 2 +- .../ASK-PP-F6_4T-48x25G-4x100G.xml | 9 +- .../SAI-F6_4T-48x25G-4x100G.md5 | 2 +- .../SAI-F6_4T-48x25G-4x100G.xml | 45 +- .../db98cx8540_16cd/buffers.json.j2 | 1 + .../db98cx8540_16cd/buffers_defaults_t0.j2 | 55 +- .../db98cx8540_16cd/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../platform.json | 194 ++ .../FALCON16X25G/buffers_defaults_t0.j2 | 36 - .../FALCON16X25G/buffers_defaults_t1.j2 | 36 - .../FALCON16X25G/port_config.ini | 19 - .../FALCON16X25G/profile.ini | 2 - .../FALCON16X25G/sai.profile | 3 - .../FALCON16x400G/buffers_defaults_t0.j2 | 36 - .../FALCON16x400G/buffers_defaults_t1.j2 | 36 - .../FALCON16x400G/port_config.ini | 19 - .../FALCON16x400G/profile.ini | 2 - .../FALCON16x400G/sai.profile | 3 - .../FALCON32X25G/buffers_defaults_t0.j2 | 36 - .../FALCON32X25G/buffers_defaults_t1.j2 | 36 - .../FALCON32X25G/port_config.ini | 35 - .../FALCON32X25G/profile.ini | 2 - .../FALCON32X25G/sai.profile | 3 - .../db98cx8580_16cd/buffers_config.j2 | 165 - .../db98cx8580_16cd/buffers_defaults_t0.j2 | 36 - .../db98cx8580_16cd/buffers_defaults_t1.j2 | 36 - .../db98cx8580_16cd/port_config.ini | 19 - .../db98cx8580_16cd/profile.ini | 2 - .../db98cx8580_16cd/sai.profile | 3 - .../default_sku | 1 - .../platform_asic | 1 - .../plugins/eeprom.py | 11 - .../plugins/sfputil.py | 248 -- .../pmon_daemon_control.json | 3 - .../FALCON32X25G/ASK-Board-F12_8T_32x25G.md5 | 2 +- .../FALCON32X25G/ASK-Board-F12_8T_32x25G.xml | 121 +- .../FALCON32X25G/ASK-L1-F12_8T_32x25G.md5 | 2 +- .../FALCON32X25G/ASK-L1-F12_8T_32x25G.xml | 501 +-- .../FALCON32X25G/ASK-PP-F12_8T_32x25G.md5 | 2 +- .../FALCON32X25G/ASK-PP-F12_8T_32x25G.xml | 9 +- .../FALCON32X25G/SAI-F12_8T_32x25G.md5 | 2 +- .../FALCON32X25G/SAI-F12_8T_32x25G.xml | 48 +- .../FALCON32X25G/buffers_defaults_t0.j2 | 55 +- .../FALCON32X25G/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../FALCON_DB/ASK-Board-F12_8T-DB.md5 | 2 +- .../FALCON_DB/ASK-Board-F12_8T-DB.xml | 2733 +++++++++++++-- .../FALCON_DB/ASK-L1-F12_8T-DB.md5 | 2 +- .../FALCON_DB/ASK-L1-F12_8T-DB.xml | 2965 +++++++++++------ .../FALCON_DB/ASK-PP-F12_8T-DB.md5 | 2 +- .../FALCON_DB/ASK-PP-F12_8T-DB.xml | 9 +- .../FALCON_DB/SAI-F12_8T-DB.md5 | 2 +- .../FALCON_DB/SAI-F12_8T-DB.xml | 979 ++++-- .../FALCON_DB/buffers_defaults_t0.j2 | 55 +- .../FALCON_DB/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../FALCON_DB/hwsku.json | 1410 ++++++++ .../FALCON_DB/port_config.ini | 374 ++- .../ASK-Board-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-Board-F12_8T-48x25G-8x100G.xml | 157 +- .../ASK-L1-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-L1-F12_8T-48x25G-8x100G.xml | 525 ++- .../ASK-PP-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-PP-F12_8T-48x25G-8x100G.xml | 9 +- .../SAI-F12_8T-48x25G-8x100G.md5 | 2 +- .../SAI-F12_8T-48x25G-8x100G.xml | 45 +- .../FC48x25G8x100GR4/buffers_defaults_t0.j2 | 55 +- .../FC48x25G8x100GR4/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../ASK-Board-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-Board-F12_8T-48x25G-8x100G.xml | 157 +- .../ASK-L1-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-L1-F12_8T-48x25G-8x100G.xml | 525 ++- .../ASK-PP-F12_8T-48x25G-8x100G.md5 | 2 +- .../ASK-PP-F12_8T-48x25G-8x100G.xml | 9 +- .../SAI-F12_8T-48x25G-8x100G.md5 | 2 +- .../SAI-F12_8T-48x25G-8x100G.xml | 45 +- .../db98cx8580_32cd/buffers.json.j2 | 1 + .../db98cx8580_32cd/buffers_defaults_t0.j2 | 55 +- .../db98cx8580_32cd/buffers_defaults_t1.j2 | 55 +- .../create_only_config_db_buffers.json | 7 + .../platform.json | 351 ++ .../SLM5401-54x/port_config.ini | 55 - .../SLM5401-54x/sai.profile | 2 - .../x86_64-marvell_slm5401_54x-r0/default_sku | 1 - .../installer.conf | 3 - .../platform_asic | 1 - .../plugins/eeprom.py | 23 - .../plugins/sfputil.py | 132 - 235 files changed, 15842 insertions(+), 9888 deletions(-) delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/default_sku delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/platform_asic delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py delete mode 100644 device/marvell/arm64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json rename device/marvell/{arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd => arm64-marvell_rd98DX35xx-r0/rd98DX35xx}/buffers.json.j2 (53%) create mode 100644 device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t0.j2 create mode 100644 device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t1.j2 rename device/marvell/{arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd => arm64-marvell_rd98DX35xx-r0/rd98DX35xx}/qos.json.j2 (100%) rename device/marvell/{x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd => arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131}/buffers.json.j2 (53%) create mode 100644 device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t0.j2 create mode 100644 device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t1.j2 rename device/marvell/{x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd => arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131}/qos.json.j2 (100%) delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/default_sku delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/buffers_defaults_t1.j2 delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/port_config.ini delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/profile.ini delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/sai.profile delete mode 100755 device/marvell/armhf-marvell_et6448m_52x-r0/fancontrol delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/platform_asic delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/plugins/eeprom.py delete mode 100755 device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py delete mode 100755 device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/pmon_daemon_control.json delete mode 100644 device/marvell/armhf-marvell_et6448m_52x-r0/sensors.conf create mode 100644 device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/hwsku.json create mode 100644 device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8514_10cc-r0/platform.json create mode 100644 device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/hwsku.json create mode 100644 device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8540_16cd-r0/platform.json delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/default_sku delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/platform_asic delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py delete mode 100644 device/marvell/x86_64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/hwsku.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/create_only_config_db_buffers.json create mode 100644 device/marvell/x86_64-marvell_db98cx8580_32cd-r0/platform.json delete mode 100755 device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/port_config.ini delete mode 100755 device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/sai.profile delete mode 100644 device/marvell/x86_64-marvell_slm5401_54x-r0/default_sku delete mode 100755 device/marvell/x86_64-marvell_slm5401_54x-r0/installer.conf delete mode 100644 device/marvell/x86_64-marvell_slm5401_54x-r0/platform_asic delete mode 100755 device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/eeprom.py delete mode 100755 device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/sfputil.py diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini deleted file mode 100644 index 074c0344c896..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0 25000 twenty5GigE0 -Ethernet1 1 25000 twenty5GigE1 -Ethernet2 2 25000 twenty5GigE2 -Ethernet3 3 25000 twenty5GigE3 -Ethernet4 4 25000 twenty5GigE4 -Ethernet5 5 25000 twenty5GigE5 -Ethernet6 6 25000 twenty5GigE6 -Ethernet7 7 25000 twenty5GigE7 -Ethernet8 8 25000 twenty5GigE8 -Ethernet9 9 25000 twenty5GigE9 -Ethernet10 10 25000 twenty5GigE10 -Ethernet11 11 25000 twenty5GigE11 -Ethernet12 12 25000 twenty5GigE12 -Ethernet13 13 25000 twenty5GigE13 -Ethernet14 14 25000 twenty5GigE14 -Ethernet15 15 25000 twenty5GigE15 -Ethernet16 16 10000 tenGigE16 -Ethernet17 17 10000 tenGigE17 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini deleted file mode 100644 index aeaafc4e6e4d..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 001:1 002:1 003:1 004:1 005:1 006:1 007:1 008:1 009:1 010:1 011:1 012:1 013:1 014:1 015:1 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile deleted file mode 100644 index 2c9623c91105..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16X25G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini deleted file mode 100644 index 6a9bfda3fb8b..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0,1,2,3,4,5,6,7 400000 four00GigE0 -Ethernet8 8,9,10,11,12,13,14,15 400000 four00GigE1 -Ethernet16 16,17,18,19,20,21,22,23 400000 four00GigE2 -Ethernet24 24,25,26,27,28,29,30,31 400000 four00GigE2 -Ethernet32 32,33,34,35,36,37,38,39 400000 four00GigE3 -Ethernet40 40,41,42,43,44,45,46,47 400000 four00GigE4 -Ethernet48 48,49,50,51,52,53,54,55 400000 four00GigE5 -Ethernet56 56,57,58,59,60,61,62,63 400000 four00GigE6 -Ethernet64 64,65,66,67,68,69,70,71 400000 four00GigE7 -Ethernet72 72,73,74,75,76,77,78,79 400000 four00GigE8 -Ethernet80 80,81,82,83,84,85,86,87 400000 four00GigE9 -Ethernet88 88,89,90,91,92,93,94,95 400000 four00GigE10 -Ethernet96 96,97,98,99,100,101,102,103 400000 four00GigE11 -Ethernet104 104,105,106,107,108,109,110,111 400000 four00GigE12 -Ethernet112 112,113,114,115,116,117,118,119 400000 four00GigE13 -Ethernet120 120,121,122,123,124,125,126,127 400000 four00GigE14 -Ethernet128 128 10000 tenGigE128 -Ethernet129 129 10000 tenGigE129 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini deleted file mode 100644 index 16847ec03ae2..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 008:1 016:1 024:1 032:1 040:1 048:1 056:1 064:1 072:1 080:1 088:1 096:1 104:1 112:1 120:1 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile deleted file mode 100644 index 6a2438f50180..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16x400G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 deleted file mode 100644 index f056413e8283..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 deleted file mode 100644 index f056413e8283..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini deleted file mode 100644 index d0402fd44317..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini +++ /dev/null @@ -1,35 +0,0 @@ -# name lanes speed alias -Ethernet0 0 25000 twenty5GigE0 -Ethernet1 1 25000 twenty5GigE1 -Ethernet2 2 25000 twenty5GigE2 -Ethernet3 3 25000 twenty5GigE3 -Ethernet4 4 25000 twenty5GigE4 -Ethernet5 5 25000 twenty5GigE5 -Ethernet6 6 25000 twenty5GigE6 -Ethernet7 7 25000 twenty5GigE7 -Ethernet8 8 25000 twenty5GigE8 -Ethernet9 9 25000 twenty5GigE9 -Ethernet10 10 25000 twenty5GigE10 -Ethernet11 11 25000 twenty5GigE11 -Ethernet12 12 25000 twenty5GigE12 -Ethernet13 13 25000 twenty5GigE13 -Ethernet14 14 25000 twenty5GigE14 -Ethernet15 15 25000 twenty5GigE15 -Ethernet16 16 25000 twenty5GigE16 -Ethernet17 17 25000 twenty5GigE17 -Ethernet18 18 25000 twenty5GigE18 -Ethernet19 19 25000 twenty5GigE19 -Ethernet20 20 25000 twenty5GigE20 -Ethernet21 21 25000 twenty5GigE21 -Ethernet22 22 25000 twenty5GigE22 -Ethernet23 23 25000 twenty5GigE23 -Ethernet24 24 25000 twenty5GigE24 -Ethernet25 25 25000 twenty5GigE25 -Ethernet26 26 25000 twenty5GigE26 -Ethernet27 27 25000 twenty5GigE27 -Ethernet28 28 25000 twenty5GigE28 -Ethernet29 29 25000 twenty5GigE29 -Ethernet30 30 25000 twenty5GigE30 -Ethernet31 31 25000 twenty5GigE31 -Ethernet32 32 10000 tenGigE32 -Ethernet33 33 10000 tenGigE33 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini deleted file mode 100644 index 0ffbefa05805..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 001:1 002:1 003:1 004:1 005:1 006:1 007:1 008:1 009:1 010:1 011:1 012:1 013:1 014:1 015:1 016:1 017:1 018:1 019:1 020:1 021:1 022:1 023:1 024:1 025:1 026:1 027:1 028:1 029:1 030:1 031:1 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile deleted file mode 100644 index fa9983612117..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON32x25G64 -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 deleted file mode 100644 index 6ad65b4f7309..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 +++ /dev/null @@ -1,165 +0,0 @@ -{%- macro set_default_topology() %} -{%- if default_topo is defined %} -{{ default_topo }} -{%- else %} -def -{%- endif %} -{%- endmacro -%} - -{# Determine device topology and filename postfix #} -{%- if DEVICE_METADATA is defined %} -{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} -{%- if 'torrouter' in switch_role.lower() %} -{%- set filename_postfix = 't0' %} -{%- elif 'leafrouter' in switch_role.lower() %} -{%- set filename_postfix = 't1' %} -{%- else %} -{%- set filename_postfix = set_default_topology() %} -{%- endif %} -{%- else %} -{%- set filename_postfix = set_default_topology() %} -{%- set switch_role = '' %} -{%- endif -%} - -{# Import default values from device HWSKU folder #} -{%- import 'buffers_defaults_%s.j2' % filename_postfix as defs %} - -{%- set default_cable = defs.default_cable -%} - -{# Port configuration to cable length look-up table #} -{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} -{# Roles described in the minigraph #} -{%- if defs.ports2cable is defined %} - {%- set ports2cable = defs.ports2cable %} -{%- else %} - {%- set ports2cable = { - 'torrouter_server' : '5m', - 'leafrouter_torrouter' : '40m', - 'spinerouter_leafrouter' : '300m' - } - -%} -{%- endif %} - -{%- macro cable_length(port_name) %} - {%- set cable_len = [] %} - {%- for local_port in DEVICE_NEIGHBOR %} - {%- if local_port == port_name %} - {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} - {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} - {%- set neighbor_role = neighbor.type %} - {%- set roles1 = switch_role + '_' + neighbor_role %} - {%- set roles2 = neighbor_role + '_' + switch_role %} - {%- set roles1 = roles1 | lower %} - {%- set roles2 = roles2 | lower %} - {%- if roles1 in ports2cable %} - {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} - {%- elif roles2 in ports2cable %} - {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} - {%- endif %} - {%- endif %} - {%- endif %} - {%- endfor %} - {%- if cable_len -%} - {{ cable_len.0 }} - {%- else %} - {%- if 'torrouter' in switch_role.lower() %} - {%- for local_port in VLAN_MEMBER %} - {%- if local_port[1] == port_name %} - {%- set roles3 = switch_role + '_' + 'server' %} - {%- set roles3 = roles3 | lower %} - {%- if roles3 in ports2cable %} - {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} - {%- endif %} - {%- endif %} - {%- endfor %} - {%- if cable_len -%} - {{ cable_len.0 }} - {%- else -%} - {{ default_cable }} - {%- endif %} - {%- else -%} - {{ default_cable }} - {%- endif %} - {%- endif %} -{%- endmacro %} - -{%- set PORT_ALL = [] %} - -{%- if PORT is not defined %} - {%- if defs.generate_port_lists(PORT_ALL) %} {% endif %} -{%- else %} - {%- for port in PORT %} - {%- if PORT_ALL.append(port) %}{%- endif %} - {%- endfor %} -{%- endif %} - -{%- set PORT_ACTIVE = [] %} -{%- if DEVICE_NEIGHBOR is not defined %} - {%- set PORT_ACTIVE = PORT_ALL %} -{%- else %} - {%- for port in DEVICE_NEIGHBOR.keys() %} - {%- if PORT_ACTIVE.append(port) %}{%- endif %} - {%- endfor %} -{%- endif %} - -{%- set port_names_list_active = [] %} -{%- for port in PORT_ACTIVE %} - {%- if port_names_list_active.append(port) %}{%- endif %} -{%- endfor %} -{%- set port_names_active = port_names_list_active | join(',') %} - -{ - "CABLE_LENGTH": { - "AZURE": { - {% for port in PORT_ALL %} - {%- set cable = cable_length(port) %} - "{{ port }}": "{{ cable }}"{%- if not loop.last %},{% endif %} - - {% endfor %} - } - }, - -{% if defs.generate_buffer_pool_and_profiles is defined %} -{{ defs.generate_buffer_pool_and_profiles() }} -{% endif %} - -{%- if defs.generate_profile_lists is defined %} -{{ defs.generate_profile_lists(port_names_active) }}, -{% endif %} - -{%- if defs.generate_pg_profils is defined %} -{{ defs.generate_pg_profils(port_names_active) }} -{% else %} - "BUFFER_PG": { -{% for port in PORT_ACTIVE %} - "{{ port }}|0": { - "profile" : "ingress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} - }, -{% endif %} - -{% if defs.generate_queue_buffers is defined %} -{{ defs.generate_queue_buffers(port_names_active) }} -{% else %} - "BUFFER_QUEUE": { -{% for port in PORT_ACTIVE %} - "{{ port }}|3-4": { - "profile" : "egress_lossless_profile" - }, -{% endfor %} -{% for port in PORT_ACTIVE %} - "{{ port }}|0-2": { - "profile" : "egress_lossy_profile" - }, -{% endfor %} -{% for port in PORT_ACTIVE %} - "{{ port }}|5-6": { - "profile" : "egress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} - } -{% endif %} -} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini deleted file mode 100644 index 6a9bfda3fb8b..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0,1,2,3,4,5,6,7 400000 four00GigE0 -Ethernet8 8,9,10,11,12,13,14,15 400000 four00GigE1 -Ethernet16 16,17,18,19,20,21,22,23 400000 four00GigE2 -Ethernet24 24,25,26,27,28,29,30,31 400000 four00GigE2 -Ethernet32 32,33,34,35,36,37,38,39 400000 four00GigE3 -Ethernet40 40,41,42,43,44,45,46,47 400000 four00GigE4 -Ethernet48 48,49,50,51,52,53,54,55 400000 four00GigE5 -Ethernet56 56,57,58,59,60,61,62,63 400000 four00GigE6 -Ethernet64 64,65,66,67,68,69,70,71 400000 four00GigE7 -Ethernet72 72,73,74,75,76,77,78,79 400000 four00GigE8 -Ethernet80 80,81,82,83,84,85,86,87 400000 four00GigE9 -Ethernet88 88,89,90,91,92,93,94,95 400000 four00GigE10 -Ethernet96 96,97,98,99,100,101,102,103 400000 four00GigE11 -Ethernet104 104,105,106,107,108,109,110,111 400000 four00GigE12 -Ethernet112 112,113,114,115,116,117,118,119 400000 four00GigE13 -Ethernet120 120,121,122,123,124,125,126,127 400000 four00GigE14 -Ethernet128 128 10000 tenGigE128 -Ethernet129 129 10000 tenGigE129 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini deleted file mode 100644 index 16847ec03ae2..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 008:1 016:1 024:1 032:1 040:1 048:1 056:1 064:1 072:1 080:1 088:1 096:1 104:1 112:1 120:1 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile deleted file mode 100644 index 6a2438f50180..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16x400G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/default_sku b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/default_sku deleted file mode 100644 index 7908e555c02c..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/default_sku +++ /dev/null @@ -1 +0,0 @@ -db98cx8580_16cd t1 diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/platform_asic b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/platform_asic deleted file mode 100644 index a554752878b7..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/platform_asic +++ /dev/null @@ -1 +0,0 @@ -marvell diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py deleted file mode 100644 index 71f05c5b70f5..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py +++ /dev/null @@ -1,11 +0,0 @@ -try: - from sonic_eeprom import eeprom_tlvinfo -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class board(eeprom_tlvinfo.TlvInfoDecoder): - - def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/etc/sonic/eeprom" - super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py deleted file mode 100644 index 500bdda8f2d6..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py +++ /dev/null @@ -1,248 +0,0 @@ -try: - import os - import time - 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") - -smbus_present = 1 - -try: - import smbus -except ImportError as e: - smbus_present = 0 - - -class SfpUtil(SfpUtilBase): - """Platform specific sfputil class""" - _port_start = 1 - _port_end = 132 - ports_in_block = 132 - - _port_to_eeprom_mapping = {} - - _qsfp_ports = list(range(_port_start, ports_in_block + 1)) - - def __init__(self): - subprocess.call(["modprobe", "i2c-dev"]) - if not os.path.exists("/sys/bus/i2c/devices/0-0050"): - 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): - x = self.port_start - while(x < self.port_end+1): - self.port_to_eeprom_mapping[x] = eeprom_path - x = x + 1 - SfpUtilBase.__init__(self) - - def reset(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - - port_ps = "/sys/bus/i2c/devices/0-0050/sfp_port_reset" - - try: - reg_file = open(port_ps, 'w') - except IOError as e: - print("Error: unable to open file: %s" % str(e)) - return False - - # toggle reset - reg_file.seek(0) - reg_file.write('1') - time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() - return True - - def set_low_power_mode(self, port_nuM, lpmode): - raise NotImplementedError - - def get_low_power_mode(self, port_num): - raise NotImplementedError - - def i2c_get(self, device_addr, offset): - status = 0 - if smbus_present == 0: - x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)] - cmdstatus, status = getstatusoutput_noshell(x) - if cmdstatus != 0: - return cmdstatus - status = int(status, 16) - else: - bus = smbus.SMBus(0) - status = bus.read_byte_data(device_addr, offset) - return status - - def i2c_set(self, device_addr, offset, value): - if smbus_present == 0: - 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) - - def get_presence(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - else: - self.i2c_set(0x70, 0, 0) - self.i2c_set(0x71, 0, 0) - self.i2c_set(0x74, 0, 0) - reg = (port_num)/8 - offset = reg % 8 - if offset >= 4: - offset = offset-4 - elif offset < 4: - offset = offset+4 - bin_offset = 1 << offset - - if port_num >= 0 and port_num <= 63: - device_reg = 0x70 - elif port_num >= 64 and port_num <= 127: - device_reg = 0x71 - elif port_num >= 128 and port_num <= 131: - device_reg = 0x74 - - #print "i2c %d %x %x" % (port_num, device_reg, bin_offset) - self.i2c_set(device_reg, 0, bin_offset) - path = "/sys/bus/i2c/devices/0-0050/eeprom" - try: - reg_file = open(path) - reg_file.seek(0o1) - reg_file.read(0o2) - except IOError as e: - return False - - return True - - def read_porttab_mappings(self, porttabfile): - #print("I am in porttab_mappings") - logical = [] - logical_to_bcm = {} - logical_to_physical = {} - physical_to_logical = {} - last_fp_port_index = 0 - last_portname = "" - first = 1 - port_pos_in_file = 0 - parse_fmt_port_config_ini = False - - try: - f = open(porttabfile) - except: - raise - - parse_fmt_port_config_ini = (os.path.basename(porttabfile) == "port_config.ini") - # Read the porttab file and generate dicts - # with mapping for future reference. - # - # TODO: Refactor this to use the portconfig.py module that now - # exists as part of the sonic-config-engine package. - title = [] - for line in f: - line.strip() - if re.search("^#", line) is not None: - # The current format is: # name lanes alias index speed - # Where the ordering of the columns can vary - title = line.split()[1:] - continue - #print title - - # Parsing logic for 'port_config.ini' file - if (parse_fmt_port_config_ini): - # bcm_port is not explicitly listed in port_config.ini format - # Currently we assume ports are listed in numerical order according to bcm_port - # so we use the port's position in the file (zero-based) as bcm_port - portname = line.split()[0] - - bcm_port = str(port_pos_in_file) - - if "index" in title: - fp_port_index = int(line.split()[title.index("index")]) - # Leave the old code for backward compatibility - # if len(line.split()) >= 4: - # fp_port_index = (line.split()[3]) - # print(fp_port_index) - else: - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - else: # Parsing logic for older 'portmap.ini' file - (portname, bcm_port) = line.split("=")[1].split(",")[:2] - - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - - if ((len(self.sfp_ports) > 0) and (fp_port_index not in self.sfp_ports)): - continue - - if first == 1: - # Initialize last_[physical|logical]_port - # to the first valid port - last_fp_port_index = fp_port_index - last_portname = portname - first = 0 - - logical.append(portname) - - logical_to_bcm[portname] = "xe" + bcm_port - logical_to_physical[portname] = [fp_port_index] - if physical_to_logical.get(fp_port_index) is None: - physical_to_logical[fp_port_index] = [portname] - else: - physical_to_logical[fp_port_index].append( - portname) - - if (fp_port_index - last_fp_port_index) > 1: - # last port was a gang port - for p in range(last_fp_port_index+1, fp_port_index): - logical_to_physical[last_portname].append(p) - if physical_to_logical.get(p) is None: - physical_to_logical[p] = [last_portname] - else: - physical_to_logical[p].append(last_portname) - - last_fp_port_index = fp_port_index - last_portname = portname - - port_pos_in_file += 1 - - self.logical = logical - self.logical_to_bcm = logical_to_bcm - self.logical_to_physical = logical_to_physical - self.physical_to_logical = physical_to_logical - - # print(self.logical_to_physical) - '''print("logical: " + self.logical) - print("logical to bcm: " + self.logical_to_bcm) - print("logical to physical: " + self.logical_to_physical) - print("physical to logical: " + self.physical_to_logical)''' - #print("exiting port_tab_mappings") - - @property - def port_start(self): - return self._port_start - - @property - def port_end(self): - return self._port_end - - @property - def qsfp_ports(self): - return self._qsfp_ports - - @property - def port_to_eeprom_mapping(self): - return self._port_to_eeprom_mapping - - @property - def get_transceiver_change_event(self): - raise NotImplementedError diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json b/device/marvell/arm64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json deleted file mode 100644 index 94592fa8cebc..000000000000 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "skip_ledd": true -} diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/installer.conf b/device/marvell/arm64-marvell_rd98DX35xx-r0/installer.conf index d22a7b2ea73f..5331b235619e 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/installer.conf +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/installer.conf @@ -1 +1,2 @@ ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="default_hugepagesz=32M hugepages=4 mem=4G" +KEXEC_LOAD_EXTRA_CMDLINE_LINUX="reset_devices" diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 index a8dd0dadcaec..9f307b6da321 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -8b28fac0d174b9f0e9120f8ee8c52fd2 \ No newline at end of file +2c7ececd3f4a1debfc98ad80a626a244 \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml index ecda116a6ef1..d0d45adee92b 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_AC5X @@ -1708,6 +1668,26 @@ lowercase characters. false + + 19 + 0 + + + 28 + 1 + + + 29 + 1 + + + 30 + 2 + + + 31 + 2 + 0 diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 index e4baf309b51c..7da582d7a3c8 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -fcd5642435f602883aab5c9672e96aa5 \ No newline at end of file +6eefd0cf1c069f600c431cccf4b39e04 \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml index 78460a4e0a9e..7a9951454c56 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -234,26 +259,6 @@ 0 1023 - - tx-param-type - enumeration - Tx parameter type - - pre - pre - 0 - - - post - post - 1 - - - peak - peak - 2 - - rx-param-type enumeration @@ -428,6 +433,96 @@ maxRes1 33 + + current1Sel + current1Sel + 34 + + + rl1Sel + rl1Sel + 35 + + + rl1Extra + rl1Extra + 36 + + + cl1Ctrl + cl1Ctrl + 37 + + + enMidFreq + enMidFreq + 38 + + + cs1Mid + cs1Mid + 39 + + + rs1Mid + rs1Mid + 40 + + + rfCtrl + rfCtrl + 41 + + + rl1TiaSel + rl1TiaSel + 42 + + + rl1TiaExtra + rl1TiaExtra + 43 + + + hpfRSel1st + hpfRSel1st + 44 + + + current1TiaSel + current1TiaSel + 45 + + + rl2Tune + rl2Tune + 46 + + + rl2Sel + rl2Sel + 47 + + + rs2Sel + rs2Sel + 48 + + + current2Sel + current2Sel + 49 + + + hpfRsel2nd + hpfRsel2nd + 50 + + + align90AnaReg + align90AnaReg + 51 + boolean-type @@ -479,6 +574,26 @@ 5 + + phy-serdes-type + enumeration + Phy Serdes Type + + NA + No serdes + 0 + + + COMPHY + COMPHY + 1 + + + COMPHY_C28G + COMPHY_C28G + 2 + + port-interconnect-profile-type enumeration @@ -500,6 +615,7 @@ + ASIC_AC5X 1000MR1 @@ -601,6 +717,7 @@ 0 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -608,6 +725,7 @@ 1 COMPHY_C28G + NA profile_default 1000MR1 false @@ -615,6 +733,7 @@ 2 COMPHY_C28G + NA profile_default 1000MR1 false @@ -622,6 +741,7 @@ 3 COMPHY_C28G + NA profile_default 1000MR1 false @@ -629,6 +749,7 @@ 4 COMPHY_C28G + NA profile_default 1000MR1 false @@ -636,6 +757,7 @@ 5 COMPHY_C28G + NA profile_default 1000MR1 false @@ -643,6 +765,7 @@ 6 COMPHY_C28G + NA profile_default 1000MR1 false @@ -650,6 +773,7 @@ 7 COMPHY_C28G + NA profile_default 1000MR1 false @@ -657,6 +781,7 @@ 8 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -664,6 +789,7 @@ 9 COMPHY_C28G + NA profile_default 1000MR1 false @@ -671,6 +797,7 @@ 10 COMPHY_C28G + NA profile_default 1000MR1 false @@ -678,6 +805,7 @@ 11 COMPHY_C28G + NA profile_default 1000MR1 false @@ -685,6 +813,7 @@ 12 COMPHY_C28G + NA profile_default 1000MR1 false @@ -692,6 +821,7 @@ 13 COMPHY_C28G + NA profile_default 1000MR1 false @@ -699,6 +829,7 @@ 14 COMPHY_C28G + NA profile_default 1000MR1 false @@ -706,6 +837,7 @@ 15 COMPHY_C28G + NA profile_default 1000MR1 false @@ -713,6 +845,7 @@ 16 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -720,6 +853,7 @@ 17 COMPHY_C28G + NA profile_default 1000MR1 false @@ -727,6 +861,7 @@ 18 COMPHY_C28G + NA profile_default 1000MR1 false @@ -734,6 +869,7 @@ 19 COMPHY_C28G + NA profile_default 1000MR1 false @@ -741,6 +877,7 @@ 20 COMPHY_C28G + NA profile_default 1000MR1 false @@ -748,6 +885,7 @@ 21 COMPHY_C28G + NA profile_default 1000MR1 false @@ -755,6 +893,7 @@ 22 COMPHY_C28G + NA profile_default 1000MR1 false @@ -762,6 +901,7 @@ 23 COMPHY_C28G + NA profile_default 1000MR1 false @@ -769,6 +909,7 @@ 24 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -776,6 +917,7 @@ 25 COMPHY_C28G + NA profile_default 1000MR1 false @@ -783,6 +925,7 @@ 26 COMPHY_C28G + NA profile_default 1000MR1 false @@ -790,6 +933,7 @@ 27 COMPHY_C28G + NA profile_default 1000MR1 false @@ -797,6 +941,7 @@ 28 COMPHY_C28G + NA profile_default 1000MR1 false @@ -804,6 +949,7 @@ 29 COMPHY_C28G + NA profile_default 1000MR1 false @@ -811,6 +957,7 @@ 30 COMPHY_C28G + NA profile_default 1000MR1 false @@ -818,6 +965,7 @@ 31 COMPHY_C28G + NA profile_default 1000MR1 false @@ -825,6 +973,7 @@ 32 COMPHY_C28G + NA profile_default 2500MR1 false @@ -832,6 +981,7 @@ 33 COMPHY_C28G + COMPHY_C28G profile_default 2500MR1 false @@ -839,6 +989,7 @@ 34 COMPHY_C28G + NA profile_default 2500MR1 false @@ -846,6 +997,7 @@ 35 COMPHY_C28G + NA profile_default 2500MR1 false @@ -853,6 +1005,7 @@ 36 COMPHY_C28G + NA profile_default 2500MR1 false @@ -860,6 +1013,7 @@ 37 COMPHY_C28G + NA profile_default 2500MR1 false @@ -867,6 +1021,7 @@ 38 COMPHY_C28G + NA profile_default 2500MR1 false @@ -874,6 +1029,7 @@ 39 COMPHY_C28G + NA profile_default 2500MR1 false @@ -881,6 +1037,7 @@ 40 COMPHY_C28G + NA profile_default 2500MR1 false @@ -888,6 +1045,7 @@ 41 COMPHY_C28G + COMPHY_C28G profile_default 2500MR1 false @@ -895,6 +1053,7 @@ 42 COMPHY_C28G + NA profile_default 2500MR1 false @@ -902,6 +1061,7 @@ 43 COMPHY_C28G + NA profile_default 2500MR1 false @@ -909,6 +1069,7 @@ 44 COMPHY_C28G + NA profile_default 2500MR1 false @@ -916,6 +1077,7 @@ 45 COMPHY_C28G + NA profile_default 2500MR1 false @@ -923,6 +1085,7 @@ 46 COMPHY_C28G + NA profile_default 2500MR1 false @@ -930,6 +1093,7 @@ 47 COMPHY_C28G + NA profile_default 2500MR1 false @@ -937,6 +1101,7 @@ 48 COMPHY_C28G + NA profile_default 25GR1 false @@ -944,6 +1109,7 @@ 49 COMPHY_C28G + NA profile_default 25GR1 false @@ -951,6 +1117,7 @@ 50 COMPHY_C28G + NA profile_default 25GR1 false @@ -958,6 +1125,7 @@ 51 COMPHY_C28G + NA profile_default 25GR1 false @@ -965,6 +1133,7 @@ 52 COMPHY_C28G + NA profile_default 25GR1 false @@ -972,6 +1141,7 @@ 53 COMPHY_C28G + NA profile_default 25GR1 false diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.md5 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.md5 index a8cacfdd9823..f2c340a08c2b 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.md5 @@ -1 +1 @@ -7e0317c4f0c86cc16929b1a143d90c32 \ No newline at end of file +3010be072d1acf56947d57f43204dd3b \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.xml b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.xml index 8ed10be62722..4d2de0b5b9a9 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/ASK-PP-AC5X-RD.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_AC5X diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 index cee8e830a24f..5116a62850d1 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -feb884bbff293ba58dc7b1cae36aa1d1 \ No newline at end of file +177a9b33727abf76319b35804a7b5a08 \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml index 58298363c3e4..f2f3ae5ebd0a 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml @@ -1,5 +1,5 @@ - + @@ -166,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_AC5X @@ -454,12 +474,16 @@ 0 ROUTE_BLACKHOLE + + Disabled + Disabled + SAI_LOG_SYSLOG - Disabled + Disabled control-acl diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers.json.j2 similarity index 53% rename from device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 rename to device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers.json.j2 index a9a01d707ebf..0b1cb2c541b6 100644 --- a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers.json.j2 @@ -1 +1,2 @@ +{%- set default_topo = 't1' %} {%- include 'buffers_config.j2' %} diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..25b2f56083ae --- /dev/null +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t0.j2 @@ -0,0 +1,49 @@ + +{%- set default_cable = '40m' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" + }, + "egress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" + } + }, + "BUFFER_PROFILE": { + "egress_lossless_profile": { + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" + }, + "egress_lossy_profile": { + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" + } + }, +{%- endmacro %} diff --git a/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..25b2f56083ae --- /dev/null +++ b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/buffers_defaults_t1.j2 @@ -0,0 +1,49 @@ + +{%- set default_cable = '40m' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" + }, + "egress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" + } + }, + "BUFFER_PROFILE": { + "egress_lossless_profile": { + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" + }, + "egress_lossy_profile": { + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" + } + }, +{%- endmacro %} diff --git a/device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/qos.json.j2 b/device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/qos.json.j2 similarity index 100% rename from device/marvell/arm64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/qos.json.j2 rename to device/marvell/arm64-marvell_rd98DX35xx-r0/rd98DX35xx/qos.json.j2 diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 index 42941a1d23be..ad4d64fad002 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -1e32906bd09b43df35ce12534b2599c8 \ No newline at end of file +5dc308384e1733de73dde50ea7301eee \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml index 253c46780aaa..8d735d2b46c4 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-Board-ac5x-rd-32x1G-16x2_5G-6x25G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_AC5X @@ -1708,6 +1668,26 @@ lowercase characters. false + + 19 + 0 + + + 28 + 1 + + + 29 + 1 + + + 30 + 2 + + + 31 + 2 + 0 diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 index e4baf309b51c..7da582d7a3c8 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -fcd5642435f602883aab5c9672e96aa5 \ No newline at end of file +6eefd0cf1c069f600c431cccf4b39e04 \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml index 78460a4e0a9e..7a9951454c56 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-L1-AC5X-RD-32x1G-16x2_5G-6x25G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -234,26 +259,6 @@ 0 1023 - - tx-param-type - enumeration - Tx parameter type - - pre - pre - 0 - - - post - post - 1 - - - peak - peak - 2 - - rx-param-type enumeration @@ -428,6 +433,96 @@ maxRes1 33 + + current1Sel + current1Sel + 34 + + + rl1Sel + rl1Sel + 35 + + + rl1Extra + rl1Extra + 36 + + + cl1Ctrl + cl1Ctrl + 37 + + + enMidFreq + enMidFreq + 38 + + + cs1Mid + cs1Mid + 39 + + + rs1Mid + rs1Mid + 40 + + + rfCtrl + rfCtrl + 41 + + + rl1TiaSel + rl1TiaSel + 42 + + + rl1TiaExtra + rl1TiaExtra + 43 + + + hpfRSel1st + hpfRSel1st + 44 + + + current1TiaSel + current1TiaSel + 45 + + + rl2Tune + rl2Tune + 46 + + + rl2Sel + rl2Sel + 47 + + + rs2Sel + rs2Sel + 48 + + + current2Sel + current2Sel + 49 + + + hpfRsel2nd + hpfRsel2nd + 50 + + + align90AnaReg + align90AnaReg + 51 + boolean-type @@ -479,6 +574,26 @@ 5 + + phy-serdes-type + enumeration + Phy Serdes Type + + NA + No serdes + 0 + + + COMPHY + COMPHY + 1 + + + COMPHY_C28G + COMPHY_C28G + 2 + + port-interconnect-profile-type enumeration @@ -500,6 +615,7 @@ + ASIC_AC5X 1000MR1 @@ -601,6 +717,7 @@ 0 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -608,6 +725,7 @@ 1 COMPHY_C28G + NA profile_default 1000MR1 false @@ -615,6 +733,7 @@ 2 COMPHY_C28G + NA profile_default 1000MR1 false @@ -622,6 +741,7 @@ 3 COMPHY_C28G + NA profile_default 1000MR1 false @@ -629,6 +749,7 @@ 4 COMPHY_C28G + NA profile_default 1000MR1 false @@ -636,6 +757,7 @@ 5 COMPHY_C28G + NA profile_default 1000MR1 false @@ -643,6 +765,7 @@ 6 COMPHY_C28G + NA profile_default 1000MR1 false @@ -650,6 +773,7 @@ 7 COMPHY_C28G + NA profile_default 1000MR1 false @@ -657,6 +781,7 @@ 8 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -664,6 +789,7 @@ 9 COMPHY_C28G + NA profile_default 1000MR1 false @@ -671,6 +797,7 @@ 10 COMPHY_C28G + NA profile_default 1000MR1 false @@ -678,6 +805,7 @@ 11 COMPHY_C28G + NA profile_default 1000MR1 false @@ -685,6 +813,7 @@ 12 COMPHY_C28G + NA profile_default 1000MR1 false @@ -692,6 +821,7 @@ 13 COMPHY_C28G + NA profile_default 1000MR1 false @@ -699,6 +829,7 @@ 14 COMPHY_C28G + NA profile_default 1000MR1 false @@ -706,6 +837,7 @@ 15 COMPHY_C28G + NA profile_default 1000MR1 false @@ -713,6 +845,7 @@ 16 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -720,6 +853,7 @@ 17 COMPHY_C28G + NA profile_default 1000MR1 false @@ -727,6 +861,7 @@ 18 COMPHY_C28G + NA profile_default 1000MR1 false @@ -734,6 +869,7 @@ 19 COMPHY_C28G + NA profile_default 1000MR1 false @@ -741,6 +877,7 @@ 20 COMPHY_C28G + NA profile_default 1000MR1 false @@ -748,6 +885,7 @@ 21 COMPHY_C28G + NA profile_default 1000MR1 false @@ -755,6 +893,7 @@ 22 COMPHY_C28G + NA profile_default 1000MR1 false @@ -762,6 +901,7 @@ 23 COMPHY_C28G + NA profile_default 1000MR1 false @@ -769,6 +909,7 @@ 24 COMPHY_C28G + COMPHY profile_default 1000MR1 false @@ -776,6 +917,7 @@ 25 COMPHY_C28G + NA profile_default 1000MR1 false @@ -783,6 +925,7 @@ 26 COMPHY_C28G + NA profile_default 1000MR1 false @@ -790,6 +933,7 @@ 27 COMPHY_C28G + NA profile_default 1000MR1 false @@ -797,6 +941,7 @@ 28 COMPHY_C28G + NA profile_default 1000MR1 false @@ -804,6 +949,7 @@ 29 COMPHY_C28G + NA profile_default 1000MR1 false @@ -811,6 +957,7 @@ 30 COMPHY_C28G + NA profile_default 1000MR1 false @@ -818,6 +965,7 @@ 31 COMPHY_C28G + NA profile_default 1000MR1 false @@ -825,6 +973,7 @@ 32 COMPHY_C28G + NA profile_default 2500MR1 false @@ -832,6 +981,7 @@ 33 COMPHY_C28G + COMPHY_C28G profile_default 2500MR1 false @@ -839,6 +989,7 @@ 34 COMPHY_C28G + NA profile_default 2500MR1 false @@ -846,6 +997,7 @@ 35 COMPHY_C28G + NA profile_default 2500MR1 false @@ -853,6 +1005,7 @@ 36 COMPHY_C28G + NA profile_default 2500MR1 false @@ -860,6 +1013,7 @@ 37 COMPHY_C28G + NA profile_default 2500MR1 false @@ -867,6 +1021,7 @@ 38 COMPHY_C28G + NA profile_default 2500MR1 false @@ -874,6 +1029,7 @@ 39 COMPHY_C28G + NA profile_default 2500MR1 false @@ -881,6 +1037,7 @@ 40 COMPHY_C28G + NA profile_default 2500MR1 false @@ -888,6 +1045,7 @@ 41 COMPHY_C28G + COMPHY_C28G profile_default 2500MR1 false @@ -895,6 +1053,7 @@ 42 COMPHY_C28G + NA profile_default 2500MR1 false @@ -902,6 +1061,7 @@ 43 COMPHY_C28G + NA profile_default 2500MR1 false @@ -909,6 +1069,7 @@ 44 COMPHY_C28G + NA profile_default 2500MR1 false @@ -916,6 +1077,7 @@ 45 COMPHY_C28G + NA profile_default 2500MR1 false @@ -923,6 +1085,7 @@ 46 COMPHY_C28G + NA profile_default 2500MR1 false @@ -930,6 +1093,7 @@ 47 COMPHY_C28G + NA profile_default 2500MR1 false @@ -937,6 +1101,7 @@ 48 COMPHY_C28G + NA profile_default 25GR1 false @@ -944,6 +1109,7 @@ 49 COMPHY_C28G + NA profile_default 25GR1 false @@ -951,6 +1117,7 @@ 50 COMPHY_C28G + NA profile_default 25GR1 false @@ -958,6 +1125,7 @@ 51 COMPHY_C28G + NA profile_default 25GR1 false @@ -965,6 +1133,7 @@ 52 COMPHY_C28G + NA profile_default 25GR1 false @@ -972,6 +1141,7 @@ 53 COMPHY_C28G + NA profile_default 25GR1 false diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.md5 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.md5 index a8cacfdd9823..f2c340a08c2b 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.md5 @@ -1 +1 @@ -7e0317c4f0c86cc16929b1a143d90c32 \ No newline at end of file +3010be072d1acf56947d57f43204dd3b \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.xml b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.xml index 8ed10be62722..4d2de0b5b9a9 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/ASK-PP-AC5X-RD.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_AC5X diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 index cee8e830a24f..5116a62850d1 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.md5 @@ -1 +1 @@ -feb884bbff293ba58dc7b1cae36aa1d1 \ No newline at end of file +177a9b33727abf76319b35804a7b5a08 \ No newline at end of file diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml index 58298363c3e4..f2f3ae5ebd0a 100644 --- a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/SAI-AC5X-RD-32x1G-16x2_5G-6x25G.xml @@ -1,5 +1,5 @@ - + @@ -166,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_AC5X @@ -454,12 +474,16 @@ 0 ROUTE_BLACKHOLE + + Disabled + Disabled + SAI_LOG_SYSLOG - Disabled + Disabled control-acl diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers.json.j2 similarity index 53% rename from device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 rename to device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers.json.j2 index a9a01d707ebf..0b1cb2c541b6 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers.json.j2 +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers.json.j2 @@ -1 +1,2 @@ +{%- set default_topo = 't1' %} {%- include 'buffers_config.j2' %} diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t0.j2 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..25b2f56083ae --- /dev/null +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t0.j2 @@ -0,0 +1,49 @@ + +{%- set default_cable = '40m' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" + }, + "egress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" + } + }, + "BUFFER_PROFILE": { + "egress_lossless_profile": { + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" + }, + "egress_lossy_profile": { + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" + } + }, +{%- endmacro %} diff --git a/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t1.j2 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..25b2f56083ae --- /dev/null +++ b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/buffers_defaults_t1.j2 @@ -0,0 +1,49 @@ + +{%- set default_cable = '40m' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" + }, + "egress_pool1": { + "mode": "dynamic", + "size": "1447040", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" + } + }, + "BUFFER_PROFILE": { + "egress_lossless_profile": { + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" + }, + "egress_lossy_profile": { + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" + } + }, +{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/qos.json.j2 b/device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/qos.json.j2 similarity index 100% rename from device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/qos.json.j2 rename to device/marvell/arm64-marvell_rd98DX35xx_cn9131-r0/rd98DX35xx_cn9131/qos.json.j2 diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/default_sku b/device/marvell/armhf-marvell_et6448m_52x-r0/default_sku deleted file mode 100644 index 4f0da7a26939..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/default_sku +++ /dev/null @@ -1 +0,0 @@ -et6448m t1 diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/buffers_defaults_t1.j2 b/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/buffers_defaults_t1.j2 deleted file mode 100644 index ff6c35e0d9f6..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- 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 * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/port_config.ini b/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/port_config.ini deleted file mode 100644 index 062c252ce195..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/port_config.ini +++ /dev/null @@ -1,53 +0,0 @@ -# name lanes alias index speed -Ethernet0 1 Ethernet0 1 1000 -Ethernet1 2 Ethernet1 2 1000 -Ethernet2 3 Ethernet2 3 1000 -Ethernet3 4 Ethernet3 4 1000 -Ethernet4 5 Ethernet4 5 1000 -Ethernet5 6 Ethernet5 6 1000 -Ethernet6 7 Ethernet6 7 1000 -Ethernet7 8 Ethernet7 8 1000 -Ethernet8 9 Ethernet8 9 1000 -Ethernet9 10 Ethernet9 10 1000 -Ethernet10 11 Ethernet10 11 1000 -Ethernet11 12 Ethernet11 12 1000 -Ethernet12 13 Ethernet12 13 1000 -Ethernet13 14 Ethernet13 14 1000 -Ethernet14 15 Ethernet14 15 1000 -Ethernet15 16 Ethernet15 16 1000 -Ethernet16 17 Ethernet16 17 1000 -Ethernet17 18 Ethernet17 18 1000 -Ethernet18 19 Ethernet18 19 1000 -Ethernet19 20 Ethernet19 20 1000 -Ethernet20 21 Ethernet20 21 1000 -Ethernet21 22 Ethernet21 22 1000 -Ethernet22 23 Ethernet22 23 1000 -Ethernet23 24 Ethernet23 24 1000 -Ethernet24 25 Ethernet24 25 1000 -Ethernet25 26 Ethernet25 26 1000 -Ethernet26 27 Ethernet26 27 1000 -Ethernet27 28 Ethernet27 28 1000 -Ethernet28 29 Ethernet28 29 1000 -Ethernet29 30 Ethernet29 30 1000 -Ethernet30 31 Ethernet30 31 1000 -Ethernet31 32 Ethernet31 32 1000 -Ethernet32 33 Ethernet32 33 1000 -Ethernet33 34 Ethernet33 34 1000 -Ethernet34 35 Ethernet34 35 1000 -Ethernet35 36 Ethernet35 36 1000 -Ethernet36 37 Ethernet36 37 1000 -Ethernet37 38 Ethernet37 38 1000 -Ethernet38 39 Ethernet38 39 1000 -Ethernet39 40 Ethernet39 40 1000 -Ethernet40 41 Ethernet40 41 1000 -Ethernet41 42 Ethernet41 42 1000 -Ethernet42 43 Ethernet42 43 1000 -Ethernet43 44 Ethernet43 44 1000 -Ethernet44 45 Ethernet44 45 1000 -Ethernet45 46 Ethernet45 46 1000 -Ethernet46 47 Ethernet46 47 1000 -Ethernet47 48 Ethernet47 48 1000 -Ethernet48 49 Ethernet48 49 10000 -Ethernet49 50 Ethernet49 50 10000 -Ethernet50 51 Ethernet50 51 10000 -Ethernet51 52 Ethernet51 52 10000 diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/profile.ini b/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/profile.ini deleted file mode 100644 index c81a156d58f9..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/profile.ini +++ /dev/null @@ -1 +0,0 @@ -switchMacAddress=00:50:43:ee:ee:ee diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/sai.profile b/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/sai.profile deleted file mode 100644 index 10053fa935a1..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/et6448m/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=et6448m -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/fancontrol b/device/marvell/armhf-marvell_et6448m_52x-r0/fancontrol deleted file mode 100755 index 050e2504626c..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/fancontrol +++ /dev/null @@ -1,9 +0,0 @@ -INTERVAL=10 -DEVPATH=hwmon1=devices/platform/soc/soc:internal-regs/f1011000.i2c/i2c-0/0-002e -DEVNAME=hwmon1=adt7473 -FCTEMPS=hwmon1/device/pwm1=hwmon1/device/temp1_input hwmon1/device/pwm2=hwmon1/device/temp2_input -FCFANS=hwmon1/device/pwm1= hwmon1/device/pwm2=hwmon1/device/fan1_input -MINTEMP=hwmon1/device/pwm1=20 hwmon1/device/pwm2=20 -MAXTEMP=hwmon1/device/pwm1=60 hwmon1/device/pwm2=60 -MINSTART=hwmon1/device/pwm1=150 hwmon1/device/pwm2=150 -MINSTOP=hwmon1/device/pwm1=0 hwmon1/device/pwm2=0 diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/platform_asic b/device/marvell/armhf-marvell_et6448m_52x-r0/platform_asic deleted file mode 100644 index a554752878b7..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/platform_asic +++ /dev/null @@ -1 +0,0 @@ -marvell diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/eeprom.py b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/eeprom.py deleted file mode 100644 index 71f05c5b70f5..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/eeprom.py +++ /dev/null @@ -1,11 +0,0 @@ -try: - from sonic_eeprom import eeprom_tlvinfo -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class board(eeprom_tlvinfo.TlvInfoDecoder): - - def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/etc/sonic/eeprom" - super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py deleted file mode 100755 index a75832ee4d2d..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/psuutil.py +++ /dev/null @@ -1,69 +0,0 @@ -from sonic_py_common.general import getstatusoutput_noshell - -smbus_present = 1 -try: - import smbus -except ImportError as e: - smbus_present = 0 - -try: - from sonic_psu.psu_base import PsuBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class PsuUtil(PsuBase): - """Platform-specific PSUutil class""" - - def __init__(self): - PsuBase.__init__(self) - MAX_PSUS = 2 - - def get_num_psus(self): - MAX_PSUS = 2 - return MAX_PSUS - - def get_psu_status(self, index): - if index is None: - return False - if smbus_present == 0: - cmdstatus, psustatus = getstatusoutput_noshell(["i2cget", "-y", "0", "0x41", "0xa"]) - psustatus = int(psustatus, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0xa - psustatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - if index == 1: - psustatus = psustatus & 4 - if psustatus == 4: - return True - if index == 2: - psustatus = psustatus & 8 - if psustatus == 8: - return True - - return False - - def get_psu_presence(self, index): - if index is None: - return False - - if smbus_present == 0: - cmdstatus, psustatus = getstatusoutput_noshell(["i2cget", "-y", "0", "0x41", "0xa"]) - psustatus = int(psustatus, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0xa - psustatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - - if index == 1: - psustatus = psustatus & 1 - if psustatus == 1: - return True - if index == 2: - psustatus = psustatus & 2 - if psustatus == 2: - return True - return False diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py b/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py deleted file mode 100755 index a160becb6fef..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/plugins/sfputil.py +++ /dev/null @@ -1,263 +0,0 @@ -try: - import os - import time - import re - 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") - -smbus_present = 1 - -try: - import smbus -except ImportError as e: - smbus_present = 0 - - -class SfpUtil(SfpUtilBase): - """Platform specific sfputil class""" - - _port_start = 49 - _port_end = 52 - ports_in_block = 4 - - _port_to_eeprom_mapping = {} - port_to_i2c_mapping = { - 49: 2, - 50: 3, - 51: 4, - 52: 5 - } - - _qsfp_ports = list(range(_port_start, ports_in_block + 1)) - _changed_ports = [0, 0, 0, 0] - - def __init__(self): - - # Enable optical SFP Tx - if smbus_present == 0: - subprocess.call(["i2cset", "-y", "-m", "0x0f", "0", "0x41", "0x5", "0x00"]) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICEREG = 0x5 - OPTIC_E = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG) - OPTIC_E = OPTIC_E & 0xf0 - bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, OPTIC_E) - - # Mux Ordering - mux_dev = sorted(glob.glob("/sys/class/i2c-adapter/i2c-0/i2c-[0-9]")) - - # Enable optoe2 Driver - eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom" - bus_path = "/sys/class/i2c-adapter/i2c-{0}/" - y = 0 - for x in range(self.port_start, self.port_end + 1): - mux_dev_num = mux_dev[y] - self.port_to_i2c_mapping[x] = mux_dev_num[-1] - y = y + 1 - 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]) + "/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) - - def reset(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - - path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/sfp_port_reset" - port_ps = path.format(self.port_to_i2c_mapping[port_num]) - - try: - reg_file = open(port_ps, 'w') - except IOError as e: - print("Error: unable to open file: %s" % str(e)) - return False - - # toggle reset - reg_file.seek(0) - reg_file.write('1') - time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() - return True - - def set_low_power_mode(self, port_nuM, lpmode): - raise NotImplementedError - - def get_low_power_mode(self, port_num): - raise NotImplementedError - - def get_presence(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - prt = port_num % 49 - sel = "{0:02b}".format(prt) - p = sel[0] - q = sel[1] - - pos = [1, 2, 4, 8] - bit_pos = pos[prt] - if smbus_present == 0: - cmdstatus, sfpstatus = getstatusoutput_noshell(['i2cget', '-y', '0', '0x41', '0x3']) - sfpstatus = int(sfpstatus, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x3 - sfpstatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - sfpstatus = sfpstatus & (bit_pos) - if sfpstatus == 0: - #print("Port " + str(port_num) + "present") - return True - - return False - - def read_porttab_mappings(self, porttabfile): - logical = [] - logical_to_physical = {} - physical_to_logical = {} - last_fp_port_index = 0 - last_portname = "" - first = 1 - port_pos_in_file = 0 - parse_fmt_port_config_ini = False - - try: - f = open(porttabfile) - except: - raise - - parse_fmt_port_config_ini = (os.path.basename(porttabfile) == "port_config.ini") - - # Read the porttab file and generate dicts - # with mapping for future reference. - # - # TODO: Refactor this to use the portconfig.py module that now - # exists as part of the sonic-config-engine package. - title = [] - for line in f: - line.strip() - if re.search("^#", line) is not None: - # The current format is: # name lanes alias index speed - # Where the ordering of the columns can vary - title = line.split()[1:] - continue - - # Parsing logic for 'port_config.ini' file - if (parse_fmt_port_config_ini): - portname = line.split()[0] - - if "index" in title: - fp_port_index = int(line.split()[title.index("index")]) - # Leave the old code for backward compatibility - elif len(line.split()) >= 4: - fp_port_index = int(line.split()[3]) - else: - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - # print(fp_port_index) - else: # Parsing logic for older 'portmap.ini' file - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - - if ((len(self.sfp_ports) > 0) and (fp_port_index not in self.sfp_ports)): - continue - - if first == 1: - # Initialize last_[physical|logical]_port - # to the first valid port - last_fp_port_index = fp_port_index - last_portname = portname - first = 0 - - logical.append(portname) - - logical_to_physical[portname] = [fp_port_index] - if physical_to_logical.get(fp_port_index) is None: - physical_to_logical[fp_port_index] = [portname] - else: - physical_to_logical[fp_port_index].append( - portname) - - if (fp_port_index - last_fp_port_index) > 1: - # last port was a gang port - for p in range(last_fp_port_index+1, fp_port_index): - logical_to_physical[last_portname].append(p) - if physical_to_logical.get(p) is None: - physical_to_logical[p] = [last_portname] - else: - physical_to_logical[p].append(last_portname) - - last_fp_port_index = fp_port_index - last_portname = portname - - port_pos_in_file += 1 - - self.logical = logical - self.logical_to_physical = logical_to_physical - self.physical_to_logical = physical_to_logical - # print(self.logical_to_physical) - - @property - def port_start(self): - return self._port_start - - @property - def port_end(self): - return self._port_end - - @property - def qsfp_ports(self): - return self._qsfp_ports - - @property - def port_to_eeprom_mapping(self): - return self._port_to_eeprom_mapping - - def get_transceiver_change_event(self, timeout): - port_dict = {} - port = 0 - - if timeout == 0: - cd_ms = sys.maxsize - else: - cd_ms = timeout - changed_port = 0 - # poll per second - while cd_ms > 0: - for port_num in range(49, 53): - prt = port_num % 49 - sfpstatus = self.get_presence(port_num) - if sfpstatus: - port_dict[str(port_num)] = '1' - if self._changed_ports[prt] == 0: - changed_port = 1 - self._changed_ports[prt] = 1 - else: - port_dict[str(port_num)] = '0' - if self._changed_ports[prt] == 1: - changed_port = 1 - self._changed_ports[prt] = 0 - - if changed_port != 0: - break - time.sleep(1) - cd_ms = cd_ms - 1000 - - if changed_port: - return True, port_dict - else: - return True, {} - return False, {} diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/pmon_daemon_control.json b/device/marvell/armhf-marvell_et6448m_52x-r0/pmon_daemon_control.json deleted file mode 100644 index a3ecea34bcc9..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/pmon_daemon_control.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "skip_thermalctld": true, - "skip_ledd": true -} diff --git a/device/marvell/armhf-marvell_et6448m_52x-r0/sensors.conf b/device/marvell/armhf-marvell_et6448m_52x-r0/sensors.conf deleted file mode 100644 index 5f9b97162ee2..000000000000 --- a/device/marvell/armhf-marvell_et6448m_52x-r0/sensors.conf +++ /dev/null @@ -1,18 +0,0 @@ -chip "adt7473-*" - label fan1 "rear fan 1" - label fan2 "rear fan 2" - ignore fan3 - ignore fan4 - ignore in1 - -chip "lm75a-i2c-*-4a" - label temp1 "MAC temp sensor" - set temp1_max 65 - set temp1_crit 75 - -chip "lm75a-i2c-*-4b" - label temp1 "Board temp sensor" - set temp2_max 65 - set temp2_crit 75 -chip "armada_thermal-*" - ignore temp1 diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.md5 index 3e849f9f5131..f5e1907fd1ee 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -6eecbbbd215fe27637a19f5b01f96b51 \ No newline at end of file +614d20ad432baca22709f3edf80cc8b5 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.xml index 9eeb751c964b..9b5e3a9f04f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-Board-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -740,6 +700,7 @@ lowercase characters. NA + false @@ -755,6 +716,7 @@ lowercase characters. NA + false @@ -770,6 +732,7 @@ lowercase characters. NA + false @@ -785,6 +748,7 @@ lowercase characters. NA + false @@ -800,6 +764,7 @@ lowercase characters. NA + false @@ -815,6 +780,7 @@ lowercase characters. NA + false @@ -830,6 +796,7 @@ lowercase characters. NA + false @@ -861,6 +828,7 @@ lowercase characters. NA + false @@ -876,6 +844,7 @@ lowercase characters. NA + false @@ -891,6 +860,7 @@ lowercase characters. NA + false @@ -906,6 +876,7 @@ lowercase characters. NA + false @@ -921,6 +892,7 @@ lowercase characters. NA + false @@ -936,6 +908,7 @@ lowercase characters. NA + false @@ -951,6 +924,7 @@ lowercase characters. NA + false @@ -982,6 +956,7 @@ lowercase characters. NA + false @@ -997,6 +972,7 @@ lowercase characters. NA + false @@ -1012,6 +988,7 @@ lowercase characters. NA + false @@ -1027,6 +1004,7 @@ lowercase characters. NA + false @@ -1042,6 +1020,7 @@ lowercase characters. NA + false @@ -1057,6 +1036,7 @@ lowercase characters. NA + false @@ -1072,6 +1052,7 @@ lowercase characters. NA + false @@ -1103,6 +1084,7 @@ lowercase characters. NA + false @@ -1118,6 +1100,7 @@ lowercase characters. NA + false @@ -1133,6 +1116,7 @@ lowercase characters. NA + false @@ -1148,6 +1132,7 @@ lowercase characters. NA + false @@ -1163,6 +1148,7 @@ lowercase characters. NA + false @@ -1178,6 +1164,7 @@ lowercase characters. NA + false @@ -1193,6 +1180,7 @@ lowercase characters. NA + false @@ -1224,6 +1212,7 @@ lowercase characters. NA + false @@ -1239,6 +1228,7 @@ lowercase characters. NA + false @@ -1254,6 +1244,7 @@ lowercase characters. NA + false @@ -1269,6 +1260,7 @@ lowercase characters. NA + false @@ -1284,6 +1276,7 @@ lowercase characters. NA + false @@ -1299,6 +1292,7 @@ lowercase characters. NA + false @@ -1314,6 +1308,7 @@ lowercase characters. NA + false @@ -1345,6 +1340,7 @@ lowercase characters. NA + false @@ -1360,6 +1356,7 @@ lowercase characters. NA + false @@ -1375,6 +1372,7 @@ lowercase characters. NA + false @@ -1390,6 +1388,7 @@ lowercase characters. NA + false @@ -1405,6 +1404,7 @@ lowercase characters. NA + false @@ -1420,6 +1420,7 @@ lowercase characters. NA + false @@ -1435,6 +1436,7 @@ lowercase characters. NA + false @@ -1466,6 +1468,7 @@ lowercase characters. NA + false @@ -1497,6 +1500,7 @@ lowercase characters. NA + false @@ -1528,6 +1532,7 @@ lowercase characters. NA + false @@ -1559,6 +1564,7 @@ lowercase characters. NA + false @@ -1574,6 +1580,7 @@ lowercase characters. NA + false @@ -1589,6 +1596,7 @@ lowercase characters. NA + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.md5 index 5ce1720c3114..19232794100e 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -06a802c61f6b37d6e1897fdf4be6ee83 \ No newline at end of file +b59ada1280486d99d91fceeb71d570fc \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.xml index 666a1eec84d4..5c86ba9348e9 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-L1-F2T_48x25G-8x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,348 +718,406 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 100GR4 + false 53 AVAGO profile_default 100GR4 + false 54 AVAGO profile_default 100GR4 + false 55 AVAGO profile_default 100GR4 + false 56 AVAGO profile_default 10GR1Fix + false 57 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.md5 index 92fc07b50bf1..9565b39993ba 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -72ea1b2a8dd25f7d1584a05b11c1ae0b \ No newline at end of file +3d402de0a98eb4846991870c75ddb954 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.xml index 288006a4ae0c..d75a5f430fc4 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/ASK-PP-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.md5 index 8f24db9ff7e3..f366399b7c0a 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -cdd0dffb9811802ae6b98caa7b62b96b \ No newline at end of file +08fa0bd1565c3302bf02fbbe1054c93e \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.xml index 973cc465de77..2a4b72e85cc4 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/SAI-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -467,6 +497,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t0.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t1.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T48x25G8x100G/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.md5 index afe19e324e96..a5c33ecc9903 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.md5 @@ -1 +1 @@ -5a26299fae46aeeca40f450e0cc4e602 \ No newline at end of file +5b91ff7ea55b3eb11a76035918dcc7a1 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.xml index 879e3b954522..f550a73c15e7 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-Board-F2T_80x25G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -740,6 +700,7 @@ lowercase characters. NA + false @@ -755,6 +716,7 @@ lowercase characters. NA + false @@ -770,6 +732,7 @@ lowercase characters. NA + false @@ -785,6 +748,7 @@ lowercase characters. NA + false @@ -800,6 +764,7 @@ lowercase characters. NA + false @@ -815,6 +780,7 @@ lowercase characters. NA + false @@ -830,6 +796,7 @@ lowercase characters. NA + false @@ -861,6 +828,7 @@ lowercase characters. NA + false @@ -876,6 +844,7 @@ lowercase characters. NA + false @@ -891,6 +860,7 @@ lowercase characters. NA + false @@ -906,6 +876,7 @@ lowercase characters. NA + false @@ -921,6 +892,7 @@ lowercase characters. NA + false @@ -936,6 +908,7 @@ lowercase characters. NA + false @@ -951,6 +924,7 @@ lowercase characters. NA + false @@ -982,6 +956,7 @@ lowercase characters. NA + false @@ -997,6 +972,7 @@ lowercase characters. NA + false @@ -1012,6 +988,7 @@ lowercase characters. NA + false @@ -1027,6 +1004,7 @@ lowercase characters. NA + false @@ -1042,6 +1020,7 @@ lowercase characters. NA + false @@ -1057,6 +1036,7 @@ lowercase characters. NA + false @@ -1072,6 +1052,7 @@ lowercase characters. NA + false @@ -1103,6 +1084,7 @@ lowercase characters. NA + false @@ -1118,6 +1100,7 @@ lowercase characters. NA + false @@ -1133,6 +1116,7 @@ lowercase characters. NA + false @@ -1148,6 +1132,7 @@ lowercase characters. NA + false @@ -1163,6 +1148,7 @@ lowercase characters. NA + false @@ -1178,6 +1164,7 @@ lowercase characters. NA + false @@ -1193,6 +1180,7 @@ lowercase characters. NA + false @@ -1224,6 +1212,7 @@ lowercase characters. NA + false @@ -1239,6 +1228,7 @@ lowercase characters. NA + false @@ -1254,6 +1244,7 @@ lowercase characters. NA + false @@ -1269,6 +1260,7 @@ lowercase characters. NA + false @@ -1284,6 +1276,7 @@ lowercase characters. NA + false @@ -1299,6 +1292,7 @@ lowercase characters. NA + false @@ -1314,6 +1308,7 @@ lowercase characters. NA + false @@ -1345,6 +1340,7 @@ lowercase characters. NA + false @@ -1360,6 +1356,7 @@ lowercase characters. NA + false @@ -1375,6 +1372,7 @@ lowercase characters. NA + false @@ -1390,6 +1388,7 @@ lowercase characters. NA + false @@ -1405,6 +1404,7 @@ lowercase characters. NA + false @@ -1420,6 +1420,7 @@ lowercase characters. NA + false @@ -1435,6 +1436,7 @@ lowercase characters. NA + false @@ -1466,6 +1468,7 @@ lowercase characters. NA + false @@ -1481,6 +1484,7 @@ lowercase characters. NA + false @@ -1496,6 +1500,7 @@ lowercase characters. NA + false @@ -1511,6 +1516,7 @@ lowercase characters. NA + false @@ -1526,6 +1532,7 @@ lowercase characters. NA + false @@ -1541,6 +1548,7 @@ lowercase characters. NA + false @@ -1556,6 +1564,7 @@ lowercase characters. NA + false @@ -1587,6 +1596,7 @@ lowercase characters. NA + false @@ -1602,6 +1612,7 @@ lowercase characters. NA + false @@ -1617,6 +1628,7 @@ lowercase characters. NA + false @@ -1632,6 +1644,7 @@ lowercase characters. NA + false @@ -1647,6 +1660,7 @@ lowercase characters. NA + false @@ -1662,6 +1676,7 @@ lowercase characters. NA + false @@ -1677,6 +1692,7 @@ lowercase characters. NA + false @@ -1708,6 +1724,7 @@ lowercase characters. NA + false @@ -1723,6 +1740,7 @@ lowercase characters. NA + false @@ -1738,6 +1756,7 @@ lowercase characters. NA + false @@ -1753,6 +1772,7 @@ lowercase characters. NA + false @@ -1768,6 +1788,7 @@ lowercase characters. NA + false @@ -1783,6 +1804,7 @@ lowercase characters. NA + false @@ -1798,6 +1820,7 @@ lowercase characters. NA + false @@ -1829,6 +1852,7 @@ lowercase characters. NA + false @@ -1844,6 +1868,7 @@ lowercase characters. NA + false @@ -1859,6 +1884,7 @@ lowercase characters. NA + false @@ -1874,6 +1900,7 @@ lowercase characters. NA + false @@ -1889,6 +1916,7 @@ lowercase characters. NA + false @@ -1904,6 +1932,7 @@ lowercase characters. NA + false @@ -1919,6 +1948,7 @@ lowercase characters. NA + false @@ -1934,6 +1964,7 @@ lowercase characters. NA + false @@ -1949,6 +1980,7 @@ lowercase characters. NA + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.md5 index 48db349139ac..79515907c06c 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.md5 @@ -1 +1 @@ -b9e6fa1643045736b22b06e5a3443962 \ No newline at end of file +2cab0c0896bef0330843a5910094d048 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.xml index 448077663b13..e2c946b26d83 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-L1-F2T_80x25G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - emph0 - emph0 + sumfBoostTargetC1 + sumfBoostTargetC1 8 - emph1 - emph1 + sumfBoostTargetC2 + sumfBoostTargetC2 9 - txAmpShft - txAmpShft + midpointPhaseOs0 + midpointPhaseOs0 10 - txEmphEn - txEmphEn + midpointPhaseOs1 + midpointPhaseOs1 11 - txEmphEn1 - txEmphEn1 + midpointPhaseOs2 + midpointPhaseOs2 12 - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn - 7 - - - bfLf - bfLf - 8 - - - bfHf - bfHf - 9 - - - minLf - minLf - 10 - - - maxLf - maxLf - 11 - - - minHf - minHf - 12 - - - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,7 +615,38 @@ + ASIC_Falcon + + 100GR4 + + CR4 + 100G + rs_enabled + + + KR4 + 100G + rs_enabled + + + SR_LR4 + 100G + rs_enabled + + + CR4 + 100G + rs_enabled + rs_enabled + + + KR4 + 100G + rs_enabled + rs_enabled + + 10GR1Fix @@ -848,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -866,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -874,492 +718,630 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default - 25GR1 - - - 49 - AVAGO - profile_default - 25GR1 - - - 50 - AVAGO - profile_default - 25GR1 - - - 51 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 48 + 25GR1 + + 100GR4 + + + + 49 + 25GR1 + + + + + + 50 + 25GR1 + + + + + + 51 + 25GR1 + + + + 52 AVAGO profile_default - 25GR1 - - - 53 - AVAGO - profile_default - 25GR1 - - - 54 - AVAGO - profile_default - 25GR1 - - - 55 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 52 + 25GR1 + + 100GR4 + + + + 53 + 25GR1 + + + + + + 54 + 25GR1 + + + + + + 55 + 25GR1 + + + + 56 AVAGO profile_default - 25GR1 - - - 57 - AVAGO - profile_default - 25GR1 - - - 58 - AVAGO - profile_default - 25GR1 - - - 59 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 56 + 25GR1 + + 100GR4 + + + + 57 + 25GR1 + + + + + + 58 + 25GR1 + + + + + + 59 + 25GR1 + + + + 60 AVAGO profile_default - 25GR1 - - - 64 - AVAGO - profile_default - 25GR1 - - - 65 - AVAGO - profile_default - 25GR1 - - - 66 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 60 + 25GR1 + + 100GR4 + + + + 64 + 25GR1 + + + + + + 65 + 25GR1 + + + + + + 66 + 25GR1 + + + + 67 AVAGO profile_default - 25GR1 - - - 68 - AVAGO - profile_default - 25GR1 - - - 69 - AVAGO - profile_default - 25GR1 - - - 70 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 67 + 25GR1 + + 100GR4 + + + + 68 + 25GR1 + + + + + + 69 + 25GR1 + + + + + + 70 + 25GR1 + + + + 71 AVAGO profile_default - 25GR1 - - - 72 - AVAGO - profile_default - 25GR1 - - - 73 - AVAGO - profile_default - 25GR1 - - - 74 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 71 + 25GR1 + + 100GR4 + + + + 72 + 25GR1 + + + + + + 73 + 25GR1 + + + + + + 74 + 25GR1 + + + + 75 AVAGO profile_default - 25GR1 - - - 76 - AVAGO - profile_default - 25GR1 - - - 77 - AVAGO - profile_default - 25GR1 - - - 78 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 75 + 25GR1 + + 100GR4 + + + + 76 + 25GR1 + + + + + + 77 + 25GR1 + + + + + + 78 + 25GR1 + + + + 79 AVAGO profile_default - 25GR1 - - - 80 - AVAGO - profile_default - 25GR1 - - - 81 - AVAGO - profile_default - 25GR1 - - - 82 - AVAGO - profile_default - 25GR1 + 100GR4 + true + + 79 + 25GR1 + + 100GR4 + + + + 80 + 25GR1 + + + + + + 81 + 25GR1 + + + + + + 82 + 25GR1 + + + + 83 AVAGO profile_default 10GR1Fix + false 84 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.md5 index 604343ce0794..d1b1be9bb6cf 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.md5 @@ -1 +1 @@ -3943f8d39de0129472bf59ff13c92222 \ No newline at end of file +940d53a0bfef9ef5c5f6faccd5aa3239 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.xml index b7e9ec199eb9..39da78b47c23 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/ASK-PP-F2T_80x25G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.md5 index e804ba2cba74..38690325c77e 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.md5 @@ -1 +1 @@ -fa2395cae24db38d8388f251dae7c5b4 \ No newline at end of file +8c6f6a0f599258a5c2643bd5881f97c1 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.xml index 24006250ecb0..bf46172952fb 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/SAI-F2T_80x25G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -164,402 +194,402 @@ 0 0 - 82 + 0 1 0 - 81 + 1 2 0 - 80 + 2 3 0 - 79 + 3 4 0 - 78 + 4 5 0 - 77 + 5 6 0 - 76 + 6 7 0 - 75 + 7 8 0 - 74 + 8 9 0 - 73 + 9 10 0 - 72 + 10 11 0 - 71 + 11 12 0 - 70 + 12 13 0 - 69 + 13 14 0 - 68 + 14 15 0 - 67 + 15 16 0 - 66 + 16 17 0 - 65 + 17 18 0 - 64 + 18 19 0 - 60 + 19 20 0 - 59 + 20 21 0 - 58 + 21 22 0 - 57 + 22 23 0 - 56 + 23 24 0 - 55 + 24 25 0 - 54 + 25 26 0 - 53 + 26 27 0 - 52 + 27 28 0 - 51 + 28 29 0 - 50 + 29 30 0 - 49 + 30 31 0 - 48 + 31 32 0 - 47 + 32 33 0 - 46 + 33 34 0 - 45 + 34 35 0 - 44 + 35 36 0 - 43 + 36 37 0 - 42 + 37 38 0 - 41 + 38 39 0 - 40 + 39 40 0 - 39 + 40 41 0 - 38 + 41 42 0 - 37 + 42 43 0 - 36 + 43 44 0 - 35 + 44 45 0 - 34 + 45 46 0 - 33 + 46 47 0 - 32 + 47 48 0 - 31 + 48 49 0 - 30 + 49 50 0 - 29 + 50 51 0 - 28 + 51 52 0 - 27 + 52 53 0 - 26 + 53 54 0 - 25 + 54 55 0 - 24 + 55 56 0 - 23 + 56 57 0 - 22 + 57 58 0 - 21 + 58 59 0 - 20 + 59 60 0 - 19 + 60 61 0 - 18 + 64 62 0 - 17 + 65 63 0 - 16 + 66 64 0 - 15 + 67 65 0 - 14 + 68 66 0 - 13 + 69 67 0 - 12 + 70 68 0 - 11 + 71 69 0 - 10 + 72 70 0 - 9 + 73 71 0 - 8 + 74 72 0 - 7 + 75 73 0 - 6 + 76 74 0 - 5 + 77 75 0 - 4 + 78 76 0 - 3 + 79 77 0 - 2 + 80 78 0 - 1 + 81 79 0 - 0 + 82 80 @@ -587,9 +617,13 @@ 0 - - 2048 - + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t0.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t1.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/hwsku.json b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/hwsku.json new file mode 100644 index 000000000000..d091bf82878f --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/hwsku.json @@ -0,0 +1,443 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet1": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet2": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet3": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet4": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet5": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet6": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet7": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet8": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet9": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet10": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet11": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet12": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet13": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet14": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet15": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet16": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet17": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet18": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet19": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet20": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet21": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet22": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet23": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet24": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet25": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet26": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet27": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet28": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet29": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet30": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet31": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet32": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet33": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet34": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet35": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet36": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet37": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet38": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet39": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet40": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet41": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet42": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet43": { + "default_brkout_mode": "1x25G[10G,1G]", + "fec": "none" + }, + "Ethernet44": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet45": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet46": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet47": { + "default_brkout_mode": "1x25G[10G,1G]", + "autoneg": "on", + "fec": "none" + }, + "Ethernet48": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet49": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet50": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet51": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet52": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet53": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet54": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet55": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet56": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet57": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet58": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet59": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet60": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet61": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet62": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet63": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet64": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet65": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet66": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet67": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet68": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet69": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet70": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet71": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet72": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet73": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet74": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet75": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet76": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "none" + }, + "Ethernet77": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "none" + }, + "Ethernet78": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "none" + }, + "Ethernet79": { + "default_brkout_mode": "4x25G[10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "none" + }, + "Ethernet80": { + "default_brkout_mode": "1x10G", + "autoneg": "off" + }, + "Ethernet81": { + "default_brkout_mode": "1x10G", + "autoneg": "off" + } + } +} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/port_config.ini b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/port_config.ini index e0f004920690..5881c464a22d 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/port_config.ini +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/F2T80x25G/port_config.ini @@ -1,83 +1,83 @@ -# name lanes alias speed autoneg fec index -Ethernet0 0 twenty5GigE0 25000 on none 1 -Ethernet1 1 twenty5GigE1 25000 on none 2 -Ethernet2 2 twenty5GigE2 25000 on none 3 -Ethernet3 3 twenty5GigE3 25000 on none 4 -Ethernet4 4 twenty5GigE4 25000 on none 5 -Ethernet5 5 twenty5GigE5 25000 on none 6 -Ethernet6 6 twenty5GigE6 25000 on none 7 -Ethernet7 7 twenty5GigE7 25000 on none 8 -Ethernet8 8 twenty5GigE8 25000 on none 9 -Ethernet9 9 twenty5GigE9 25000 on none 10 -Ethernet10 10 twenty5GigE10 25000 on none 11 -Ethernet11 11 twenty5GigE11 25000 on none 12 -Ethernet12 12 twenty5GigE12 25000 on none 13 -Ethernet13 13 twenty5GigE13 25000 on none 14 -Ethernet14 14 twenty5GigE14 25000 on none 15 -Ethernet15 15 twenty5GigE15 25000 on none 16 -Ethernet16 16 twenty5GigE16 25000 on none 17 -Ethernet17 17 twenty5GigE17 25000 on none 18 -Ethernet18 18 twenty5GigE18 25000 on none 19 -Ethernet19 19 twenty5GigE19 25000 on none 20 -Ethernet20 20 twenty5GigE20 25000 on none 21 -Ethernet21 21 twenty5GigE21 25000 on none 22 -Ethernet22 22 twenty5GigE22 25000 on none 23 -Ethernet23 23 twenty5GigE23 25000 on none 24 -Ethernet24 24 twenty5GigE24 25000 on none 25 -Ethernet25 25 twenty5GigE25 25000 on none 26 -Ethernet26 26 twenty5GigE26 25000 on none 27 -Ethernet27 27 twenty5GigE27 25000 on none 28 -Ethernet28 28 twenty5GigE28 25000 on none 29 -Ethernet29 29 twenty5GigE29 25000 on none 30 -Ethernet30 30 twenty5GigE30 25000 on none 31 -Ethernet31 31 twenty5GigE31 25000 on none 32 -Ethernet32 32 twenty5GigE32 25000 on none 33 -Ethernet33 33 twenty5GigE33 25000 on none 34 -Ethernet34 34 twenty5GigE34 25000 on none 35 -Ethernet35 35 twenty5GigE35 25000 on none 36 -Ethernet36 36 twenty5GigE36 25000 on none 37 -Ethernet37 37 twenty5GigE37 25000 on none 38 -Ethernet38 38 twenty5GigE38 25000 on none 39 -Ethernet39 39 twenty5GigE39 25000 on none 40 -Ethernet40 40 twenty5GigE40 25000 on none 41 -Ethernet41 41 twenty5GigE41 25000 on none 42 -Ethernet42 42 twenty5GigE42 25000 on none 43 -Ethernet43 43 twenty5GigE43 25000 on none 44 -Ethernet44 44 twenty5GigE44 25000 on none 45 -Ethernet45 45 twenty5GigE45 25000 on none 46 -Ethernet46 46 twenty5GigE46 25000 on none 47 -Ethernet47 47 twenty5GigE47 25000 on none 48 -Ethernet48 48 twenty5GigE48 25000 on none 49 -Ethernet49 49 twenty5GigE49 25000 on none 50 -Ethernet50 50 twenty5GigE50 25000 on none 51 -Ethernet51 51 twenty5GigE51 25000 on none 52 -Ethernet52 52 twenty5GigE52 25000 on none 53 -Ethernet53 53 twenty5GigE53 25000 on none 54 -Ethernet54 54 twenty5GigE54 25000 on none 55 -Ethernet55 55 twenty5GigE55 25000 on none 56 -Ethernet56 56 twenty5GigE56 25000 on none 57 -Ethernet57 57 twenty5GigE57 25000 on none 58 -Ethernet58 58 twenty5GigE58 25000 on none 59 -Ethernet59 59 twenty5GigE59 25000 on none 60 -Ethernet60 60 twenty5GigE60 25000 on none 61 -Ethernet61 61 twenty5GigE61 25000 on none 62 -Ethernet62 62 twenty5GigE62 25000 on none 63 -Ethernet63 63 twenty5GigE63 25000 on none 64 -Ethernet64 64 twenty5GigE64 25000 on none 65 -Ethernet65 65 twenty5GigE65 25000 on none 66 -Ethernet66 66 twenty5GigE66 25000 on none 67 -Ethernet67 67 twenty5GigE67 25000 on none 68 -Ethernet68 68 twenty5GigE68 25000 on none 69 -Ethernet69 69 twenty5GigE69 25000 on none 70 -Ethernet70 70 twenty5GigE70 25000 on none 71 -Ethernet71 71 twenty5GigE71 25000 on none 72 -Ethernet72 72 twenty5GigE72 25000 on none 73 -Ethernet73 73 twenty5GigE73 25000 on none 74 -Ethernet74 74 twenty5GigE74 25000 on none 75 -Ethernet75 75 twenty5GigE75 25000 on none 76 -Ethernet76 76 twenty5GigE76 25000 on none 77 -Ethernet77 77 twenty5GigE77 25000 on none 78 -Ethernet78 78 twenty5GigE78 25000 on none 79 -Ethernet79 79 twenty5GigE79 25000 on none 80 -Ethernet80 80 tenGigE80 10000 off none 81 -Ethernet81 81 tenGigE81 10000 off none 82 +# name lanes alias speed autoneg fec index +Ethernet0 0 Eth1 25000 on none 1 +Ethernet1 1 Eth2 25000 on none 2 +Ethernet2 2 Eth3 25000 on none 3 +Ethernet3 3 Eth4 25000 on none 4 +Ethernet4 4 Eth5 25000 on none 5 +Ethernet5 5 Eth6 25000 on none 6 +Ethernet6 6 Eth7 25000 on none 7 +Ethernet7 7 Eth8 25000 on none 8 +Ethernet8 8 Eth9 25000 on none 9 +Ethernet9 9 Eth10 25000 on none 10 +Ethernet10 10 Eth11 25000 on none 11 +Ethernet11 11 Eth12 25000 on none 12 +Ethernet12 12 Eth13 25000 on none 13 +Ethernet13 13 Eth14 25000 on none 14 +Ethernet14 14 Eth15 25000 on none 15 +Ethernet15 15 Eth16 25000 on none 16 +Ethernet16 16 Eth17 25000 on none 17 +Ethernet17 17 Eth18 25000 on none 18 +Ethernet18 18 Eth19 25000 on none 19 +Ethernet19 19 Eth20 25000 on none 20 +Ethernet20 20 Eth21 25000 on none 21 +Ethernet21 21 Eth22 25000 on none 22 +Ethernet22 22 Eth23 25000 on none 23 +Ethernet23 23 Eth24 25000 on none 24 +Ethernet24 24 Eth25 25000 on none 25 +Ethernet25 25 Eth26 25000 on none 26 +Ethernet26 26 Eth27 25000 on none 27 +Ethernet27 27 Eth28 25000 on none 28 +Ethernet28 28 Eth29 25000 on none 29 +Ethernet29 29 Eth30 25000 on none 30 +Ethernet30 30 Eth31 25000 on none 31 +Ethernet31 31 Eth32 25000 on none 32 +Ethernet32 32 Eth33 25000 on none 33 +Ethernet33 33 Eth34 25000 on none 34 +Ethernet34 34 Eth35 25000 on none 35 +Ethernet35 35 Eth36 25000 on none 36 +Ethernet36 36 Eth37 25000 on none 37 +Ethernet37 37 Eth38 25000 on none 38 +Ethernet38 38 Eth39 25000 on none 39 +Ethernet39 39 Eth40 25000 on none 40 +Ethernet40 40 Eth41 25000 on none 41 +Ethernet41 41 Eth42 25000 on none 42 +Ethernet42 42 Eth43 25000 on none 43 +Ethernet43 43 Eth44 25000 on none 44 +Ethernet44 44 Eth45 25000 on none 45 +Ethernet45 45 Eth46 25000 on none 46 +Ethernet46 46 Eth47 25000 on none 47 +Ethernet47 47 Eth48 25000 on none 48 +Ethernet48 48 Eth49/1 25000 on none 49 +Ethernet49 49 Eth49/2 25000 on none 49 +Ethernet50 50 Eth49/3 25000 on none 49 +Ethernet51 51 Eth49/4 25000 on none 49 +Ethernet52 52 Eth50/1 25000 on none 50 +Ethernet53 53 Eth50/2 25000 on none 50 +Ethernet54 54 Eth50/3 25000 on none 50 +Ethernet55 55 Eth50/4 25000 on none 50 +Ethernet56 56 Eth51/1 25000 on none 51 +Ethernet57 57 Eth51/2 25000 on none 51 +Ethernet58 58 Eth51/3 25000 on none 51 +Ethernet59 59 Eth51/4 25000 on none 51 +Ethernet60 60 Eth52/1 25000 on none 52 +Ethernet61 61 Eth52/2 25000 on none 52 +Ethernet62 62 Eth52/3 25000 on none 52 +Ethernet63 63 Eth52/4 25000 on none 52 +Ethernet64 64 Eth53/1 25000 on none 53 +Ethernet65 65 Eth53/2 25000 on none 53 +Ethernet66 66 Eth53/3 25000 on none 53 +Ethernet67 67 Eth53/4 25000 on none 53 +Ethernet68 68 Eth54/1 25000 on none 54 +Ethernet69 69 Eth54/2 25000 on none 54 +Ethernet70 70 Eth54/3 25000 on none 54 +Ethernet71 71 Eth54/4 25000 on none 54 +Ethernet72 72 Eth55/1 25000 on none 55 +Ethernet73 73 Eth55/2 25000 on none 55 +Ethernet74 74 Eth55/3 25000 on none 55 +Ethernet75 75 Eth55/4 25000 on none 55 +Ethernet76 76 Eth56/1 25000 on none 56 +Ethernet77 77 Eth56/2 25000 on none 56 +Ethernet78 78 Eth56/3 25000 on none 56 +Ethernet79 79 Eth56/4 25000 on none 56 +Ethernet80 80 Eth57 10000 off none 57 +Ethernet81 81 Eth58 10000 off none 58 diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.md5 index 3e849f9f5131..f5e1907fd1ee 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -6eecbbbd215fe27637a19f5b01f96b51 \ No newline at end of file +614d20ad432baca22709f3edf80cc8b5 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.xml index 9eeb751c964b..9b5e3a9f04f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-Board-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -740,6 +700,7 @@ lowercase characters. NA + false @@ -755,6 +716,7 @@ lowercase characters. NA + false @@ -770,6 +732,7 @@ lowercase characters. NA + false @@ -785,6 +748,7 @@ lowercase characters. NA + false @@ -800,6 +764,7 @@ lowercase characters. NA + false @@ -815,6 +780,7 @@ lowercase characters. NA + false @@ -830,6 +796,7 @@ lowercase characters. NA + false @@ -861,6 +828,7 @@ lowercase characters. NA + false @@ -876,6 +844,7 @@ lowercase characters. NA + false @@ -891,6 +860,7 @@ lowercase characters. NA + false @@ -906,6 +876,7 @@ lowercase characters. NA + false @@ -921,6 +892,7 @@ lowercase characters. NA + false @@ -936,6 +908,7 @@ lowercase characters. NA + false @@ -951,6 +924,7 @@ lowercase characters. NA + false @@ -982,6 +956,7 @@ lowercase characters. NA + false @@ -997,6 +972,7 @@ lowercase characters. NA + false @@ -1012,6 +988,7 @@ lowercase characters. NA + false @@ -1027,6 +1004,7 @@ lowercase characters. NA + false @@ -1042,6 +1020,7 @@ lowercase characters. NA + false @@ -1057,6 +1036,7 @@ lowercase characters. NA + false @@ -1072,6 +1052,7 @@ lowercase characters. NA + false @@ -1103,6 +1084,7 @@ lowercase characters. NA + false @@ -1118,6 +1100,7 @@ lowercase characters. NA + false @@ -1133,6 +1116,7 @@ lowercase characters. NA + false @@ -1148,6 +1132,7 @@ lowercase characters. NA + false @@ -1163,6 +1148,7 @@ lowercase characters. NA + false @@ -1178,6 +1164,7 @@ lowercase characters. NA + false @@ -1193,6 +1180,7 @@ lowercase characters. NA + false @@ -1224,6 +1212,7 @@ lowercase characters. NA + false @@ -1239,6 +1228,7 @@ lowercase characters. NA + false @@ -1254,6 +1244,7 @@ lowercase characters. NA + false @@ -1269,6 +1260,7 @@ lowercase characters. NA + false @@ -1284,6 +1276,7 @@ lowercase characters. NA + false @@ -1299,6 +1292,7 @@ lowercase characters. NA + false @@ -1314,6 +1308,7 @@ lowercase characters. NA + false @@ -1345,6 +1340,7 @@ lowercase characters. NA + false @@ -1360,6 +1356,7 @@ lowercase characters. NA + false @@ -1375,6 +1372,7 @@ lowercase characters. NA + false @@ -1390,6 +1388,7 @@ lowercase characters. NA + false @@ -1405,6 +1404,7 @@ lowercase characters. NA + false @@ -1420,6 +1420,7 @@ lowercase characters. NA + false @@ -1435,6 +1436,7 @@ lowercase characters. NA + false @@ -1466,6 +1468,7 @@ lowercase characters. NA + false @@ -1497,6 +1500,7 @@ lowercase characters. NA + false @@ -1528,6 +1532,7 @@ lowercase characters. NA + false @@ -1559,6 +1564,7 @@ lowercase characters. NA + false @@ -1574,6 +1580,7 @@ lowercase characters. NA + false @@ -1589,6 +1596,7 @@ lowercase characters. NA + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.md5 index 5ce1720c3114..19232794100e 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -06a802c61f6b37d6e1897fdf4be6ee83 \ No newline at end of file +b59ada1280486d99d91fceeb71d570fc \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.xml index 666a1eec84d4..5c86ba9348e9 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-L1-F2T_48x25G-8x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,348 +718,406 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 100GR4 + false 53 AVAGO profile_default 100GR4 + false 54 AVAGO profile_default 100GR4 + false 55 AVAGO profile_default 100GR4 + false 56 AVAGO profile_default 10GR1Fix + false 57 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.md5 index 92fc07b50bf1..9565b39993ba 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -72ea1b2a8dd25f7d1584a05b11c1ae0b \ No newline at end of file +3d402de0a98eb4846991870c75ddb954 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.xml index 288006a4ae0c..d75a5f430fc4 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/ASK-PP-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.md5 index 8f24db9ff7e3..f366399b7c0a 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.md5 @@ -1 +1 @@ -cdd0dffb9811802ae6b98caa7b62b96b \ No newline at end of file +08fa0bd1565c3302bf02fbbe1054c93e \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.xml index 973cc465de77..2a4b72e85cc4 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/SAI-F2T_48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -467,6 +497,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers.json.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers.json.j2 index a9a01d707ebf..0b1cb2c541b6 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers.json.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers.json.j2 @@ -1 +1,2 @@ +{%- set default_topo = 't1' %} {%- include 'buffers_config.j2' %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t0.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t1.j2 index f3eaf01447bd..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "21120000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "21120000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/db98cx8514_10cc/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/platform.json b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/platform.json new file mode 100644 index 000000000000..350cf148af0b --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8514_10cc-r0/platform.json @@ -0,0 +1,411 @@ +{ + "interfaces": { + "Ethernet0": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth1"] + }, + "index": "1", + "lanes": "0" + }, + "Ethernet1": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth2"] + }, + "index": "2", + "lanes": "1" + }, + "Ethernet2": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth3"] + }, + "index": "3", + "lanes": "2" + }, + "Ethernet3": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth4"] + }, + "index": "4", + "lanes": "3" + }, + "Ethernet4": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth5"] + }, + "index": "5", + "lanes": "4" + }, + "Ethernet6": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth7"] + }, + "index": "7", + "lanes": "6" + }, + "Ethernet7": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth8"] + }, + "index": "8", + "lanes": "7" + }, + "Ethernet8": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth9"] + }, + "index": "9", + "lanes": "8" + }, + "Ethernet9": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth10"] + }, + "index": "10", + "lanes": "9" + }, + "Ethernet10": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth11"] + }, + "index": "11", + "lanes": "10" + }, + "Ethernet11": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth12"] + }, + "index": "12", + "lanes": "11" + }, + "Ethernet12": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth13"] + }, + "index": "13", + "lanes": "12" + }, + "Ethernet13": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth14"] + }, + "index": "14", + "lanes": "13" + }, + "Ethernet14": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth15"] + }, + "index": "15", + "lanes": "14" + }, + "Ethernet15": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth16"] + }, + "index": "16", + "lanes": "15" + }, + "Ethernet16": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth17"] + }, + "index": "17", + "lanes": "16" + }, + "Ethernet17": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth18"] + }, + "index": "18", + "lanes": "17" + }, + "Ethernet18": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth19"] + }, + "index": "19", + "lanes": "18" + }, + "Ethernet19": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth20"] + }, + "index": "20", + "lanes": "19" + }, + "Ethernet20": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth21"] + }, + "index": "21", + "lanes": "20" + }, + "Ethernet21": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth22"] + }, + "index": "22", + "lanes": "21" + }, + "Ethernet22": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth23"] + }, + "index": "23", + "lanes": "22" + }, + "Ethernet23": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth24"] + }, + "index": "24", + "lanes": "23" + }, + "Ethernet24": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth25"] + }, + "index": "25", + "lanes": "24" + }, + "Ethernet25": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth26"] + }, + "index": "26", + "lanes": "25" + }, + "Ethernet26": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth27"] + }, + "index": "27", + "lanes": "26" + }, + "Ethernet27": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth28"] + }, + "index": "28", + "lanes": "27" + }, + "Ethernet28": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth29"] + }, + "index": "29", + "lanes": "28" + }, + "Ethernet29": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth30"] + }, + "index": "30", + "lanes": "29" + }, + "Ethernet30": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth31"] + }, + "index": "31", + "lanes": "30" + }, + "Ethernet31": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth32"] + }, + "index": "32", + "lanes": "31" + }, + "Ethernet32": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth33"] + }, + "index": "33", + "lanes": "32" + }, + "Ethernet33": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth34"] + }, + "index": "34", + "lanes": "33" + }, + "Ethernet34": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth35"] + }, + "index": "35", + "lanes": "34" + }, + "Ethernet35": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth36"] + }, + "index": "36", + "lanes": "35" + }, + "Ethernet36": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth37"] + }, + "index": "37", + "lanes": "36" + }, + "Ethernet37": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth38"] + }, + "index": "38", + "lanes": "37" + }, + "Ethernet38": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth39"] + }, + "index": "39", + "lanes": "38" + }, + "Ethernet39": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth40"] + }, + "index": "40", + "lanes": "39" + }, + "Ethernet40": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth41"] + }, + "index": "41", + "lanes": "40" + }, + "Ethernet41": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth42"] + }, + "index": "42", + "lanes": "41" + }, + "Ethernet42": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth43"] + }, + "index": "43", + "lanes": "42" + }, + "Ethernet43": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth44"] + }, + "index": "44", + "lanes": "43" + }, + "Ethernet44": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth45"] + }, + "index": "45", + "lanes": "44" + }, + "Ethernet45": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth46"] + }, + "index": "46", + "lanes": "45" + }, + "Ethernet46": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth47"] + }, + "index": "47", + "lanes": "46" + }, + "Ethernet47": { + "breakout_modes": { + "1x25G[10G,1G]": ["Eth48"] + }, + "index": "48", + "lanes": "47" + }, + "Ethernet48": { + "breakout_modes": { + "1x100G": ["Eth49"], + "4x25G[10G,1G]": ["Eth49/1", "Eth49/2", "Eth49/3", "Eth49/4"] + }, + "index": "49,49,49,49", + "lanes": "48,49,50,51" + }, + "Ethernet52": { + "breakout_modes": { + "1x100G": ["Eth50"], + "4x25G[10G,1G]": ["Eth50/1", "Eth50/2", "Eth50/3", "Eth50/4"] + }, + "index": "50,50,50,50", + "lanes": "52,53,54,55" + }, + "Ethernet56": { + "breakout_modes": { + "1x100G": ["Eth51"], + "4x25G[10G,1G]": ["Eth51/1", "Eth51/2", "Eth51/3", "Eth51/4"] + }, + "index": "51,51,51,51", + "lanes": "56,57,58,59" + }, + "Ethernet60": { + "breakout_modes": { + "1x100G": ["Eth52"], + "4x25G[10G,1G]": ["Eth52/1", "Eth52/2", "Eth52/3", "Eth52/4"] + }, + "index": "52,52,52,52", + "lanes": "60,61,62,63" + }, + "Ethernet64": { + "breakout_modes": { + "1x100G": ["Eth53"], + "4x25G[10G,1G]": ["Eth53/1", "Eth53/2", "Eth53/3", "Eth53/4"] + }, + "index": "53,53,53,53", + "lanes": "64,65,66,67" + }, + "Ethernet68": { + "breakout_modes": { + "1x100G": ["Eth54"], + "4x25G[10G,1G]": ["Eth54/1", "Eth54/2", "Eth54/3", "Eth54/4"] + }, + "index": "54,54,54,54", + "lanes": "68,69,70,71" + }, + "Ethernet72": { + "breakout_modes": { + "1x100G": ["Eth55"], + "4x25G[10G,1G]": ["Eth55/1", "Eth55/2", "Eth55/3", "Eth55/4"] + }, + "index": "55,55,55,55", + "lanes": "72,73,74,75" + }, + "Ethernet76": { + "breakout_modes": { + "1x100G": ["Eth56"], + "4x25G[10G,1G]": ["Eth56/1", "Eth56/2", "Eth56/3", "Eth56/4"] + }, + "index": "56,56,56,56", + "lanes": "76,77,78,79" + }, + "Ethernet80":{ + "breakout_modes": { + "1x10G": ["Eth57"] + }, + "index": "57", + "lanes": "80" + }, + "Ethernet81":{ + "breakout_modes": { + "1x10G": ["Eth58"] + }, + "index": "58", + "lanes": "81" + } + } +} diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.md5 index b9aabeb8706b..c1f0315003ec 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.md5 @@ -1 +1 @@ -e48527ad3f7bc5db09ec1fe078eba9a1 \ No newline at end of file +ca9e4d71ba45e70176f379e2baae662f \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.xml index 80434c00be65..bdaf4d469233 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-Board-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -177,6 +177,18 @@ with IEEE 1588v2 PTP Support with IEEE 1588v2 PTP Support 5 + + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support + 6 + + + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver + 7 + physical-port-num-type @@ -507,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -636,6 +639,11 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + mpp-num-type @@ -696,6 +704,7 @@ lowercase characters. NA + false @@ -711,6 +720,7 @@ lowercase characters. NA + false @@ -726,6 +736,7 @@ lowercase characters. NA + false @@ -741,6 +752,7 @@ lowercase characters. NA + @@ -760,6 +772,7 @@ lowercase characters. NA + false @@ -775,6 +788,7 @@ lowercase characters. NA + false @@ -790,6 +804,7 @@ lowercase characters. NA + false @@ -825,6 +840,7 @@ lowercase characters. NA + @@ -844,6 +860,7 @@ lowercase characters. NA + @@ -863,6 +880,7 @@ lowercase characters. NA + @@ -882,6 +900,7 @@ lowercase characters. NA + @@ -901,6 +920,7 @@ lowercase characters. NA + @@ -920,6 +940,7 @@ lowercase characters. NA + @@ -939,6 +960,7 @@ lowercase characters. NA + @@ -978,6 +1000,7 @@ lowercase characters. NA + @@ -997,6 +1020,7 @@ lowercase characters. NA + @@ -1016,6 +1040,7 @@ lowercase characters. NA + @@ -1035,6 +1060,7 @@ lowercase characters. NA + @@ -1054,6 +1080,7 @@ lowercase characters. NA + @@ -1073,6 +1100,7 @@ lowercase characters. NA + @@ -1092,6 +1120,7 @@ lowercase characters. NA + @@ -1131,6 +1160,7 @@ lowercase characters. NA + @@ -1150,6 +1180,7 @@ lowercase characters. NA + @@ -1169,6 +1200,7 @@ lowercase characters. NA + @@ -1188,6 +1220,7 @@ lowercase characters. NA + @@ -1207,6 +1240,7 @@ lowercase characters. NA + @@ -1226,6 +1260,7 @@ lowercase characters. NA + @@ -1245,6 +1280,7 @@ lowercase characters. NA + @@ -1284,6 +1320,7 @@ lowercase characters. NA + @@ -1303,6 +1340,7 @@ lowercase characters. NA + @@ -1322,6 +1360,7 @@ lowercase characters. NA + @@ -1341,6 +1380,7 @@ lowercase characters. NA + @@ -1360,6 +1400,7 @@ lowercase characters. NA + @@ -1379,6 +1420,7 @@ lowercase characters. NA + @@ -1398,6 +1440,7 @@ lowercase characters. NA + @@ -1437,6 +1480,7 @@ lowercase characters. NA + @@ -1456,6 +1500,7 @@ lowercase characters. NA + @@ -1475,6 +1520,7 @@ lowercase characters. NA + @@ -1494,6 +1540,7 @@ lowercase characters. NA + @@ -1513,6 +1560,7 @@ lowercase characters. NA + @@ -1532,6 +1580,7 @@ lowercase characters. NA + @@ -1551,6 +1600,7 @@ lowercase characters. NA + @@ -1590,6 +1640,7 @@ lowercase characters. NA + @@ -1609,6 +1660,7 @@ lowercase characters. NA + @@ -1628,6 +1680,7 @@ lowercase characters. NA + @@ -1647,6 +1700,7 @@ lowercase characters. NA + @@ -1666,6 +1720,7 @@ lowercase characters. NA + @@ -1685,6 +1740,7 @@ lowercase characters. NA + @@ -1704,6 +1760,7 @@ lowercase characters. NA + @@ -1743,6 +1800,7 @@ lowercase characters. NA + @@ -1762,6 +1820,7 @@ lowercase characters. NA + @@ -1781,6 +1840,7 @@ lowercase characters. NA + @@ -1800,6 +1860,7 @@ lowercase characters. NA + @@ -1819,6 +1880,7 @@ lowercase characters. NA + @@ -1838,6 +1900,7 @@ lowercase characters. NA + @@ -1857,6 +1920,7 @@ lowercase characters. NA + @@ -1896,6 +1960,7 @@ lowercase characters. NA + @@ -1915,6 +1980,7 @@ lowercase characters. NA + @@ -1934,6 +2000,7 @@ lowercase characters. NA + @@ -1953,6 +2020,7 @@ lowercase characters. NA + @@ -1972,6 +2040,7 @@ lowercase characters. NA + @@ -1991,6 +2060,7 @@ lowercase characters. NA + @@ -2010,6 +2080,7 @@ lowercase characters. NA + @@ -2029,6 +2100,7 @@ lowercase characters. NA + @@ -2048,6 +2120,7 @@ lowercase characters. NA + @@ -2067,6 +2140,7 @@ lowercase characters. NA + @@ -2106,6 +2180,7 @@ lowercase characters. NA + @@ -2125,6 +2200,7 @@ lowercase characters. NA + @@ -2144,6 +2220,7 @@ lowercase characters. NA + @@ -2163,6 +2240,7 @@ lowercase characters. NA + @@ -2182,6 +2260,7 @@ lowercase characters. NA + @@ -2201,6 +2280,7 @@ lowercase characters. NA + @@ -2220,6 +2300,7 @@ lowercase characters. NA + @@ -2259,6 +2340,7 @@ lowercase characters. NA + @@ -2278,6 +2360,7 @@ lowercase characters. NA + @@ -2297,6 +2380,7 @@ lowercase characters. NA + @@ -2316,6 +2400,7 @@ lowercase characters. NA + @@ -2335,6 +2420,7 @@ lowercase characters. NA + @@ -2354,6 +2440,7 @@ lowercase characters. NA + @@ -2373,6 +2460,7 @@ lowercase characters. NA + @@ -2412,6 +2500,7 @@ lowercase characters. NA + @@ -2431,6 +2520,7 @@ lowercase characters. NA + @@ -2450,6 +2540,7 @@ lowercase characters. NA + @@ -2469,6 +2560,7 @@ lowercase characters. NA + @@ -2488,6 +2580,7 @@ lowercase characters. NA + @@ -2507,6 +2600,7 @@ lowercase characters. NA + @@ -2526,6 +2620,7 @@ lowercase characters. NA + @@ -2565,6 +2660,7 @@ lowercase characters. NA + @@ -2584,6 +2680,7 @@ lowercase characters. NA + @@ -2603,6 +2700,7 @@ lowercase characters. NA + @@ -2622,6 +2720,7 @@ lowercase characters. NA + @@ -2641,6 +2740,7 @@ lowercase characters. NA + @@ -2660,6 +2760,7 @@ lowercase characters. NA + @@ -2679,6 +2780,7 @@ lowercase characters. NA + @@ -2718,6 +2820,7 @@ lowercase characters. NA + @@ -2737,6 +2840,7 @@ lowercase characters. NA + @@ -2756,6 +2860,7 @@ lowercase characters. NA + @@ -2775,6 +2880,7 @@ lowercase characters. NA + @@ -2794,6 +2900,7 @@ lowercase characters. NA + @@ -2813,6 +2920,7 @@ lowercase characters. NA + @@ -2832,6 +2940,7 @@ lowercase characters. NA + @@ -2871,6 +2980,7 @@ lowercase characters. NA + @@ -2890,6 +3000,7 @@ lowercase characters. NA + @@ -2909,6 +3020,7 @@ lowercase characters. NA + @@ -2928,6 +3040,7 @@ lowercase characters. NA + @@ -2947,6 +3060,7 @@ lowercase characters. NA + @@ -2966,6 +3080,7 @@ lowercase characters. NA + @@ -2985,6 +3100,7 @@ lowercase characters. NA + @@ -3024,6 +3140,7 @@ lowercase characters. NA + @@ -3043,6 +3160,7 @@ lowercase characters. NA + @@ -3062,6 +3180,7 @@ lowercase characters. NA + @@ -3081,6 +3200,7 @@ lowercase characters. NA + @@ -3120,6 +3240,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.md5 index 084f63926d4c..fb0539ad5144 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.md5 @@ -1 +1 @@ -baf77e7f450def2266516782d159cbb4 \ No newline at end of file +5057667a33ccbabfd62355884b977130 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.xml index 7a2208bf90ec..01fe8a64bb8c 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-L1-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -21,6 +21,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + interface-mode-type @@ -254,26 +259,6 @@ 0 1023 - - tx-param-type - enumeration - Tx parameter type - - pre - pre - 0 - - - post - post - 1 - - - peak - peak - 2 - - rx-param-type enumeration @@ -448,6 +433,96 @@ maxRes1 33 + + current1Sel + current1Sel + 34 + + + rl1Sel + rl1Sel + 35 + + + rl1Extra + rl1Extra + 36 + + + cl1Ctrl + cl1Ctrl + 37 + + + enMidFreq + enMidFreq + 38 + + + cs1Mid + cs1Mid + 39 + + + rs1Mid + rs1Mid + 40 + + + rfCtrl + rfCtrl + 41 + + + rl1TiaSel + rl1TiaSel + 42 + + + rl1TiaExtra + rl1TiaExtra + 43 + + + hpfRSel1st + hpfRSel1st + 44 + + + current1TiaSel + current1TiaSel + 45 + + + rl2Tune + rl2Tune + 46 + + + rl2Sel + rl2Sel + 47 + + + rs2Sel + rs2Sel + 48 + + + current2Sel + current2Sel + 49 + + + hpfRsel2nd + hpfRsel2nd + 50 + + + align90AnaReg + align90AnaReg + 51 + boolean-type @@ -641,12 +716,22 @@ 10G enabled + + 1000BASE_X + 1G + KR 10G enabled enabled + + 1000BASE_X + 1G + disabled + disabled + 10GR1Fix @@ -740,6 +825,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -758,6 +847,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + 400GR8 diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.md5 index 4c6962b96910..4a5d938643d0 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.md5 @@ -1 +1 @@ -9699d7ac6395ccab96dec333c782dc1d \ No newline at end of file +1d6eb06245c485e922f1dac5b85dedce \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.xml index 7cd85e016983..eb159969a6aa 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/ASK-PP-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.md5 index cfa1a375d83b..b34615c93e7d 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.md5 @@ -1 +1 @@ -88cbf08802a5d41b605a8dd83f2c5139 \ No newline at end of file +0b1e0deacec9af5b5e9367858b3d43a3 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.xml index 635a099a35aa..124157d391b9 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/FC128x25G/SAI-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -166,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.md5 index b9aabeb8706b..c1f0315003ec 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.md5 @@ -1 +1 @@ -e48527ad3f7bc5db09ec1fe078eba9a1 \ No newline at end of file +ca9e4d71ba45e70176f379e2baae662f \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.xml index 80434c00be65..bdaf4d469233 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-Board-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -177,6 +177,18 @@ with IEEE 1588v2 PTP Support with IEEE 1588v2 PTP Support 5 + + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support + 6 + + + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver + 7 + physical-port-num-type @@ -507,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -636,6 +639,11 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + mpp-num-type @@ -696,6 +704,7 @@ lowercase characters. NA + false @@ -711,6 +720,7 @@ lowercase characters. NA + false @@ -726,6 +736,7 @@ lowercase characters. NA + false @@ -741,6 +752,7 @@ lowercase characters. NA + @@ -760,6 +772,7 @@ lowercase characters. NA + false @@ -775,6 +788,7 @@ lowercase characters. NA + false @@ -790,6 +804,7 @@ lowercase characters. NA + false @@ -825,6 +840,7 @@ lowercase characters. NA + @@ -844,6 +860,7 @@ lowercase characters. NA + @@ -863,6 +880,7 @@ lowercase characters. NA + @@ -882,6 +900,7 @@ lowercase characters. NA + @@ -901,6 +920,7 @@ lowercase characters. NA + @@ -920,6 +940,7 @@ lowercase characters. NA + @@ -939,6 +960,7 @@ lowercase characters. NA + @@ -978,6 +1000,7 @@ lowercase characters. NA + @@ -997,6 +1020,7 @@ lowercase characters. NA + @@ -1016,6 +1040,7 @@ lowercase characters. NA + @@ -1035,6 +1060,7 @@ lowercase characters. NA + @@ -1054,6 +1080,7 @@ lowercase characters. NA + @@ -1073,6 +1100,7 @@ lowercase characters. NA + @@ -1092,6 +1120,7 @@ lowercase characters. NA + @@ -1131,6 +1160,7 @@ lowercase characters. NA + @@ -1150,6 +1180,7 @@ lowercase characters. NA + @@ -1169,6 +1200,7 @@ lowercase characters. NA + @@ -1188,6 +1220,7 @@ lowercase characters. NA + @@ -1207,6 +1240,7 @@ lowercase characters. NA + @@ -1226,6 +1260,7 @@ lowercase characters. NA + @@ -1245,6 +1280,7 @@ lowercase characters. NA + @@ -1284,6 +1320,7 @@ lowercase characters. NA + @@ -1303,6 +1340,7 @@ lowercase characters. NA + @@ -1322,6 +1360,7 @@ lowercase characters. NA + @@ -1341,6 +1380,7 @@ lowercase characters. NA + @@ -1360,6 +1400,7 @@ lowercase characters. NA + @@ -1379,6 +1420,7 @@ lowercase characters. NA + @@ -1398,6 +1440,7 @@ lowercase characters. NA + @@ -1437,6 +1480,7 @@ lowercase characters. NA + @@ -1456,6 +1500,7 @@ lowercase characters. NA + @@ -1475,6 +1520,7 @@ lowercase characters. NA + @@ -1494,6 +1540,7 @@ lowercase characters. NA + @@ -1513,6 +1560,7 @@ lowercase characters. NA + @@ -1532,6 +1580,7 @@ lowercase characters. NA + @@ -1551,6 +1600,7 @@ lowercase characters. NA + @@ -1590,6 +1640,7 @@ lowercase characters. NA + @@ -1609,6 +1660,7 @@ lowercase characters. NA + @@ -1628,6 +1680,7 @@ lowercase characters. NA + @@ -1647,6 +1700,7 @@ lowercase characters. NA + @@ -1666,6 +1720,7 @@ lowercase characters. NA + @@ -1685,6 +1740,7 @@ lowercase characters. NA + @@ -1704,6 +1760,7 @@ lowercase characters. NA + @@ -1743,6 +1800,7 @@ lowercase characters. NA + @@ -1762,6 +1820,7 @@ lowercase characters. NA + @@ -1781,6 +1840,7 @@ lowercase characters. NA + @@ -1800,6 +1860,7 @@ lowercase characters. NA + @@ -1819,6 +1880,7 @@ lowercase characters. NA + @@ -1838,6 +1900,7 @@ lowercase characters. NA + @@ -1857,6 +1920,7 @@ lowercase characters. NA + @@ -1896,6 +1960,7 @@ lowercase characters. NA + @@ -1915,6 +1980,7 @@ lowercase characters. NA + @@ -1934,6 +2000,7 @@ lowercase characters. NA + @@ -1953,6 +2020,7 @@ lowercase characters. NA + @@ -1972,6 +2040,7 @@ lowercase characters. NA + @@ -1991,6 +2060,7 @@ lowercase characters. NA + @@ -2010,6 +2080,7 @@ lowercase characters. NA + @@ -2029,6 +2100,7 @@ lowercase characters. NA + @@ -2048,6 +2120,7 @@ lowercase characters. NA + @@ -2067,6 +2140,7 @@ lowercase characters. NA + @@ -2106,6 +2180,7 @@ lowercase characters. NA + @@ -2125,6 +2200,7 @@ lowercase characters. NA + @@ -2144,6 +2220,7 @@ lowercase characters. NA + @@ -2163,6 +2240,7 @@ lowercase characters. NA + @@ -2182,6 +2260,7 @@ lowercase characters. NA + @@ -2201,6 +2280,7 @@ lowercase characters. NA + @@ -2220,6 +2300,7 @@ lowercase characters. NA + @@ -2259,6 +2340,7 @@ lowercase characters. NA + @@ -2278,6 +2360,7 @@ lowercase characters. NA + @@ -2297,6 +2380,7 @@ lowercase characters. NA + @@ -2316,6 +2400,7 @@ lowercase characters. NA + @@ -2335,6 +2420,7 @@ lowercase characters. NA + @@ -2354,6 +2440,7 @@ lowercase characters. NA + @@ -2373,6 +2460,7 @@ lowercase characters. NA + @@ -2412,6 +2500,7 @@ lowercase characters. NA + @@ -2431,6 +2520,7 @@ lowercase characters. NA + @@ -2450,6 +2540,7 @@ lowercase characters. NA + @@ -2469,6 +2560,7 @@ lowercase characters. NA + @@ -2488,6 +2580,7 @@ lowercase characters. NA + @@ -2507,6 +2600,7 @@ lowercase characters. NA + @@ -2526,6 +2620,7 @@ lowercase characters. NA + @@ -2565,6 +2660,7 @@ lowercase characters. NA + @@ -2584,6 +2680,7 @@ lowercase characters. NA + @@ -2603,6 +2700,7 @@ lowercase characters. NA + @@ -2622,6 +2720,7 @@ lowercase characters. NA + @@ -2641,6 +2740,7 @@ lowercase characters. NA + @@ -2660,6 +2760,7 @@ lowercase characters. NA + @@ -2679,6 +2780,7 @@ lowercase characters. NA + @@ -2718,6 +2820,7 @@ lowercase characters. NA + @@ -2737,6 +2840,7 @@ lowercase characters. NA + @@ -2756,6 +2860,7 @@ lowercase characters. NA + @@ -2775,6 +2880,7 @@ lowercase characters. NA + @@ -2794,6 +2900,7 @@ lowercase characters. NA + @@ -2813,6 +2920,7 @@ lowercase characters. NA + @@ -2832,6 +2940,7 @@ lowercase characters. NA + @@ -2871,6 +2980,7 @@ lowercase characters. NA + @@ -2890,6 +3000,7 @@ lowercase characters. NA + @@ -2909,6 +3020,7 @@ lowercase characters. NA + @@ -2928,6 +3040,7 @@ lowercase characters. NA + @@ -2947,6 +3060,7 @@ lowercase characters. NA + @@ -2966,6 +3080,7 @@ lowercase characters. NA + @@ -2985,6 +3100,7 @@ lowercase characters. NA + @@ -3024,6 +3140,7 @@ lowercase characters. NA + @@ -3043,6 +3160,7 @@ lowercase characters. NA + @@ -3062,6 +3180,7 @@ lowercase characters. NA + @@ -3081,6 +3200,7 @@ lowercase characters. NA + @@ -3120,6 +3240,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.md5 index 084f63926d4c..fb0539ad5144 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.md5 @@ -1 +1 @@ -baf77e7f450def2266516782d159cbb4 \ No newline at end of file +5057667a33ccbabfd62355884b977130 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.xml index 7a2208bf90ec..01fe8a64bb8c 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-L1-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -21,6 +21,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + interface-mode-type @@ -254,26 +259,6 @@ 0 1023 - - tx-param-type - enumeration - Tx parameter type - - pre - pre - 0 - - - post - post - 1 - - - peak - peak - 2 - - rx-param-type enumeration @@ -448,6 +433,96 @@ maxRes1 33 + + current1Sel + current1Sel + 34 + + + rl1Sel + rl1Sel + 35 + + + rl1Extra + rl1Extra + 36 + + + cl1Ctrl + cl1Ctrl + 37 + + + enMidFreq + enMidFreq + 38 + + + cs1Mid + cs1Mid + 39 + + + rs1Mid + rs1Mid + 40 + + + rfCtrl + rfCtrl + 41 + + + rl1TiaSel + rl1TiaSel + 42 + + + rl1TiaExtra + rl1TiaExtra + 43 + + + hpfRSel1st + hpfRSel1st + 44 + + + current1TiaSel + current1TiaSel + 45 + + + rl2Tune + rl2Tune + 46 + + + rl2Sel + rl2Sel + 47 + + + rs2Sel + rs2Sel + 48 + + + current2Sel + current2Sel + 49 + + + hpfRsel2nd + hpfRsel2nd + 50 + + + align90AnaReg + align90AnaReg + 51 + boolean-type @@ -641,12 +716,22 @@ 10G enabled + + 1000BASE_X + 1G + KR 10G enabled enabled + + 1000BASE_X + 1G + disabled + disabled + 10GR1Fix @@ -740,6 +825,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -758,6 +847,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + 400GR8 diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.md5 index 4c6962b96910..4a5d938643d0 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.md5 @@ -1 +1 @@ -9699d7ac6395ccab96dec333c782dc1d \ No newline at end of file +1d6eb06245c485e922f1dac5b85dedce \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.xml index 7cd85e016983..eb159969a6aa 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/ASK-PP-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.md5 b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.md5 index cfa1a375d83b..b34615c93e7d 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.md5 @@ -1 +1 @@ -88cbf08802a5d41b605a8dd83f2c5139 \ No newline at end of file +0b1e0deacec9af5b5e9367858b3d43a3 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.xml b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.xml index 635a099a35aa..124157d391b9 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/db98cx8522_10cc/SAI-F3_2T-128x25G.xml @@ -1,5 +1,5 @@ - + @@ -166,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/platform.json b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/platform.json index 205de6cf42f1..f026e12ba5b4 100644 --- a/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/platform.json +++ b/device/marvell/x86_64-marvell_db98cx8522_10cc-r0/platform.json @@ -3,7 +3,7 @@ "Ethernet0": { "breakout_modes": { "2x100G": ["Eth1/1", "Eth1/2"], - "8x25G[10G]": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4", "Eth1/5", "Eth1/6", "Eth1/7", "Eth1/8"] + "8x25G[10G,1G]": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4", "Eth1/5", "Eth1/6", "Eth1/7", "Eth1/8"] }, "index": "1,1,1,1,1,1,1,1", "lanes": "0,1,2,3,4,5,6,7" @@ -11,7 +11,7 @@ "Ethernet8": { "breakout_modes": { "2x100G": ["Eth2/1", "Eth2/2"], - "8x50G[10G]": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4", "Eth2/5", "Eth2/6", "Eth2/7", "Eth2/8"] + "8x25G[10G,1G]": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4", "Eth2/5", "Eth2/6", "Eth2/7", "Eth2/8"] }, "index": "2,2,2,2,2,2,2,2", "lanes": "8,9,10,11,12,13,14,15" @@ -19,7 +19,7 @@ "Ethernet16": { "breakout_modes": { "2x100G": ["Eth3/1", "Eth3/2"], - "8x50G[10G]": ["Eth3/1", "Eth3/2", "Eth3/3", "Eth3/4", "Eth3/5", "Eth3/6", "Eth3/7", "Eth3/8"] + "8x25G[10G,1G]": ["Eth3/1", "Eth3/2", "Eth3/3", "Eth3/4", "Eth3/5", "Eth3/6", "Eth3/7", "Eth3/8"] }, "index": "3,3,3,3,3,3,3,3", "lanes": "16,17,18,19,20,21,22,23" @@ -27,7 +27,7 @@ "Ethernet24": { "breakout_modes": { "2x100G": ["Eth4/1", "Eth4/2"], - "8x50G[10G]": ["Eth4/1", "Eth4/2", "Eth4/3", "Eth4/4", "Eth4/5", "Eth4/6", "Eth4/7", "Eth4/8"] + "8x25G[10G,1G]": ["Eth4/1", "Eth4/2", "Eth4/3", "Eth4/4", "Eth4/5", "Eth4/6", "Eth4/7", "Eth4/8"] }, "index": "4,4,4,4,4,4,4,4", "lanes": "24,25,26,27,28,29,30,31" @@ -35,7 +35,7 @@ "Ethernet32": { "breakout_modes": { "2x100G": ["Eth5/1", "Eth5/2"], - "8x50G[10G]": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4", "Eth5/5", "Eth5/6", "Eth5/7", "Eth5/8"] + "8x25G[10G,1G]": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4", "Eth5/5", "Eth5/6", "Eth5/7", "Eth5/8"] }, "index": "5,5,5,5,5,5,5,5", "lanes": "32,33,34,35,36,37,38,39" @@ -43,7 +43,7 @@ "Ethernet40": { "breakout_modes": { "2x100G": ["Eth6/1", "Eth6/2"], - "8x50G[10G]": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4", "Eth6/5", "Eth6/6", "Eth6/7", "Eth6/8"] + "8x25G[10G,1G]": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4", "Eth6/5", "Eth6/6", "Eth6/7", "Eth6/8"] }, "index": "6,6,6,6,6,6,6,6", "lanes": "40,41,42,43,44,45,46,47" @@ -51,7 +51,7 @@ "Ethernet48": { "breakout_modes": { "2x100G": ["Eth7/1", "Eth7/2"], - "8x50G[10G]": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4", "Eth7/5", "Eth7/6", "Eth7/7", "Eth7/8"] + "8x25G[10G,1G]": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4", "Eth7/5", "Eth7/6", "Eth7/7", "Eth7/8"] }, "index": "7,7,7,7,7,7,7,7", "lanes": "48,49,50,51,52,53,54,55" @@ -59,7 +59,7 @@ "Ethernet56": { "breakout_modes": { "2x100G": ["Eth8/1", "Eth8/2"], - "8x50G[10G]": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4", "Eth8/5", "Eth8/6", "Eth8/7", "Eth8/8"] + "8x25G[10G,1G]": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4", "Eth8/5", "Eth8/6", "Eth8/7", "Eth8/8"] }, "index": "8,8,8,8,8,8,8,8", "lanes": "56,57,58,59,60,61,62,63" @@ -67,7 +67,7 @@ "Ethernet64": { "breakout_modes": { "2x100G": ["Eth9/1", "Eth9/2"], - "8x50G[10G]": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4", "Eth9/5", "Eth9/6", "Eth9/7", "Eth9/8"] + "8x25G[10G,1G]": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4", "Eth9/5", "Eth9/6", "Eth9/7", "Eth9/8"] }, "index": "9,9,9,9,9,9,9,9", "lanes": "64,65,66,67,68,69,70,71" @@ -75,7 +75,7 @@ "Ethernet72": { "breakout_modes": { "2x100G": ["Eth10/1", "Eth10/2"], - "8x50G[10G]": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4", "Eth10/5", "Eth10/6", "Eth10/7", "Eth10/8"] + "8x25G[10G,1G]": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4", "Eth10/5", "Eth10/6", "Eth10/7", "Eth10/8"] }, "index": "10,10,10,10,10,10,10,10", "lanes": "72,73,74,75,76,77,78,79" @@ -83,7 +83,7 @@ "Ethernet80": { "breakout_modes": { "2x100G": ["Eth11/1", "Eth11/2"], - "8x50G[10G]": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4", "Eth11/5", "Eth11/6", "Eth11/7", "Eth11/8"] + "8x25G[10G,1G]": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4", "Eth11/5", "Eth11/6", "Eth11/7", "Eth11/8"] }, "index": "11,11,11,11,11,11,11,11", "lanes": "80,81,82,83,84,85,86,87" @@ -91,7 +91,7 @@ "Ethernet88": { "breakout_modes": { "2x100G": ["Eth12/1", "Eth12/2"], - "8x50G[10G]": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4", "Eth12/5", "Eth12/6", "Eth12/7", "Eth12/8"] + "8x25G[10G,1G]": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4", "Eth12/5", "Eth12/6", "Eth12/7", "Eth12/8"] }, "index": "12,12,12,12,12,12,12,12", "lanes": "88,89,90,91,92,93,94,95" @@ -99,7 +99,7 @@ "Ethernet96": { "breakout_modes": { "2x100G": ["Eth13/1", "Eth13/2"], - "8x50G[10G]": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4", "Eth13/5", "Eth13/6", "Eth13/7", "Eth13/8"] + "8x25G[10G,1G]": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4", "Eth13/5", "Eth13/6", "Eth13/7", "Eth13/8"] }, "index": "13,13,13,13,13,13,13,13", "lanes": "96,97,98,99,100,101,102,103" @@ -107,7 +107,7 @@ "Ethernet104": { "breakout_modes": { "2x100G": ["Eth14/1", "Eth14/2"], - "8x50G[10G]": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4", "Eth14/5", "Eth14/6", "Eth14/7", "Eth14/8"] + "8x25G[10G,1G]": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4", "Eth14/5", "Eth14/6", "Eth14/7", "Eth14/8"] }, "index": "14,14,14,14,14,14,14,14", "lanes": "104,105,106,107,108,109,110,111" @@ -115,7 +115,7 @@ "Ethernet112": { "breakout_modes": { "2x100G": ["Eth15/1", "Eth15/2"], - "8x50G[10G]": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4", "Eth15/5", "Eth15/6", "Eth15/7", "Eth15/8"] + "8x25G[10G,1G]": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4", "Eth15/5", "Eth15/6", "Eth15/7", "Eth15/8"] }, "index": "15,15,15,15,15,15,15,15", "lanes": "112,113,114,115,116,117,118,119" @@ -123,7 +123,7 @@ "Ethernet120": { "breakout_modes": { "2x100G": ["Eth16/1", "Eth16/2"], - "8x50G[10G]": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4", "Eth16/5", "Eth16/6", "Eth16/7", "Eth16/8"] + "8x25G[10G,1G]": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4", "Eth16/5", "Eth16/6", "Eth16/7", "Eth16/8"] }, "index": "16,16,16,16,16,16,16,16", "lanes": "120,121,122,123,124,125,126,127" diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.md5 index 3a1dbc2cb3e3..670df637486f 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.md5 @@ -1 +1 @@ -62fde882ea62d2c13eb9d7def73f5373 \ No newline at end of file +68722e8ff41be890cabe9e25a12d3f68 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.xml index 6fb03bf181b4..281cdb0d359c 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-Board-F6_4T-128x50G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -744,6 +704,7 @@ lowercase characters. NA + false @@ -759,6 +720,7 @@ lowercase characters. NA + false @@ -774,6 +736,7 @@ lowercase characters. NA + false @@ -789,6 +752,7 @@ lowercase characters. NA + @@ -808,6 +772,7 @@ lowercase characters. NA + false @@ -823,6 +788,7 @@ lowercase characters. NA + false @@ -838,6 +804,7 @@ lowercase characters. NA + false @@ -873,6 +840,7 @@ lowercase characters. NA + @@ -892,6 +860,7 @@ lowercase characters. NA + @@ -911,6 +880,7 @@ lowercase characters. NA + @@ -930,6 +900,7 @@ lowercase characters. NA + @@ -949,6 +920,7 @@ lowercase characters. NA + @@ -968,6 +940,7 @@ lowercase characters. NA + @@ -987,6 +960,7 @@ lowercase characters. NA + @@ -1026,6 +1000,7 @@ lowercase characters. NA + @@ -1045,6 +1020,7 @@ lowercase characters. NA + @@ -1064,6 +1040,7 @@ lowercase characters. NA + @@ -1083,6 +1060,7 @@ lowercase characters. NA + @@ -1102,6 +1080,7 @@ lowercase characters. NA + @@ -1121,6 +1100,7 @@ lowercase characters. NA + @@ -1140,6 +1120,7 @@ lowercase characters. NA + @@ -1179,6 +1160,7 @@ lowercase characters. NA + @@ -1198,6 +1180,7 @@ lowercase characters. NA + @@ -1217,6 +1200,7 @@ lowercase characters. NA + @@ -1236,6 +1220,7 @@ lowercase characters. NA + @@ -1255,6 +1240,7 @@ lowercase characters. NA + @@ -1274,6 +1260,7 @@ lowercase characters. NA + @@ -1293,6 +1280,7 @@ lowercase characters. NA + @@ -1332,6 +1320,7 @@ lowercase characters. NA + @@ -1351,6 +1340,7 @@ lowercase characters. NA + @@ -1370,6 +1360,7 @@ lowercase characters. NA + @@ -1389,6 +1380,7 @@ lowercase characters. NA + @@ -1408,6 +1400,7 @@ lowercase characters. NA + @@ -1427,6 +1420,7 @@ lowercase characters. NA + @@ -1446,6 +1440,7 @@ lowercase characters. NA + @@ -1485,6 +1480,7 @@ lowercase characters. NA + @@ -1504,6 +1500,7 @@ lowercase characters. NA + @@ -1523,6 +1520,7 @@ lowercase characters. NA + @@ -1542,6 +1540,7 @@ lowercase characters. NA + @@ -1561,6 +1560,7 @@ lowercase characters. NA + @@ -1580,6 +1580,7 @@ lowercase characters. NA + @@ -1599,6 +1600,7 @@ lowercase characters. NA + @@ -1638,6 +1640,7 @@ lowercase characters. NA + @@ -1657,6 +1660,7 @@ lowercase characters. NA + @@ -1676,6 +1680,7 @@ lowercase characters. NA + @@ -1695,6 +1700,7 @@ lowercase characters. NA + @@ -1714,6 +1720,7 @@ lowercase characters. NA + @@ -1733,6 +1740,7 @@ lowercase characters. NA + @@ -1752,6 +1760,7 @@ lowercase characters. NA + @@ -1791,6 +1800,7 @@ lowercase characters. NA + @@ -1810,6 +1820,7 @@ lowercase characters. NA + @@ -1829,6 +1840,7 @@ lowercase characters. NA + @@ -1848,6 +1860,7 @@ lowercase characters. NA + @@ -1867,6 +1880,7 @@ lowercase characters. NA + @@ -1886,6 +1900,7 @@ lowercase characters. NA + @@ -1905,6 +1920,7 @@ lowercase characters. NA + @@ -1944,6 +1960,7 @@ lowercase characters. NA + @@ -1963,6 +1980,7 @@ lowercase characters. NA + @@ -1982,6 +2000,7 @@ lowercase characters. NA + @@ -2001,6 +2020,7 @@ lowercase characters. NA + @@ -2020,6 +2040,7 @@ lowercase characters. NA + @@ -2039,6 +2060,7 @@ lowercase characters. NA + @@ -2058,6 +2080,7 @@ lowercase characters. NA + @@ -2077,6 +2100,7 @@ lowercase characters. NA + @@ -2096,6 +2120,7 @@ lowercase characters. NA + @@ -2115,6 +2140,7 @@ lowercase characters. NA + @@ -2154,6 +2180,7 @@ lowercase characters. NA + @@ -2173,6 +2200,7 @@ lowercase characters. NA + @@ -2192,6 +2220,7 @@ lowercase characters. NA + @@ -2211,6 +2240,7 @@ lowercase characters. NA + @@ -2230,6 +2260,7 @@ lowercase characters. NA + @@ -2249,6 +2280,7 @@ lowercase characters. NA + @@ -2268,6 +2300,7 @@ lowercase characters. NA + @@ -2307,6 +2340,7 @@ lowercase characters. NA + @@ -2326,6 +2360,7 @@ lowercase characters. NA + @@ -2345,6 +2380,7 @@ lowercase characters. NA + @@ -2364,6 +2400,7 @@ lowercase characters. NA + @@ -2383,6 +2420,7 @@ lowercase characters. NA + @@ -2402,6 +2440,7 @@ lowercase characters. NA + @@ -2421,6 +2460,7 @@ lowercase characters. NA + @@ -2460,6 +2500,7 @@ lowercase characters. NA + @@ -2479,6 +2520,7 @@ lowercase characters. NA + @@ -2498,6 +2540,7 @@ lowercase characters. NA + @@ -2517,6 +2560,7 @@ lowercase characters. NA + @@ -2536,6 +2580,7 @@ lowercase characters. NA + @@ -2555,6 +2600,7 @@ lowercase characters. NA + @@ -2574,6 +2620,7 @@ lowercase characters. NA + @@ -2613,6 +2660,7 @@ lowercase characters. NA + @@ -2632,6 +2680,7 @@ lowercase characters. NA + @@ -2651,6 +2700,7 @@ lowercase characters. NA + @@ -2670,6 +2720,7 @@ lowercase characters. NA + @@ -2689,6 +2740,7 @@ lowercase characters. NA + @@ -2708,6 +2760,7 @@ lowercase characters. NA + @@ -2727,6 +2780,7 @@ lowercase characters. NA + @@ -2766,6 +2820,7 @@ lowercase characters. NA + @@ -2785,6 +2840,7 @@ lowercase characters. NA + @@ -2804,6 +2860,7 @@ lowercase characters. NA + @@ -2823,6 +2880,7 @@ lowercase characters. NA + @@ -2842,6 +2900,7 @@ lowercase characters. NA + @@ -2861,6 +2920,7 @@ lowercase characters. NA + @@ -2880,6 +2940,7 @@ lowercase characters. NA + @@ -2919,6 +2980,7 @@ lowercase characters. NA + @@ -2938,6 +3000,7 @@ lowercase characters. NA + @@ -2957,6 +3020,7 @@ lowercase characters. NA + @@ -2976,6 +3040,7 @@ lowercase characters. NA + @@ -2995,6 +3060,7 @@ lowercase characters. NA + @@ -3014,6 +3080,7 @@ lowercase characters. NA + @@ -3033,6 +3100,7 @@ lowercase characters. NA + @@ -3072,6 +3140,7 @@ lowercase characters. NA + @@ -3091,6 +3160,7 @@ lowercase characters. NA + @@ -3110,6 +3180,7 @@ lowercase characters. NA + @@ -3129,6 +3200,7 @@ lowercase characters. NA + @@ -3168,6 +3240,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.md5 index 5f5b56ae97cb..055ac3a80fbe 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.md5 @@ -1 +1 @@ -51984f20fe0c5fc520468799ed78af96 \ No newline at end of file +7e454f5e7bf6e34c61fff6d188553966 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.xml index b79e0a2f0cf8..e9f0b0680929 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-L1-F6_4T-128x50G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,14 +615,274 @@ + ASIC_Falcon - 10GR1Fix + 100GR2 - KR - 10G - disabled + CR2 + 100G + rs_544_514_enabled + + + KR2 + 100G + rs_544_514_enabled + + + SR_LR2 + 100G + rs_544_514_enabled + + + SR_LR2 + 50G + rs_enabled + + + CR2 + 50G + rs_enabled + + + KR2 + 50G + rs_enabled + + + CR2 + 100G + rs_544_514_enabled + rs_544_514_enabled + + + KR2 + 100G + rs_544_514_enabled + rs_544_514_enabled + + + CR2 + 50G + rs_enabled + rs_enabled + + + KR2 + 50G + rs_enabled + rs_enabled + + + + 100GR4 + + CR4 + 100G + rs_enabled + + + KR4 + 100G + rs_enabled + + + SR_LR4 + 100G + rs_enabled + + + CR4 + 100G + rs_enabled + rs_enabled + + + KR4 + 100G + rs_enabled + rs_enabled + + + + 10GR1 + + KR + 10G + enabled + + + SR_LR + 10G + enabled + + + 1000BASE_X + 1G + + + KR + 10G + enabled + enabled + + + 1000BASE_X + 1G + disabled + disabled + + + + 10GR1Fix + + KR + 10G + disabled + + + + 200GR4 + + CR4 + 200G + rs_544_514_enabled + + + SR_LR4 + 100G + rs_enabled + + + KR4 + 100G + rs_enabled + + + CR4 + 100G + rs_enabled + + + KR4 + 200G + rs_544_514_enabled + + + SR_LR4 + 200G + rs_544_514_enabled + + + CR4 + 200G + rs_544_514_enabled + rs_544_514_enabled + + + KR4 + 200G + rs_544_514_enabled + rs_544_514_enabled + + + CR4 + 100G + rs_enabled + rs_enabled + + + KR4 + 100G + rs_enabled + rs_enabled + + + + 25GR1 + + CR + 25G + rs_enabled + + + KR + 25G + rs_enabled + + + KR + 10G + enabled + + + SR_LR + 25G + rs_enabled + + + SR_LR + 10G + enabled + + + 1000BASE_X + 1G + + + CR + 25G + rs_enabled + rs_enabled + + + KR + 25G + rs_enabled + rs_enabled + + + KR + 10G + enabled + enabled + + + 1000BASE_X + 1G + disabled + disabled + + + + 400GR8 + + CR8 + 400G + rs_544_514_enabled + + KR8 + 400G + rs_544_514_enabled + + + SR_LR8 + 400G + rs_544_514_enabled + + + CR8 + 400G + rs_544_514_enabled + rs_544_514_enabled + + + KR8 + 400G + rs_544_514_enabled + rs_544_514_enabled + 50GR1 @@ -863,6 +926,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 50G @@ -893,6 +960,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -900,781 +973,1023 @@ 0 AVAGO profile_default - 50GR1 - - - 1 - AVAGO - profile_default - 50GR1 - - - 2 - AVAGO - profile_default - 50GR1 - - - 3 - AVAGO - profile_default - 50GR1 - - - 4 - AVAGO - profile_default - 50GR1 - - - 5 - AVAGO - profile_default - 50GR1 - - - 6 - AVAGO - profile_default - 50GR1 + 400GR8 + true + + 0 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 1 + 50GR1 + + + + + + 2 + 50GR1 + 100GR2 + + + + + 3 + 50GR1 + + + + + + 4 + 50GR1 + 100GR2 + 200GR4 + + + + 5 + 50GR1 + + + + + + 6 + 50GR1 + 100GR2 + + + + + 7 + 50GR1 + + + + - 7 + 8 AVAGO profile_default - 50GR1 + 400GR8 + true + + 8 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 9 + 50GR1 + + + + + + 10 + 50GR1 + 100GR2 + + + + + 11 + 50GR1 + + + + + + 12 + 50GR1 + 100GR2 + 200GR4 + + + + 13 + 50GR1 + + + + + + 14 + 50GR1 + 100GR2 + + + + + 15 + 50GR1 + + + + - 8 + 16 AVAGO profile_default - 50GR1 + 400GR8 + true + + 16 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 17 + 50GR1 + + + + + + 18 + 50GR1 + 100GR2 + + + + + 19 + 50GR1 + + + + + + 20 + 50GR1 + 100GR2 + 200GR4 + + + + 21 + 50GR1 + + + + + + 22 + 50GR1 + 100GR2 + + + + + 23 + 50GR1 + + + + - 9 + 24 AVAGO profile_default - 50GR1 + 400GR8 + true + + 24 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 25 + 50GR1 + + + + + + 26 + 50GR1 + 100GR2 + + + + + 27 + 50GR1 + + + + + + 28 + 50GR1 + 100GR2 + 200GR4 + + + + 29 + 50GR1 + + + + + + 30 + 50GR1 + 100GR2 + + + + + 31 + 50GR1 + + + + - 10 + 32 AVAGO profile_default - 50GR1 + 400GR8 + true + + 32 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 33 + 50GR1 + + + + + + 34 + 50GR1 + 100GR2 + + + + + 35 + 50GR1 + + + + + + 36 + 50GR1 + 100GR2 + 200GR4 + + + + 37 + 50GR1 + + + + + + 38 + 50GR1 + 100GR2 + + + + + 39 + 50GR1 + + + + - 11 + 40 AVAGO profile_default - 50GR1 + 400GR8 + true + + 40 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 41 + 50GR1 + + + + + + 42 + 50GR1 + 100GR2 + + + + + 43 + 50GR1 + + + + + + 44 + 50GR1 + 100GR2 + 200GR4 + + + + 45 + 50GR1 + + + + + + 46 + 50GR1 + 100GR2 + + + + + 47 + 50GR1 + + + + - 12 + 48 AVAGO profile_default - 50GR1 + 400GR8 + true + + 48 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 49 + 50GR1 + + + + + + 50 + 50GR1 + 100GR2 + + + + + 51 + 50GR1 + + + + + + 52 + 50GR1 + 100GR2 + 200GR4 + + + + 53 + 50GR1 + + + + + + 54 + 50GR1 + 100GR2 + + + + + 55 + 50GR1 + + + + - 13 + 56 AVAGO profile_default - 50GR1 + 400GR8 + true + + 56 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 57 + 50GR1 + + + + + + 58 + 50GR1 + 100GR2 + + + + + 59 + 50GR1 + + + + + + 60 + 50GR1 + 100GR2 + 200GR4 + + + + 64 + 50GR1 + + + + + + 65 + 50GR1 + 100GR2 + + + + + 66 + 50GR1 + + + + - 14 + 67 AVAGO profile_default - 50GR1 + 400GR8 + true + + 67 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 68 + 50GR1 + + + + + + 69 + 50GR1 + 100GR2 + + + + + 70 + 50GR1 + + + + + + 71 + 50GR1 + 100GR2 + 200GR4 + + + + 72 + 50GR1 + + + + + + 73 + 50GR1 + 100GR2 + + + + + 74 + 50GR1 + + + + - 15 + 75 AVAGO profile_default - 50GR1 + 400GR8 + true + + 75 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 76 + 50GR1 + + + + + + 77 + 50GR1 + 100GR2 + + + + + 78 + 50GR1 + + + + + + 79 + 50GR1 + 100GR2 + 200GR4 + + + + 80 + 50GR1 + + + + + + 81 + 50GR1 + 100GR2 + + + + + 82 + 50GR1 + + + + - 16 + 83 AVAGO profile_default - 50GR1 + 400GR8 + true + + 83 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 84 + 50GR1 + + + + + + 85 + 50GR1 + 100GR2 + + + + + 86 + 50GR1 + + + + + + 87 + 50GR1 + 100GR2 + 200GR4 + + + + 88 + 50GR1 + + + + + + 89 + 50GR1 + 100GR2 + + + + + 90 + 50GR1 + + + + - 17 + 91 AVAGO profile_default - 50GR1 + 400GR8 + true + + 91 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 92 + 50GR1 + + + + + + 93 + 50GR1 + 100GR2 + + + + + 94 + 50GR1 + + + + + + 95 + 50GR1 + 100GR2 + 200GR4 + + + + 96 + 50GR1 + + + + + + 97 + 50GR1 + 100GR2 + + + + + 98 + 50GR1 + + + + - 18 + 99 AVAGO profile_default - 50GR1 + 400GR8 + true + + 99 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 100 + 50GR1 + + + + + + 101 + 50GR1 + 100GR2 + + + + + 102 + 50GR1 + + + + + + 103 + 50GR1 + 100GR2 + 200GR4 + + + + 104 + 50GR1 + + + + + + 105 + 50GR1 + 100GR2 + + + + + 106 + 50GR1 + + + + - 19 + 107 AVAGO profile_default - 50GR1 + 400GR8 + true + + 107 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 108 + 50GR1 + + + + + + 109 + 50GR1 + 100GR2 + + + + + 110 + 50GR1 + + + + + + 111 + 50GR1 + 100GR2 + 200GR4 + + + + 112 + 50GR1 + + + + + + 113 + 50GR1 + 100GR2 + + + + + 114 + 50GR1 + + + + - 20 + 115 AVAGO profile_default - 50GR1 + 400GR8 + true + + 115 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 116 + 50GR1 + + + + + + 117 + 50GR1 + 100GR2 + + + + + 118 + 50GR1 + + + + + + 119 + 50GR1 + 100GR2 + 200GR4 + + + + 120 + 50GR1 + + + + + + 121 + 50GR1 + 100GR2 + + + + + 122 + 50GR1 + + + + - 21 + 123 AVAGO profile_default - 50GR1 - - - 22 - AVAGO - profile_default - 50GR1 - - - 23 - AVAGO - profile_default - 50GR1 - - - 24 - AVAGO - profile_default - 50GR1 - - - 25 - AVAGO - profile_default - 50GR1 - - - 26 - AVAGO - profile_default - 50GR1 - - - 27 - AVAGO - profile_default - 50GR1 - - - 28 - AVAGO - profile_default - 50GR1 - - - 29 - AVAGO - profile_default - 50GR1 - - - 30 - AVAGO - profile_default - 50GR1 - - - 31 - AVAGO - profile_default - 50GR1 - - - 32 - AVAGO - profile_default - 50GR1 - - - 33 - AVAGO - profile_default - 50GR1 - - - 34 - AVAGO - profile_default - 50GR1 - - - 35 - AVAGO - profile_default - 50GR1 - - - 36 - AVAGO - profile_default - 50GR1 - - - 37 - AVAGO - profile_default - 50GR1 - - - 38 - AVAGO - profile_default - 50GR1 - - - 39 - AVAGO - profile_default - 50GR1 - - - 40 - AVAGO - profile_default - 50GR1 - - - 41 - AVAGO - profile_default - 50GR1 - - - 42 - AVAGO - profile_default - 50GR1 - - - 43 - AVAGO - profile_default - 50GR1 - - - 44 - AVAGO - profile_default - 50GR1 - - - 45 - AVAGO - profile_default - 50GR1 - - - 46 - AVAGO - profile_default - 50GR1 - - - 47 - AVAGO - profile_default - 50GR1 - - - 48 - AVAGO - profile_default - 50GR1 - - - 49 - AVAGO - profile_default - 50GR1 - - - 50 - AVAGO - profile_default - 50GR1 - - - 51 - AVAGO - profile_default - 50GR1 - - - 52 - AVAGO - profile_default - 50GR1 - - - 53 - AVAGO - profile_default - 50GR1 - - - 54 - AVAGO - profile_default - 50GR1 - - - 55 - AVAGO - profile_default - 50GR1 - - - 56 - AVAGO - profile_default - 50GR1 - - - 57 - AVAGO - profile_default - 50GR1 - - - 58 - AVAGO - profile_default - 50GR1 - - - 59 - AVAGO - profile_default - 50GR1 - - - 60 - AVAGO - profile_default - 50GR1 - - - 64 - AVAGO - profile_default - 50GR1 - - - 65 - AVAGO - profile_default - 50GR1 - - - 66 - AVAGO - profile_default - 50GR1 - - - 67 - AVAGO - profile_default - 50GR1 - - - 68 - AVAGO - profile_default - 50GR1 - - - 69 - AVAGO - profile_default - 50GR1 - - - 70 - AVAGO - profile_default - 50GR1 - - - 71 - AVAGO - profile_default - 50GR1 - - - 72 - AVAGO - profile_default - 50GR1 - - - 73 - AVAGO - profile_default - 50GR1 - - - 74 - AVAGO - profile_default - 50GR1 - - - 75 - AVAGO - profile_default - 50GR1 - - - 76 - AVAGO - profile_default - 50GR1 - - - 77 - AVAGO - profile_default - 50GR1 - - - 78 - AVAGO - profile_default - 50GR1 - - - 79 - AVAGO - profile_default - 50GR1 - - - 80 - AVAGO - profile_default - 50GR1 - - - 81 - AVAGO - profile_default - 50GR1 - - - 82 - AVAGO - profile_default - 50GR1 - - - 83 - AVAGO - profile_default - 50GR1 - - - 84 - AVAGO - profile_default - 50GR1 - - - 85 - AVAGO - profile_default - 50GR1 - - - 86 - AVAGO - profile_default - 50GR1 - - - 87 - AVAGO - profile_default - 50GR1 - - - 88 - AVAGO - profile_default - 50GR1 - - - 89 - AVAGO - profile_default - 50GR1 - - - 90 - AVAGO - profile_default - 50GR1 - - - 91 - AVAGO - profile_default - 50GR1 - - - 92 - AVAGO - profile_default - 50GR1 - - - 93 - AVAGO - profile_default - 50GR1 - - - 94 - AVAGO - profile_default - 50GR1 - - - 95 - AVAGO - profile_default - 50GR1 - - - 96 - AVAGO - profile_default - 50GR1 - - - 97 - AVAGO - profile_default - 50GR1 - - - 98 - AVAGO - profile_default - 50GR1 - - - 99 - AVAGO - profile_default - 50GR1 - - - 100 - AVAGO - profile_default - 50GR1 - - - 101 - AVAGO - profile_default - 50GR1 - - - 102 - AVAGO - profile_default - 50GR1 - - - 103 - AVAGO - profile_default - 50GR1 - - - 104 - AVAGO - profile_default - 50GR1 - - - 105 - AVAGO - profile_default - 50GR1 - - - 106 - AVAGO - profile_default - 50GR1 - - - 107 - AVAGO - profile_default - 50GR1 - - - 108 - AVAGO - profile_default - 50GR1 - - - 109 - AVAGO - profile_default - 50GR1 - - - 110 - AVAGO - profile_default - 50GR1 - - - 111 - AVAGO - profile_default - 50GR1 - - - 112 - AVAGO - profile_default - 50GR1 - - - 113 - AVAGO - profile_default - 50GR1 - - - 114 - AVAGO - profile_default - 50GR1 - - - 115 - AVAGO - profile_default - 50GR1 - - - 116 - AVAGO - profile_default - 50GR1 - - - 117 - AVAGO - profile_default - 50GR1 - - - 118 - AVAGO - profile_default - 50GR1 - - - 119 - AVAGO - profile_default - 50GR1 - - - 120 - AVAGO - profile_default - 50GR1 - - - 121 - AVAGO - profile_default - 50GR1 - - - 122 - AVAGO - profile_default - 50GR1 - - - 123 - AVAGO - profile_default - 50GR1 - - - 124 - AVAGO - profile_default - 50GR1 - - - 125 - AVAGO - profile_default - 50GR1 - - - 126 - AVAGO - profile_default - 50GR1 - - - 127 - AVAGO - profile_default - 50GR1 - - - 128 - AVAGO - profile_default - 50GR1 - - - 129 - AVAGO - profile_default - 50GR1 - - - 130 - AVAGO - profile_default - 50GR1 + 400GR8 + true + + 123 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 124 + 50GR1 + + + + + + 125 + 50GR1 + 100GR2 + + + + + 126 + 50GR1 + + + + + + 127 + 50GR1 + 100GR2 + 200GR4 + + + + 128 + 50GR1 + + + + + + 129 + 50GR1 + 100GR2 + + + + + 130 + 50GR1 + + + + 131 AVAGO profile_default 10GR1Fix + false 132 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.md5 index a42c5128e593..0116c20b6fea 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.md5 @@ -1 +1 @@ -2af3a9b26c1f50a5b1201246746c1094 \ No newline at end of file +b00f671cd6009a50c92a476ad7a5c5de \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.xml index e3d2f754e49a..0c755425f2e3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/ASK-PP-F6_4T-128x50G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.md5 index 937d5b67fa70..0476cdd35479 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.md5 @@ -1 +1 @@ -b6f84e11689b4f1c648e63119410f900 \ No newline at end of file +b1b1a4811d0c1e305e014596ed65b09f \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.xml index 31d7b03f1a34..3c51adf7b4ac 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/SAI-F6_4T-128x50G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -164,642 +194,642 @@ 0 0 - 130 + 0 1 0 - 129 + 1 2 0 - 128 + 2 3 0 - 127 + 3 4 0 - 126 + 4 5 0 - 125 + 5 6 0 - 124 + 6 7 0 - 123 + 7 8 0 - 122 + 8 9 0 - 121 + 9 10 0 - 120 + 10 11 0 - 119 + 11 12 0 - 118 + 12 13 0 - 117 + 13 14 0 - 116 + 14 15 0 - 115 + 15 16 0 - 114 + 16 17 0 - 113 + 17 18 0 - 112 + 18 19 0 - 111 + 19 20 0 - 110 + 20 21 0 - 109 + 21 22 0 - 108 + 22 23 0 - 107 + 23 24 0 - 106 + 24 25 0 - 105 + 25 26 0 - 104 + 26 27 0 - 103 + 27 28 0 - 102 + 28 29 0 - 101 + 29 30 0 - 100 + 30 31 0 - 99 + 31 32 0 - 98 + 32 33 0 - 97 + 33 34 0 - 96 + 34 35 0 - 95 + 35 36 0 - 94 + 36 37 0 - 93 + 37 38 0 - 92 + 38 39 0 - 91 + 39 40 0 - 90 + 40 41 0 - 89 + 41 42 0 - 88 + 42 43 0 - 87 + 43 44 0 - 86 + 44 45 0 - 85 + 45 46 0 - 84 + 46 47 0 - 83 + 47 48 0 - 82 + 48 49 0 - 81 + 49 50 0 - 80 + 50 51 0 - 79 + 51 52 0 - 78 + 52 53 0 - 77 + 53 54 0 - 76 + 54 55 0 - 75 + 55 56 0 - 74 + 56 57 0 - 73 + 57 58 0 - 72 + 58 59 0 - 71 + 59 60 0 - 70 + 60 61 0 - 69 + 64 62 0 - 68 + 65 63 0 - 67 + 66 64 0 - 66 + 67 65 0 - 65 + 68 66 0 - 64 + 69 67 0 - 60 + 70 68 0 - 59 + 71 69 0 - 58 + 72 70 0 - 57 + 73 71 0 - 56 + 74 72 0 - 55 + 75 73 0 - 54 + 76 74 0 - 53 + 77 75 0 - 52 + 78 76 0 - 51 + 79 77 0 - 50 + 80 78 0 - 49 + 81 79 0 - 48 + 82 80 0 - 47 + 83 81 0 - 46 + 84 82 0 - 45 + 85 83 0 - 44 + 86 84 0 - 43 + 87 85 0 - 42 + 88 86 0 - 41 + 89 87 0 - 40 + 90 88 0 - 39 + 91 89 0 - 38 + 92 90 0 - 37 + 93 91 0 - 36 + 94 92 0 - 35 + 95 93 0 - 34 + 96 94 0 - 33 + 97 95 0 - 32 + 98 96 0 - 31 + 99 97 0 - 30 + 100 98 0 - 29 + 101 99 0 - 28 + 102 100 0 - 27 + 103 101 0 - 26 + 104 102 0 - 25 + 105 103 0 - 24 + 106 104 0 - 23 + 107 105 0 - 22 + 108 106 0 - 21 + 109 107 0 - 20 + 110 108 0 - 19 + 111 109 0 - 18 + 112 110 0 - 17 + 113 111 0 - 16 + 114 112 0 - 15 + 115 113 0 - 14 + 116 114 0 - 13 + 117 115 0 - 12 + 118 116 0 - 11 + 119 117 0 - 10 + 120 118 0 - 9 + 121 119 0 - 8 + 122 120 0 - 7 + 123 121 0 - 6 + 124 122 0 - 5 + 125 123 0 - 4 + 126 124 0 - 3 + 127 125 0 - 2 + 128 126 0 - 1 + 129 127 0 - 0 + 130 128 @@ -827,6 +857,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t0.j2 index d207208ed964..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"42500", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t1.j2 index 0de5fbd21423..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"42500", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/hwsku.json b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/hwsku.json new file mode 100644 index 000000000000..a1bc97771042 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/hwsku.json @@ -0,0 +1,780 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet1": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet2": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet3": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet4": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet5": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet6": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet7": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet9": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet10": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet11": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet12": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet13": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet14": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet15": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet17": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet18": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet19": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet20": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet21": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet22": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet23": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet25": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet26": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet27": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet28": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet29": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet30": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet31": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet33": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet34": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet35": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet36": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet37": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet38": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet39": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet41": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet42": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet43": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet44": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet45": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet46": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet47": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet49": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet50": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet51": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet52": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet53": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet54": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet55": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet57": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet58": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet59": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet60": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet61": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet62": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet63": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet65": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet66": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet67": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet68": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet69": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet70": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet71": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet73": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet74": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet75": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet76": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet77": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet78": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet79": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet81": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet82": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet83": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet84": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet85": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet86": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet87": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet89": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet90": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet91": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet92": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet93": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet94": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet95": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet97": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet98": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet99": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet100": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet101": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet102": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet103": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet105": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet106": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet107": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet108": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet109": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet110": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet111": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet113": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet114": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet115": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet116": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet117": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet118": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet119": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet121": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet122": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet123": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet124": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet125": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet126": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet127": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x10G", + "autoneg": "off" + }, + "Ethernet129": { + "default_brkout_mode": "1x10G", + "autoneg": "off" + } + } +} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/port_config.ini b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/port_config.ini index bb752f698c2b..8eaa49d99c76 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/port_config.ini +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC128x50G/port_config.ini @@ -1,131 +1,131 @@ -# name lanes alias speed autoneg fec index -Ethernet0 0 fiftyGigE0 50000 on rs 1 -Ethernet1 1 fiftyGigE1 50000 on rs 2 -Ethernet2 2 fiftyGigE2 50000 on rs 3 -Ethernet3 3 fiftyGigE3 50000 on rs 4 -Ethernet4 4 fiftyGigE4 50000 on rs 5 -Ethernet5 5 fiftyGigE5 50000 on rs 6 -Ethernet6 6 fiftyGigE6 50000 on rs 7 -Ethernet7 7 fiftyGigE7 50000 on rs 8 -Ethernet8 8 fiftyGigE8 50000 on rs 9 -Ethernet9 9 fiftyGigE9 50000 on rs 10 -Ethernet10 10 fiftyGigE10 50000 on rs 11 -Ethernet11 11 fiftyGigE11 50000 on rs 12 -Ethernet12 12 fiftyGigE12 50000 on rs 13 -Ethernet13 13 fiftyGigE13 50000 on rs 14 -Ethernet14 14 fiftyGigE14 50000 on rs 15 -Ethernet15 15 fiftyGigE15 50000 on rs 16 -Ethernet16 16 fiftyGigE16 50000 on rs 17 -Ethernet17 17 fiftyGigE17 50000 on rs 18 -Ethernet18 18 fiftyGigE18 50000 on rs 19 -Ethernet19 19 fiftyGigE19 50000 on rs 20 -Ethernet20 20 fiftyGigE20 50000 on rs 21 -Ethernet21 21 fiftyGigE21 50000 on rs 22 -Ethernet22 22 fiftyGigE22 50000 on rs 23 -Ethernet23 23 fiftyGigE23 50000 on rs 24 -Ethernet24 24 fiftyGigE24 50000 on rs 25 -Ethernet25 25 fiftyGigE25 50000 on rs 26 -Ethernet26 26 fiftyGigE26 50000 on rs 27 -Ethernet27 27 fiftyGigE27 50000 on rs 28 -Ethernet28 28 fiftyGigE28 50000 on rs 29 -Ethernet29 29 fiftyGigE29 50000 on rs 30 -Ethernet30 30 fiftyGigE30 50000 on rs 31 -Ethernet31 31 fiftyGigE31 50000 on rs 32 -Ethernet32 32 fiftyGigE32 50000 on rs 33 -Ethernet33 33 fiftyGigE33 50000 on rs 34 -Ethernet34 34 fiftyGigE34 50000 on rs 35 -Ethernet35 35 fiftyGigE35 50000 on rs 36 -Ethernet36 36 fiftyGigE36 50000 on rs 37 -Ethernet37 37 fiftyGigE37 50000 on rs 38 -Ethernet38 38 fiftyGigE38 50000 on rs 39 -Ethernet39 39 fiftyGigE39 50000 on rs 40 -Ethernet40 40 fiftyGigE40 50000 on rs 41 -Ethernet41 41 fiftyGigE41 50000 on rs 42 -Ethernet42 42 fiftyGigE42 50000 on rs 43 -Ethernet43 43 fiftyGigE43 50000 on rs 44 -Ethernet44 44 fiftyGigE44 50000 on rs 45 -Ethernet45 45 fiftyGigE45 50000 on rs 46 -Ethernet46 46 fiftyGigE46 50000 on rs 47 -Ethernet47 47 fiftyGigE47 50000 on rs 48 -Ethernet48 48 fiftyGigE48 50000 on rs 49 -Ethernet49 49 fiftyGigE49 50000 on rs 50 -Ethernet50 50 fiftyGigE50 50000 on rs 51 -Ethernet51 51 fiftyGigE51 50000 on rs 52 -Ethernet52 52 fiftyGigE52 50000 on rs 53 -Ethernet53 53 fiftyGigE53 50000 on rs 54 -Ethernet54 54 fiftyGigE54 50000 on rs 55 -Ethernet55 55 fiftyGigE55 50000 on rs 56 -Ethernet56 56 fiftyGigE56 50000 on rs 57 -Ethernet57 57 fiftyGigE57 50000 on rs 58 -Ethernet58 58 fiftyGigE58 50000 on rs 59 -Ethernet59 59 fiftyGigE59 50000 on rs 60 -Ethernet60 60 fiftyGigE60 50000 on rs 61 -Ethernet61 61 fiftyGigE61 50000 on rs 62 -Ethernet62 62 fiftyGigE62 50000 on rs 63 -Ethernet63 63 fiftyGigE63 50000 on rs 64 -Ethernet64 64 fiftyGigE64 50000 on rs 65 -Ethernet65 65 fiftyGigE65 50000 on rs 66 -Ethernet66 66 fiftyGigE66 50000 on rs 67 -Ethernet67 67 fiftyGigE67 50000 on rs 68 -Ethernet68 68 fiftyGigE68 50000 on rs 69 -Ethernet69 69 fiftyGigE69 50000 on rs 70 -Ethernet70 70 fiftyGigE70 50000 on rs 71 -Ethernet71 71 fiftyGigE71 50000 on rs 72 -Ethernet72 72 fiftyGigE72 50000 on rs 73 -Ethernet73 73 fiftyGigE73 50000 on rs 74 -Ethernet74 74 fiftyGigE74 50000 on rs 75 -Ethernet75 75 fiftyGigE75 50000 on rs 76 -Ethernet76 76 fiftyGigE76 50000 on rs 77 -Ethernet77 77 fiftyGigE77 50000 on rs 78 -Ethernet78 78 fiftyGigE78 50000 on rs 79 -Ethernet79 79 fiftyGigE79 50000 on rs 80 -Ethernet80 80 fiftyGigE80 50000 on rs 81 -Ethernet81 81 fiftyGigE81 50000 on rs 82 -Ethernet82 82 fiftyGigE82 50000 on rs 83 -Ethernet83 83 fiftyGigE83 50000 on rs 84 -Ethernet84 84 fiftyGigE84 50000 on rs 85 -Ethernet85 85 fiftyGigE85 50000 on rs 86 -Ethernet86 86 fiftyGigE86 50000 on rs 87 -Ethernet87 87 fiftyGigE87 50000 on rs 88 -Ethernet88 88 fiftyGigE88 50000 on rs 89 -Ethernet89 89 fiftyGigE89 50000 on rs 90 -Ethernet90 90 fiftyGigE90 50000 on rs 91 -Ethernet91 91 fiftyGigE91 50000 on rs 92 -Ethernet92 92 fiftyGigE92 50000 on rs 93 -Ethernet93 93 fiftyGigE93 50000 on rs 94 -Ethernet94 94 fiftyGigE94 50000 on rs 95 -Ethernet95 95 fiftyGigE95 50000 on rs 96 -Ethernet96 96 fiftyGigE96 50000 on rs 97 -Ethernet97 97 fiftyGigE97 50000 on rs 98 -Ethernet98 98 fiftyGigE98 50000 on rs 99 -Ethernet99 99 fiftyGigE99 50000 on rs 100 -Ethernet100 100 fiftyGigE100 50000 on rs 101 -Ethernet101 101 fiftyGigE101 50000 on rs 102 -Ethernet102 102 fiftyGigE102 50000 on rs 103 -Ethernet103 103 fiftyGigE103 50000 on rs 104 -Ethernet104 104 fiftyGigE104 50000 on rs 105 -Ethernet105 105 fiftyGigE105 50000 on rs 106 -Ethernet106 106 fiftyGigE106 50000 on rs 107 -Ethernet107 107 fiftyGigE107 50000 on rs 108 -Ethernet108 108 fiftyGigE108 50000 on rs 109 -Ethernet109 109 fiftyGigE109 50000 on rs 110 -Ethernet110 110 fiftyGigE110 50000 on rs 111 -Ethernet111 111 fiftyGigE111 50000 on rs 112 -Ethernet112 112 fiftyGigE112 50000 on rs 113 -Ethernet113 113 fiftyGigE113 50000 on rs 114 -Ethernet114 114 fiftyGigE114 50000 on rs 115 -Ethernet115 115 fiftyGigE115 50000 on rs 116 -Ethernet116 116 fiftyGigE116 50000 on rs 117 -Ethernet117 117 fiftyGigE117 50000 on rs 118 -Ethernet118 118 fiftyGigE118 50000 on rs 119 -Ethernet119 119 fiftyGigE119 50000 on rs 120 -Ethernet120 120 fiftyGigE120 50000 on rs 121 -Ethernet121 121 fiftyGigE121 50000 on rs 122 -Ethernet122 122 fiftyGigE122 50000 on rs 123 -Ethernet123 123 fiftyGigE123 50000 on rs 124 -Ethernet124 124 fiftyGigE124 50000 on rs 125 -Ethernet125 125 fiftyGigE125 50000 on rs 126 -Ethernet126 126 fiftyGigE126 50000 on rs 127 -Ethernet127 127 fiftyGigE127 50000 on rs 128 -Ethernet128 128 tenGigE128 10000 off none 129 -Ethernet129 129 tenGigE129 10000 off none 130 +# name lanes alias speed autoneg fec index +Ethernet0 0 Eth1/1 50000 on rs 1 +Ethernet1 1 Eth1/2 50000 on rs 1 +Ethernet2 2 Eth1/3 50000 on rs 1 +Ethernet3 3 Eth1/4 50000 on rs 1 +Ethernet4 4 Eth1/5 50000 on rs 1 +Ethernet5 5 Eth1/6 50000 on rs 1 +Ethernet6 6 Eth1/7 50000 on rs 1 +Ethernet7 7 Eth1/8 50000 on rs 1 +Ethernet8 8 Eth2/1 50000 on rs 2 +Ethernet9 9 Eth2/2 50000 on rs 2 +Ethernet10 10 Eth2/3 50000 on rs 2 +Ethernet11 11 Eth2/4 50000 on rs 2 +Ethernet12 12 Eth2/5 50000 on rs 2 +Ethernet13 13 Eth2/6 50000 on rs 2 +Ethernet14 14 Eth2/7 50000 on rs 2 +Ethernet15 15 Eth2/8 50000 on rs 2 +Ethernet16 16 Eth3/1 50000 on rs 3 +Ethernet17 17 Eth3/2 50000 on rs 3 +Ethernet18 18 Eth3/3 50000 on rs 3 +Ethernet19 19 Eth3/4 50000 on rs 3 +Ethernet20 20 Eth3/5 50000 on rs 3 +Ethernet21 21 Eth3/6 50000 on rs 3 +Ethernet22 22 Eth3/7 50000 on rs 3 +Ethernet23 23 Eth3/8 50000 on rs 3 +Ethernet24 24 Eth4/1 50000 on rs 4 +Ethernet25 25 Eth4/2 50000 on rs 4 +Ethernet26 26 Eth4/3 50000 on rs 4 +Ethernet27 27 Eth4/4 50000 on rs 4 +Ethernet28 28 Eth4/5 50000 on rs 4 +Ethernet29 29 Eth4/6 50000 on rs 4 +Ethernet30 30 Eth4/7 50000 on rs 4 +Ethernet31 31 Eth4/8 50000 on rs 4 +Ethernet32 32 Eth5/1 50000 on rs 5 +Ethernet33 33 Eth5/2 50000 on rs 5 +Ethernet34 34 Eth5/3 50000 on rs 5 +Ethernet35 35 Eth5/4 50000 on rs 5 +Ethernet36 36 Eth5/5 50000 on rs 5 +Ethernet37 37 Eth5/6 50000 on rs 5 +Ethernet38 38 Eth5/7 50000 on rs 5 +Ethernet39 39 Eth5/8 50000 on rs 5 +Ethernet40 40 Eth6/1 50000 on rs 6 +Ethernet41 41 Eth6/2 50000 on rs 6 +Ethernet42 42 Eth6/3 50000 on rs 6 +Ethernet43 43 Eth6/4 50000 on rs 6 +Ethernet44 44 Eth6/5 50000 on rs 6 +Ethernet45 45 Eth6/6 50000 on rs 6 +Ethernet46 46 Eth6/7 50000 on rs 6 +Ethernet47 47 Eth6/8 50000 on rs 6 +Ethernet48 48 Eth7/1 50000 on rs 7 +Ethernet49 49 Eth7/2 50000 on rs 7 +Ethernet50 50 Eth7/3 50000 on rs 7 +Ethernet51 51 Eth7/4 50000 on rs 7 +Ethernet52 52 Eth7/5 50000 on rs 7 +Ethernet53 53 Eth7/6 50000 on rs 7 +Ethernet54 54 Eth7/7 50000 on rs 7 +Ethernet55 55 Eth7/8 50000 on rs 7 +Ethernet56 56 Eth8/1 50000 on rs 8 +Ethernet57 57 Eth8/2 50000 on rs 8 +Ethernet58 58 Eth8/3 50000 on rs 8 +Ethernet59 59 Eth8/4 50000 on rs 8 +Ethernet60 60 Eth8/5 50000 on rs 8 +Ethernet61 61 Eth8/6 50000 on rs 8 +Ethernet62 62 Eth8/7 50000 on rs 8 +Ethernet63 63 Eth8/8 50000 on rs 8 +Ethernet64 64 Eth9/1 50000 on rs 9 +Ethernet65 65 Eth9/2 50000 on rs 9 +Ethernet66 66 Eth9/3 50000 on rs 9 +Ethernet67 67 Eth9/4 50000 on rs 9 +Ethernet68 68 Eth9/5 50000 on rs 9 +Ethernet69 69 Eth9/6 50000 on rs 9 +Ethernet70 70 Eth9/7 50000 on rs 9 +Ethernet71 71 Eth9/8 50000 on rs 9 +Ethernet72 72 Eth10/1 50000 on rs 10 +Ethernet73 73 Eth10/2 50000 on rs 10 +Ethernet74 74 Eth10/3 50000 on rs 10 +Ethernet75 75 Eth10/4 50000 on rs 10 +Ethernet76 76 Eth10/5 50000 on rs 10 +Ethernet77 77 Eth10/6 50000 on rs 10 +Ethernet78 78 Eth10/7 50000 on rs 10 +Ethernet79 79 Eth10/8 50000 on rs 10 +Ethernet80 80 Eth11/1 50000 on rs 11 +Ethernet81 81 Eth11/2 50000 on rs 11 +Ethernet82 82 Eth11/3 50000 on rs 11 +Ethernet83 83 Eth11/4 50000 on rs 11 +Ethernet84 84 Eth11/5 50000 on rs 11 +Ethernet85 85 Eth11/6 50000 on rs 11 +Ethernet86 86 Eth11/7 50000 on rs 11 +Ethernet87 87 Eth11/8 50000 on rs 11 +Ethernet88 88 Eth12/1 50000 on rs 12 +Ethernet89 89 Eth12/2 50000 on rs 12 +Ethernet90 90 Eth12/3 50000 on rs 12 +Ethernet91 91 Eth12/4 50000 on rs 12 +Ethernet92 92 Eth12/5 50000 on rs 12 +Ethernet93 93 Eth12/6 50000 on rs 12 +Ethernet94 94 Eth12/7 50000 on rs 12 +Ethernet95 95 Eth12/8 50000 on rs 12 +Ethernet96 96 Eth13/1 50000 on rs 13 +Ethernet97 97 Eth13/2 50000 on rs 13 +Ethernet98 98 Eth13/3 50000 on rs 13 +Ethernet99 99 Eth13/4 50000 on rs 13 +Ethernet100 100 Eth13/5 50000 on rs 13 +Ethernet101 101 Eth13/6 50000 on rs 13 +Ethernet102 102 Eth13/7 50000 on rs 13 +Ethernet103 103 Eth13/8 50000 on rs 13 +Ethernet104 104 Eth14/1 50000 on rs 14 +Ethernet105 105 Eth14/2 50000 on rs 14 +Ethernet106 106 Eth14/3 50000 on rs 14 +Ethernet107 107 Eth14/4 50000 on rs 14 +Ethernet108 108 Eth14/5 50000 on rs 14 +Ethernet109 109 Eth14/6 50000 on rs 14 +Ethernet110 110 Eth14/7 50000 on rs 14 +Ethernet111 111 Eth14/8 50000 on rs 14 +Ethernet112 112 Eth15/1 50000 on rs 15 +Ethernet113 113 Eth15/2 50000 on rs 15 +Ethernet114 114 Eth15/3 50000 on rs 15 +Ethernet115 115 Eth15/4 50000 on rs 15 +Ethernet116 116 Eth15/5 50000 on rs 15 +Ethernet117 117 Eth15/6 50000 on rs 15 +Ethernet118 118 Eth15/7 50000 on rs 15 +Ethernet119 119 Eth15/8 50000 on rs 15 +Ethernet120 120 Eth16/1 50000 on rs 16 +Ethernet121 121 Eth16/2 50000 on rs 16 +Ethernet122 122 Eth16/3 50000 on rs 16 +Ethernet123 123 Eth16/4 50000 on rs 16 +Ethernet124 124 Eth16/5 50000 on rs 16 +Ethernet125 125 Eth16/6 50000 on rs 16 +Ethernet126 126 Eth16/7 50000 on rs 16 +Ethernet127 127 Eth16/8 50000 on rs 16 +Ethernet128 128 Eth17 10000 off none 129 +Ethernet129 129 Eth17 10000 off none 130 diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.md5 index 8c4e2fc5394d..fe6adba3ae2f 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -8aeebdef0a211f5143f1084019654814 \ No newline at end of file +5c5b7b3da6f355086e6a33f534520cc2 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.xml index d88594c3edee..51731aa0ed59 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-Board-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -744,6 +704,7 @@ lowercase characters. NA + false @@ -759,6 +720,7 @@ lowercase characters. NA + false @@ -774,6 +736,7 @@ lowercase characters. NA + false @@ -809,6 +772,7 @@ lowercase characters. NA + @@ -828,6 +792,7 @@ lowercase characters. NA + @@ -847,6 +812,7 @@ lowercase characters. NA + @@ -886,6 +852,7 @@ lowercase characters. NA + @@ -905,6 +872,7 @@ lowercase characters. NA + @@ -924,6 +892,7 @@ lowercase characters. NA + @@ -963,6 +932,7 @@ lowercase characters. NA + @@ -982,6 +952,7 @@ lowercase characters. NA + @@ -1001,6 +972,7 @@ lowercase characters. NA + @@ -1040,6 +1012,7 @@ lowercase characters. NA + @@ -1059,6 +1032,7 @@ lowercase characters. NA + @@ -1078,6 +1052,7 @@ lowercase characters. NA + @@ -1117,6 +1092,7 @@ lowercase characters. NA + @@ -1136,6 +1112,7 @@ lowercase characters. NA + @@ -1155,6 +1132,7 @@ lowercase characters. NA + @@ -1194,6 +1172,7 @@ lowercase characters. NA + @@ -1213,6 +1192,7 @@ lowercase characters. NA + @@ -1232,6 +1212,7 @@ lowercase characters. NA + @@ -1271,6 +1252,7 @@ lowercase characters. NA + @@ -1290,6 +1272,7 @@ lowercase characters. NA + @@ -1309,6 +1292,7 @@ lowercase characters. NA + @@ -1348,6 +1332,7 @@ lowercase characters. NA + @@ -1367,6 +1352,7 @@ lowercase characters. NA + @@ -1386,6 +1372,7 @@ lowercase characters. NA + @@ -1425,6 +1412,7 @@ lowercase characters. NA + @@ -1444,6 +1432,7 @@ lowercase characters. NA + @@ -1463,6 +1452,7 @@ lowercase characters. NA + @@ -1502,6 +1492,7 @@ lowercase characters. NA + @@ -1521,6 +1512,7 @@ lowercase characters. NA + @@ -1540,6 +1532,7 @@ lowercase characters. NA + @@ -1579,6 +1572,7 @@ lowercase characters. NA + @@ -1598,6 +1592,7 @@ lowercase characters. NA + @@ -1617,6 +1612,7 @@ lowercase characters. NA + @@ -1736,6 +1732,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.md5 index be0843ca8b13..ff0ead8f4057 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -825014d819cb5d702586d3cc0bf9e2d0 \ No newline at end of file +e00a71a9f8ec6e0ddb7fd77a82ed6efb \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.xml index e33753b1e676..7e6057313bde 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-L1-F6_4T-48x25G-4x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,324 +718,378 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 10GR1Fix + false 53 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.md5 index 8f2588351150..ef12ada302c5 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -897ca459774ad5e95dcd7dcb0d10c0af \ No newline at end of file +4a735c82305978f8aa1a77227fe02760 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.xml index b50dbcd5d93e..535f635d0314 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/ASK-PP-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.md5 index 64a77978577a..11bbd5628f58 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -0952c232696d216ca2361801f32bfac4 \ No newline at end of file +54b0da50264f4419e80e125564d834b4 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.xml index 9b3224ab63fc..18928a6c6c55 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/SAI-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -447,6 +477,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t0.j2 index f056413e8283..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t1.j2 index f056413e8283..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/FC48x25G4x100GR4/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.md5 index 8c4e2fc5394d..fe6adba3ae2f 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -8aeebdef0a211f5143f1084019654814 \ No newline at end of file +5c5b7b3da6f355086e6a33f534520cc2 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.xml index d88594c3edee..51731aa0ed59 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-Board-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -744,6 +704,7 @@ lowercase characters. NA + false @@ -759,6 +720,7 @@ lowercase characters. NA + false @@ -774,6 +736,7 @@ lowercase characters. NA + false @@ -809,6 +772,7 @@ lowercase characters. NA + @@ -828,6 +792,7 @@ lowercase characters. NA + @@ -847,6 +812,7 @@ lowercase characters. NA + @@ -886,6 +852,7 @@ lowercase characters. NA + @@ -905,6 +872,7 @@ lowercase characters. NA + @@ -924,6 +892,7 @@ lowercase characters. NA + @@ -963,6 +932,7 @@ lowercase characters. NA + @@ -982,6 +952,7 @@ lowercase characters. NA + @@ -1001,6 +972,7 @@ lowercase characters. NA + @@ -1040,6 +1012,7 @@ lowercase characters. NA + @@ -1059,6 +1032,7 @@ lowercase characters. NA + @@ -1078,6 +1052,7 @@ lowercase characters. NA + @@ -1117,6 +1092,7 @@ lowercase characters. NA + @@ -1136,6 +1112,7 @@ lowercase characters. NA + @@ -1155,6 +1132,7 @@ lowercase characters. NA + @@ -1194,6 +1172,7 @@ lowercase characters. NA + @@ -1213,6 +1192,7 @@ lowercase characters. NA + @@ -1232,6 +1212,7 @@ lowercase characters. NA + @@ -1271,6 +1252,7 @@ lowercase characters. NA + @@ -1290,6 +1272,7 @@ lowercase characters. NA + @@ -1309,6 +1292,7 @@ lowercase characters. NA + @@ -1348,6 +1332,7 @@ lowercase characters. NA + @@ -1367,6 +1352,7 @@ lowercase characters. NA + @@ -1386,6 +1372,7 @@ lowercase characters. NA + @@ -1425,6 +1412,7 @@ lowercase characters. NA + @@ -1444,6 +1432,7 @@ lowercase characters. NA + @@ -1463,6 +1452,7 @@ lowercase characters. NA + @@ -1502,6 +1492,7 @@ lowercase characters. NA + @@ -1521,6 +1512,7 @@ lowercase characters. NA + @@ -1540,6 +1532,7 @@ lowercase characters. NA + @@ -1579,6 +1572,7 @@ lowercase characters. NA + @@ -1598,6 +1592,7 @@ lowercase characters. NA + @@ -1617,6 +1612,7 @@ lowercase characters. NA + @@ -1736,6 +1732,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.md5 index be0843ca8b13..ff0ead8f4057 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -825014d819cb5d702586d3cc0bf9e2d0 \ No newline at end of file +e00a71a9f8ec6e0ddb7fd77a82ed6efb \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.xml index e33753b1e676..7e6057313bde 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-L1-F6_4T-48x25G-4x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,324 +718,378 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 10GR1Fix + false 53 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.md5 index 8f2588351150..ef12ada302c5 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -897ca459774ad5e95dcd7dcb0d10c0af \ No newline at end of file +4a735c82305978f8aa1a77227fe02760 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.xml index b50dbcd5d93e..535f635d0314 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/ASK-PP-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.md5 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.md5 index 64a77978577a..11bbd5628f58 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.md5 @@ -1 +1 @@ -0952c232696d216ca2361801f32bfac4 \ No newline at end of file +54b0da50264f4419e80e125564d834b4 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.xml b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.xml index 9b3224ab63fc..18928a6c6c55 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/SAI-F6_4T-48x25G-4x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -447,6 +477,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers.json.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers.json.j2 index a9a01d707ebf..0b1cb2c541b6 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers.json.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers.json.j2 @@ -1 +1,2 @@ +{%- set default_topo = 't1' %} {%- include 'buffers_config.j2' %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t0.j2 index f056413e8283..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t1.j2 index f056413e8283..28e30dee8cc3 100644 --- a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "10500000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/db98cx8540_16cd/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/platform.json b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/platform.json new file mode 100644 index 000000000000..72f8e945f61d --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8540_16cd-r0/platform.json @@ -0,0 +1,194 @@ +{ + "interfaces": { + "Ethernet0": { + "breakout_modes": { + "1x400G": ["Eth1"], + "2x200G[100G]": ["Eth1/1", "Eth1/2"], + "4x100G": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4"], + "4x25G(4)": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4"], + "8x50G[25G,10G,1G]": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4", "Eth1/5", "Eth1/6", "Eth1/7", "Eth1/8"] + }, + "index": "1,1,1,1,1,1,1,1", + "lanes": "0,1,2,3,4,5,6,7" + }, + "Ethernet8": { + "breakout_modes": { + "1x400G": ["Eth2"], + "2x200G[100G]": ["Eth2/1", "Eth2/2"], + "4x100G": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4"], + "4x25G(4)": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4"], + "8x50G[25G,10G,1G]": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4", "Eth2/5", "Eth2/6", "Eth2/7", "Eth2/8"] + }, + "index": "2,2,2,2,2,2,2,2", + "lanes": "8,9,10,11,12,13,14,15" + }, + "Ethernet16": { + "breakout_modes": { + "1x400G": ["Eth3"], + "2x200G[100G]": ["Eth3/1", "Eth3/2"], + "4x100G": ["Eth3/1", "Eth3/2", "Eth3/3", "Eth3/4"], + "4x25G(4)": ["Eth3/1", "Eth3/2", "Eth3/3", "Eth3/4"], + "8x50G[25G,10G,1G]": ["Eth3/1", "Eth3/2", "Eth3/3", "Eth3/4", "Eth3/5", "Eth3/6", "Eth3/7", "Eth3/8"] + }, + "index": "3,3,3,3,3,3,3,3", + "lanes": "16,17,18,19,20,21,22,23" + }, + "Ethernet24": { + "breakout_modes": { + "1x400G": ["Eth4"], + "2x200G[100G]": ["Eth4/1", "Eth4/2"], + "4x100G": ["Eth4/1", "Eth4/2", "Eth4/3", "Eth4/4"], + "4x25G(4)": ["Eth4/1", "Eth4/2", "Eth4/3", "Eth4/4"], + "8x50G[25G,10G,1G]": ["Eth4/1", "Eth4/2", "Eth4/3", "Eth4/4", "Eth4/5", "Eth4/6", "Eth4/7", "Eth4/8"] + }, + "index": "4,4,4,4,4,4,4,4", + "lanes": "24,25,26,27,28,29,30,31" + }, + "Ethernet32": { + "breakout_modes": { + "1x400G": ["Eth5"], + "2x200G[100G]": ["Eth5/1", "Eth5/2"], + "4x100G": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4"], + "4x25G(4)": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4"], + "8x50G[25G,10G,1G]": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4", "Eth5/5", "Eth5/6", "Eth5/7", "Eth5/8"] + }, + "index": "5,5,5,5,5,5,5,5", + "lanes": "32,33,34,35,36,37,38,39" + }, + "Ethernet40": { + "breakout_modes": { + "1x400G": ["Eth6"], + "2x200G[100G]": ["Eth6/1", "Eth6/2"], + "4x100G": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4"], + "4x25G(4)": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4"], + "8x50G[25G,10G,1G]": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4", "Eth6/5", "Eth6/6", "Eth6/7", "Eth6/8"] + }, + "index": "6,6,6,6,6,6,6,6", + "lanes": "40,41,42,43,44,45,46,47" + }, + "Ethernet48": { + "breakout_modes": { + "1x400G": ["Eth7"], + "2x200G[100G]": ["Eth7/1", "Eth7/2"], + "4x100G": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4"], + "4x25G(4)": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4"], + "8x50G[25G,10G,1G]": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4", "Eth7/5", "Eth7/6", "Eth7/7", "Eth7/8"] + }, + "index": "7,7,7,7,7,7,7,7", + "lanes": "48,49,50,51,52,53,54,55" + }, + "Ethernet56": { + "breakout_modes": { + "1x400G": ["Eth8"], + "2x200G[100G]": ["Eth8/1", "Eth8/2"], + "4x100G": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4"], + "4x25G(4)": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4"], + "8x50G[25G,10G,1G]": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4", "Eth8/5", "Eth8/6", "Eth8/7", "Eth8/8"] + }, + "index": "8,8,8,8,8,8,8,8", + "lanes": "56,57,58,59,60,61,62,63" + }, + "Ethernet64": { + "breakout_modes": { + "1x400G": ["Eth9"], + "2x200G[100G]": ["Eth9/1", "Eth9/2"], + "4x100G": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4"], + "4x25G(4)": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4"], + "8x50G[25G,10G,1G]": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4", "Eth9/5", "Eth9/6", "Eth9/7", "Eth9/8"] + }, + "index": "9,9,9,9,9,9,9,9", + "lanes": "64,65,66,67,68,69,70,71" + }, + "Ethernet72": { + "breakout_modes": { + "1x400G": ["Eth10"], + "2x200G[100G]": ["Eth10/1", "Eth10/2"], + "4x100G": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4"], + "4x25G(4)": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4"], + "8x50G[25G,10G,1G]": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4", "Eth10/5", "Eth10/6", "Eth10/7", "Eth10/8"] + }, + "index": "10,10,10,10,10,10,10,10", + "lanes": "72,73,74,75,76,77,78,79" + }, + "Ethernet80": { + "breakout_modes": { + "1x400G": ["Eth11"], + "2x200G[100G]": ["Eth11/1", "Eth11/2"], + "4x100G": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4"], + "4x25G(4)": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4"], + "8x50G[25G,10G,1G]": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4", "Eth11/5", "Eth11/6", "Eth11/7", "Eth11/8"] + }, + "index": "11,11,11,11,11,11,11,11", + "lanes": "80,81,82,83,84,85,86,87" + }, + "Ethernet88": { + "breakout_modes": { + "1x400G": ["Eth12"], + "2x200G[100G]": ["Eth12/1", "Eth12/2"], + "4x100G": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4"], + "4x25G(4)": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4"], + "8x50G[25G,10G,1G]": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4", "Eth12/5", "Eth12/6", "Eth12/7", "Eth12/8"] + }, + "index": "12,12,12,12,12,12,12,12", + "lanes": "88,89,90,91,92,93,94,95" + }, + "Ethernet96": { + "breakout_modes": { + "1x400G": ["Eth13"], + "2x200G[100G]": ["Eth13/1", "Eth13/2"], + "4x100G": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4"], + "4x25G(4)": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4"], + "8x50G[25G,10G,1G]": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4", "Eth13/5", "Eth13/6", "Eth13/7", "Eth13/8"] + }, + "index": "13,13,13,13,13,13,13,13", + "lanes": "96,97,98,99,100,101,102,103" + }, + "Ethernet104": { + "breakout_modes": { + "1x400G": ["Eth14"], + "2x200G[100G]": ["Eth14/1", "Eth14/2"], + "4x100G": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4"], + "4x25G(4)": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4"], + "8x50G[25G,10G,1G]": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4", "Eth14/5", "Eth14/6", "Eth14/7", "Eth14/8"] + }, + "index": "14,14,14,14,14,14,14,14", + "lanes": "104,105,106,107,108,109,110,111" + }, + "Ethernet112": { + "breakout_modes": { + "1x400G": ["Eth15"], + "2x200G[100G]": ["Eth15/1", "Eth15/2"], + "4x100G": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4"], + "4x25G(4)": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4"], + "8x50G[25G,10G,1G]": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4", "Eth15/5", "Eth15/6", "Eth15/7", "Eth15/8"] + }, + "index": "15,15,15,15,15,15,15,15", + "lanes": "112,113,114,115,116,117,118,119" + }, + "Ethernet120": { + "breakout_modes": { + "1x400G": ["Eth16"], + "2x200G[100G]": ["Eth16/1", "Eth16/2"], + "4x100G": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4"], + "4x25G(4)": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4"], + "8x50G[25G,10G,1G]": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4", "Eth16/5", "Eth16/6", "Eth16/7", "Eth16/8"] + }, + "index": "16,16,16,16,16,16,16,16", + "lanes": "120,121,122,123,124,125,126,127" + }, + "Ethernet128":{ + "breakout_modes": { + "1x10G": ["Eth17"] + }, + "index": "17", + "lanes": "128" + }, + "Ethernet129":{ + "breakout_modes": { + "1x10G": ["Eth18"] + }, + "index": "18", + "lanes": "129" + } + } +} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini deleted file mode 100644 index 074c0344c896..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0 25000 twenty5GigE0 -Ethernet1 1 25000 twenty5GigE1 -Ethernet2 2 25000 twenty5GigE2 -Ethernet3 3 25000 twenty5GigE3 -Ethernet4 4 25000 twenty5GigE4 -Ethernet5 5 25000 twenty5GigE5 -Ethernet6 6 25000 twenty5GigE6 -Ethernet7 7 25000 twenty5GigE7 -Ethernet8 8 25000 twenty5GigE8 -Ethernet9 9 25000 twenty5GigE9 -Ethernet10 10 25000 twenty5GigE10 -Ethernet11 11 25000 twenty5GigE11 -Ethernet12 12 25000 twenty5GigE12 -Ethernet13 13 25000 twenty5GigE13 -Ethernet14 14 25000 twenty5GigE14 -Ethernet15 15 25000 twenty5GigE15 -Ethernet16 16 10000 tenGigE16 -Ethernet17 17 10000 tenGigE17 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini deleted file mode 100644 index aeaafc4e6e4d..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 001:1 002:1 003:1 004:1 005:1 006:1 007:1 008:1 009:1 010:1 011:1 012:1 013:1 014:1 015:1 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile deleted file mode 100644 index 2c9623c91105..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16X25G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16X25G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini deleted file mode 100644 index 6a9bfda3fb8b..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0,1,2,3,4,5,6,7 400000 four00GigE0 -Ethernet8 8,9,10,11,12,13,14,15 400000 four00GigE1 -Ethernet16 16,17,18,19,20,21,22,23 400000 four00GigE2 -Ethernet24 24,25,26,27,28,29,30,31 400000 four00GigE2 -Ethernet32 32,33,34,35,36,37,38,39 400000 four00GigE3 -Ethernet40 40,41,42,43,44,45,46,47 400000 four00GigE4 -Ethernet48 48,49,50,51,52,53,54,55 400000 four00GigE5 -Ethernet56 56,57,58,59,60,61,62,63 400000 four00GigE6 -Ethernet64 64,65,66,67,68,69,70,71 400000 four00GigE7 -Ethernet72 72,73,74,75,76,77,78,79 400000 four00GigE8 -Ethernet80 80,81,82,83,84,85,86,87 400000 four00GigE9 -Ethernet88 88,89,90,91,92,93,94,95 400000 four00GigE10 -Ethernet96 96,97,98,99,100,101,102,103 400000 four00GigE11 -Ethernet104 104,105,106,107,108,109,110,111 400000 four00GigE12 -Ethernet112 112,113,114,115,116,117,118,119 400000 four00GigE13 -Ethernet120 120,121,122,123,124,125,126,127 400000 four00GigE14 -Ethernet128 128 10000 tenGigE128 -Ethernet129 129 10000 tenGigE129 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini deleted file mode 100644 index 16847ec03ae2..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 008:1 016:1 024:1 032:1 040:1 048:1 056:1 064:1 072:1 080:1 088:1 096:1 104:1 112:1 120:1 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile deleted file mode 100644 index 6a2438f50180..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON16x400G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16x400G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 deleted file mode 100644 index f056413e8283..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 deleted file mode 100644 index f056413e8283..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"170000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini deleted file mode 100644 index d0402fd44317..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/port_config.ini +++ /dev/null @@ -1,35 +0,0 @@ -# name lanes speed alias -Ethernet0 0 25000 twenty5GigE0 -Ethernet1 1 25000 twenty5GigE1 -Ethernet2 2 25000 twenty5GigE2 -Ethernet3 3 25000 twenty5GigE3 -Ethernet4 4 25000 twenty5GigE4 -Ethernet5 5 25000 twenty5GigE5 -Ethernet6 6 25000 twenty5GigE6 -Ethernet7 7 25000 twenty5GigE7 -Ethernet8 8 25000 twenty5GigE8 -Ethernet9 9 25000 twenty5GigE9 -Ethernet10 10 25000 twenty5GigE10 -Ethernet11 11 25000 twenty5GigE11 -Ethernet12 12 25000 twenty5GigE12 -Ethernet13 13 25000 twenty5GigE13 -Ethernet14 14 25000 twenty5GigE14 -Ethernet15 15 25000 twenty5GigE15 -Ethernet16 16 25000 twenty5GigE16 -Ethernet17 17 25000 twenty5GigE17 -Ethernet18 18 25000 twenty5GigE18 -Ethernet19 19 25000 twenty5GigE19 -Ethernet20 20 25000 twenty5GigE20 -Ethernet21 21 25000 twenty5GigE21 -Ethernet22 22 25000 twenty5GigE22 -Ethernet23 23 25000 twenty5GigE23 -Ethernet24 24 25000 twenty5GigE24 -Ethernet25 25 25000 twenty5GigE25 -Ethernet26 26 25000 twenty5GigE26 -Ethernet27 27 25000 twenty5GigE27 -Ethernet28 28 25000 twenty5GigE28 -Ethernet29 29 25000 twenty5GigE29 -Ethernet30 30 25000 twenty5GigE30 -Ethernet31 31 25000 twenty5GigE31 -Ethernet32 32 10000 tenGigE32 -Ethernet33 33 10000 tenGigE33 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini deleted file mode 100644 index 0ffbefa05805..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 001:1 002:1 003:1 004:1 005:1 006:1 007:1 008:1 009:1 010:1 011:1 012:1 013:1 014:1 015:1 016:1 017:1 018:1 019:1 020:1 021:1 022:1 023:1 024:1 025:1 026:1 027:1 028:1 029:1 030:1 031:1 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile deleted file mode 100644 index fa9983612117..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/FALCON32X25G/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON32x25G64 -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 deleted file mode 100644 index 6ad65b4f7309..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_config.j2 +++ /dev/null @@ -1,165 +0,0 @@ -{%- macro set_default_topology() %} -{%- if default_topo is defined %} -{{ default_topo }} -{%- else %} -def -{%- endif %} -{%- endmacro -%} - -{# Determine device topology and filename postfix #} -{%- if DEVICE_METADATA is defined %} -{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} -{%- if 'torrouter' in switch_role.lower() %} -{%- set filename_postfix = 't0' %} -{%- elif 'leafrouter' in switch_role.lower() %} -{%- set filename_postfix = 't1' %} -{%- else %} -{%- set filename_postfix = set_default_topology() %} -{%- endif %} -{%- else %} -{%- set filename_postfix = set_default_topology() %} -{%- set switch_role = '' %} -{%- endif -%} - -{# Import default values from device HWSKU folder #} -{%- import 'buffers_defaults_%s.j2' % filename_postfix as defs %} - -{%- set default_cable = defs.default_cable -%} - -{# Port configuration to cable length look-up table #} -{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} -{# Roles described in the minigraph #} -{%- if defs.ports2cable is defined %} - {%- set ports2cable = defs.ports2cable %} -{%- else %} - {%- set ports2cable = { - 'torrouter_server' : '5m', - 'leafrouter_torrouter' : '40m', - 'spinerouter_leafrouter' : '300m' - } - -%} -{%- endif %} - -{%- macro cable_length(port_name) %} - {%- set cable_len = [] %} - {%- for local_port in DEVICE_NEIGHBOR %} - {%- if local_port == port_name %} - {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} - {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} - {%- set neighbor_role = neighbor.type %} - {%- set roles1 = switch_role + '_' + neighbor_role %} - {%- set roles2 = neighbor_role + '_' + switch_role %} - {%- set roles1 = roles1 | lower %} - {%- set roles2 = roles2 | lower %} - {%- if roles1 in ports2cable %} - {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} - {%- elif roles2 in ports2cable %} - {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} - {%- endif %} - {%- endif %} - {%- endif %} - {%- endfor %} - {%- if cable_len -%} - {{ cable_len.0 }} - {%- else %} - {%- if 'torrouter' in switch_role.lower() %} - {%- for local_port in VLAN_MEMBER %} - {%- if local_port[1] == port_name %} - {%- set roles3 = switch_role + '_' + 'server' %} - {%- set roles3 = roles3 | lower %} - {%- if roles3 in ports2cable %} - {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} - {%- endif %} - {%- endif %} - {%- endfor %} - {%- if cable_len -%} - {{ cable_len.0 }} - {%- else -%} - {{ default_cable }} - {%- endif %} - {%- else -%} - {{ default_cable }} - {%- endif %} - {%- endif %} -{%- endmacro %} - -{%- set PORT_ALL = [] %} - -{%- if PORT is not defined %} - {%- if defs.generate_port_lists(PORT_ALL) %} {% endif %} -{%- else %} - {%- for port in PORT %} - {%- if PORT_ALL.append(port) %}{%- endif %} - {%- endfor %} -{%- endif %} - -{%- set PORT_ACTIVE = [] %} -{%- if DEVICE_NEIGHBOR is not defined %} - {%- set PORT_ACTIVE = PORT_ALL %} -{%- else %} - {%- for port in DEVICE_NEIGHBOR.keys() %} - {%- if PORT_ACTIVE.append(port) %}{%- endif %} - {%- endfor %} -{%- endif %} - -{%- set port_names_list_active = [] %} -{%- for port in PORT_ACTIVE %} - {%- if port_names_list_active.append(port) %}{%- endif %} -{%- endfor %} -{%- set port_names_active = port_names_list_active | join(',') %} - -{ - "CABLE_LENGTH": { - "AZURE": { - {% for port in PORT_ALL %} - {%- set cable = cable_length(port) %} - "{{ port }}": "{{ cable }}"{%- if not loop.last %},{% endif %} - - {% endfor %} - } - }, - -{% if defs.generate_buffer_pool_and_profiles is defined %} -{{ defs.generate_buffer_pool_and_profiles() }} -{% endif %} - -{%- if defs.generate_profile_lists is defined %} -{{ defs.generate_profile_lists(port_names_active) }}, -{% endif %} - -{%- if defs.generate_pg_profils is defined %} -{{ defs.generate_pg_profils(port_names_active) }} -{% else %} - "BUFFER_PG": { -{% for port in PORT_ACTIVE %} - "{{ port }}|0": { - "profile" : "ingress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} - }, -{% endif %} - -{% if defs.generate_queue_buffers is defined %} -{{ defs.generate_queue_buffers(port_names_active) }} -{% else %} - "BUFFER_QUEUE": { -{% for port in PORT_ACTIVE %} - "{{ port }}|3-4": { - "profile" : "egress_lossless_profile" - }, -{% endfor %} -{% for port in PORT_ACTIVE %} - "{{ port }}|0-2": { - "profile" : "egress_lossy_profile" - }, -{% endfor %} -{% for port in PORT_ACTIVE %} - "{{ port }}|5-6": { - "profile" : "egress_lossy_profile" - }{% if not loop.last %},{% endif %} - -{% endfor %} - } -{% endif %} -} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t0.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 deleted file mode 100644 index fee16b580d70..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/buffers_defaults_t1.j2 +++ /dev/null @@ -1,36 +0,0 @@ - -{%- set default_cable = '40m' %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "11500000", - "type": "ingress", - "mode": "dynamic" - }, - "egress_pool": { - "size": "11500000", - "type": "egress", - "mode": "static" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"330000", - "static_th":"0" - }, - "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini deleted file mode 100644 index 6a9bfda3fb8b..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/port_config.ini +++ /dev/null @@ -1,19 +0,0 @@ -# name lanes speed alias -Ethernet0 0,1,2,3,4,5,6,7 400000 four00GigE0 -Ethernet8 8,9,10,11,12,13,14,15 400000 four00GigE1 -Ethernet16 16,17,18,19,20,21,22,23 400000 four00GigE2 -Ethernet24 24,25,26,27,28,29,30,31 400000 four00GigE2 -Ethernet32 32,33,34,35,36,37,38,39 400000 four00GigE3 -Ethernet40 40,41,42,43,44,45,46,47 400000 four00GigE4 -Ethernet48 48,49,50,51,52,53,54,55 400000 four00GigE5 -Ethernet56 56,57,58,59,60,61,62,63 400000 four00GigE6 -Ethernet64 64,65,66,67,68,69,70,71 400000 four00GigE7 -Ethernet72 72,73,74,75,76,77,78,79 400000 four00GigE8 -Ethernet80 80,81,82,83,84,85,86,87 400000 four00GigE9 -Ethernet88 88,89,90,91,92,93,94,95 400000 four00GigE10 -Ethernet96 96,97,98,99,100,101,102,103 400000 four00GigE11 -Ethernet104 104,105,106,107,108,109,110,111 400000 four00GigE12 -Ethernet112 112,113,114,115,116,117,118,119 400000 four00GigE13 -Ethernet120 120,121,122,123,124,125,126,127 400000 four00GigE14 -Ethernet128 128 10000 tenGigE128 -Ethernet129 129 10000 tenGigE129 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini deleted file mode 100644 index 16847ec03ae2..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/profile.ini +++ /dev/null @@ -1,2 +0,0 @@ -switchMacAddress=00:01:02:03:04:05 -apPortListWithCableLen=000:1 008:1 016:1 024:1 032:1 040:1 048:1 056:1 064:1 072:1 080:1 088:1 096:1 104:1 112:1 120:1 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile deleted file mode 100644 index 6a2438f50180..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/db98cx8580_16cd/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -mode=1 -hwId=FALCON16x400G -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/default_sku b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/default_sku deleted file mode 100644 index 7908e555c02c..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/default_sku +++ /dev/null @@ -1 +0,0 @@ -db98cx8580_16cd t1 diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/platform_asic b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/platform_asic deleted file mode 100644 index a554752878b7..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/platform_asic +++ /dev/null @@ -1 +0,0 @@ -marvell diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py deleted file mode 100644 index 71f05c5b70f5..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/eeprom.py +++ /dev/null @@ -1,11 +0,0 @@ -try: - from sonic_eeprom import eeprom_tlvinfo -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class board(eeprom_tlvinfo.TlvInfoDecoder): - - def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/etc/sonic/eeprom" - super(board, self).__init__(self.eeprom_path, 0, '', True) 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 deleted file mode 100644 index 500bdda8f2d6..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/plugins/sfputil.py +++ /dev/null @@ -1,248 +0,0 @@ -try: - import os - import time - 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") - -smbus_present = 1 - -try: - import smbus -except ImportError as e: - smbus_present = 0 - - -class SfpUtil(SfpUtilBase): - """Platform specific sfputil class""" - _port_start = 1 - _port_end = 132 - ports_in_block = 132 - - _port_to_eeprom_mapping = {} - - _qsfp_ports = list(range(_port_start, ports_in_block + 1)) - - def __init__(self): - subprocess.call(["modprobe", "i2c-dev"]) - if not os.path.exists("/sys/bus/i2c/devices/0-0050"): - 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): - x = self.port_start - while(x < self.port_end+1): - self.port_to_eeprom_mapping[x] = eeprom_path - x = x + 1 - SfpUtilBase.__init__(self) - - def reset(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - - port_ps = "/sys/bus/i2c/devices/0-0050/sfp_port_reset" - - try: - reg_file = open(port_ps, 'w') - except IOError as e: - print("Error: unable to open file: %s" % str(e)) - return False - - # toggle reset - reg_file.seek(0) - reg_file.write('1') - time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() - return True - - def set_low_power_mode(self, port_nuM, lpmode): - raise NotImplementedError - - def get_low_power_mode(self, port_num): - raise NotImplementedError - - def i2c_get(self, device_addr, offset): - status = 0 - if smbus_present == 0: - x = ["i2cget", "-y", "0", hex(device_addr), hex(offset)] - cmdstatus, status = getstatusoutput_noshell(x) - if cmdstatus != 0: - return cmdstatus - status = int(status, 16) - else: - bus = smbus.SMBus(0) - status = bus.read_byte_data(device_addr, offset) - return status - - def i2c_set(self, device_addr, offset, value): - if smbus_present == 0: - 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) - - def get_presence(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - else: - self.i2c_set(0x70, 0, 0) - self.i2c_set(0x71, 0, 0) - self.i2c_set(0x74, 0, 0) - reg = (port_num)/8 - offset = reg % 8 - if offset >= 4: - offset = offset-4 - elif offset < 4: - offset = offset+4 - bin_offset = 1 << offset - - if port_num >= 0 and port_num <= 63: - device_reg = 0x70 - elif port_num >= 64 and port_num <= 127: - device_reg = 0x71 - elif port_num >= 128 and port_num <= 131: - device_reg = 0x74 - - #print "i2c %d %x %x" % (port_num, device_reg, bin_offset) - self.i2c_set(device_reg, 0, bin_offset) - path = "/sys/bus/i2c/devices/0-0050/eeprom" - try: - reg_file = open(path) - reg_file.seek(0o1) - reg_file.read(0o2) - except IOError as e: - return False - - return True - - def read_porttab_mappings(self, porttabfile): - #print("I am in porttab_mappings") - logical = [] - logical_to_bcm = {} - logical_to_physical = {} - physical_to_logical = {} - last_fp_port_index = 0 - last_portname = "" - first = 1 - port_pos_in_file = 0 - parse_fmt_port_config_ini = False - - try: - f = open(porttabfile) - except: - raise - - parse_fmt_port_config_ini = (os.path.basename(porttabfile) == "port_config.ini") - # Read the porttab file and generate dicts - # with mapping for future reference. - # - # TODO: Refactor this to use the portconfig.py module that now - # exists as part of the sonic-config-engine package. - title = [] - for line in f: - line.strip() - if re.search("^#", line) is not None: - # The current format is: # name lanes alias index speed - # Where the ordering of the columns can vary - title = line.split()[1:] - continue - #print title - - # Parsing logic for 'port_config.ini' file - if (parse_fmt_port_config_ini): - # bcm_port is not explicitly listed in port_config.ini format - # Currently we assume ports are listed in numerical order according to bcm_port - # so we use the port's position in the file (zero-based) as bcm_port - portname = line.split()[0] - - bcm_port = str(port_pos_in_file) - - if "index" in title: - fp_port_index = int(line.split()[title.index("index")]) - # Leave the old code for backward compatibility - # if len(line.split()) >= 4: - # fp_port_index = (line.split()[3]) - # print(fp_port_index) - else: - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - else: # Parsing logic for older 'portmap.ini' file - (portname, bcm_port) = line.split("=")[1].split(",")[:2] - - fp_port_index = portname.split("Ethernet").pop() - fp_port_index = int(fp_port_index.split("s").pop(0))+1 - - if ((len(self.sfp_ports) > 0) and (fp_port_index not in self.sfp_ports)): - continue - - if first == 1: - # Initialize last_[physical|logical]_port - # to the first valid port - last_fp_port_index = fp_port_index - last_portname = portname - first = 0 - - logical.append(portname) - - logical_to_bcm[portname] = "xe" + bcm_port - logical_to_physical[portname] = [fp_port_index] - if physical_to_logical.get(fp_port_index) is None: - physical_to_logical[fp_port_index] = [portname] - else: - physical_to_logical[fp_port_index].append( - portname) - - if (fp_port_index - last_fp_port_index) > 1: - # last port was a gang port - for p in range(last_fp_port_index+1, fp_port_index): - logical_to_physical[last_portname].append(p) - if physical_to_logical.get(p) is None: - physical_to_logical[p] = [last_portname] - else: - physical_to_logical[p].append(last_portname) - - last_fp_port_index = fp_port_index - last_portname = portname - - port_pos_in_file += 1 - - self.logical = logical - self.logical_to_bcm = logical_to_bcm - self.logical_to_physical = logical_to_physical - self.physical_to_logical = physical_to_logical - - # print(self.logical_to_physical) - '''print("logical: " + self.logical) - print("logical to bcm: " + self.logical_to_bcm) - print("logical to physical: " + self.logical_to_physical) - print("physical to logical: " + self.physical_to_logical)''' - #print("exiting port_tab_mappings") - - @property - def port_start(self): - return self._port_start - - @property - def port_end(self): - return self._port_end - - @property - def qsfp_ports(self): - return self._qsfp_ports - - @property - def port_to_eeprom_mapping(self): - return self._port_to_eeprom_mapping - - @property - def get_transceiver_change_event(self): - raise NotImplementedError diff --git a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json b/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json deleted file mode 100644 index 94592fa8cebc..000000000000 --- a/device/marvell/x86_64-marvell_db98cx8580_16cd-r0/pmon_daemon_control.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "skip_ledd": true -} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.md5 index a50a5c4cc622..7f80b464ab57 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.md5 @@ -1 +1 @@ -84a2cb54120192cfade31a5ae174b96e \ No newline at end of file +cfb6e4f0a2807508868589d6cab02922 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.xml index 00ff5d183b70..ed5aac585636 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-Board-F12_8T_32x25G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -1340,6 +1300,7 @@ lowercase characters. NA + diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.md5 index 85848f340d1e..da33868c2886 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.md5 @@ -1 +1 @@ -88c203cabdf73a053d2ff8802e0dbf30 \ No newline at end of file +a7051bf159a88dd39b1ce5c2f129eb8b \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.xml index 386e692e6f1a..373fd7faf599 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-L1-F12_8T_32x25G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 10GR1Fix @@ -848,6 +652,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -866,6 +674,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -874,198 +688,231 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.md5 index 3c28079976c6..93d1496daaae 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.md5 @@ -1 +1 @@ -1ed6046358d99524cdf9cd9e136a0efa \ No newline at end of file +5f128393d356e6fe5711e164144b8fc7 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.xml index e3239589f006..b82d8246265d 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/ASK-PP-F12_8T_32x25G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.md5 index 09f527592746..d10a4e71e57f 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.md5 @@ -1 +1 @@ -f9c28ab49d1a1af723ec804226e061f8 \ No newline at end of file +418c4a414b1bba6195d4f65556c7cb34 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.xml index 3c7443e9d1b5..a6b78fa7c28d 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/SAI-F12_8T_32x25G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -342,9 +372,13 @@ 0 - - 4096 - + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t0.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t1.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON32X25G/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.md5 index 55bbf0dc39e5..653c8f124e24 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.md5 @@ -1 +1 @@ -a9b91dd828b6322ed3b341a7c49fecbc \ No newline at end of file +723721f01131ab330f16e07512c18f2a \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.xml index a9d2ccf46ead..dd12f0836768 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-Board-F12_8T-DB.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -738,12 +698,13 @@ lowercase characters. 1 ethernet_mac - 33 + 34 false NA + false @@ -753,14 +714,19 @@ lowercase characters. 2 ethernet_mac - 34 + 36 false NA + + + 2 + true + false @@ -768,12 +734,13 @@ lowercase characters. 3 ethernet_mac - 35 + 38 false NA + false @@ -783,14 +750,15 @@ lowercase characters. 4 ethernet_mac - 36 + 40 false NA + MAP5 - + 1 2 true @@ -802,14 +770,19 @@ lowercase characters. 5 ethernet_mac - 37 + 42 false NA + + + 2 + true + false @@ -817,14 +790,19 @@ lowercase characters. 6 ethernet_mac - 38 + 44 false NA + + + 2 + true + false @@ -832,14 +810,19 @@ lowercase characters. 7 ethernet_mac - 39 + 46 false NA + + + 2 + true + false @@ -847,15 +830,15 @@ lowercase characters. 8 ethernet_mac - 40 + 48 false NA - MAP5 + MAP6 - 1 + 0 2 true @@ -867,14 +850,15 @@ lowercase characters. 9 ethernet_mac - 41 + 56 false NA + MAP7 - + 1 2 true @@ -886,14 +870,15 @@ lowercase characters. 10 ethernet_mac - 42 + 64 false NA + MAP0 - + 0 2 true @@ -905,12 +890,13 @@ lowercase characters. 11 ethernet_mac - 43 + 65 false NA + @@ -924,12 +910,13 @@ lowercase characters. 12 ethernet_mac - 44 + 66 false NA + @@ -943,12 +930,13 @@ lowercase characters. 13 ethernet_mac - 45 + 67 false NA + @@ -962,12 +950,13 @@ lowercase characters. 14 ethernet_mac - 46 + 68 false NA + @@ -981,12 +970,13 @@ lowercase characters. 15 ethernet_mac - 47 + 69 false NA + @@ -1000,15 +990,15 @@ lowercase characters. 16 ethernet_mac - 48 + 70 false NA - MAP6 + - 0 + 2 true @@ -1020,12 +1010,13 @@ lowercase characters. 17 ethernet_mac - 49 + 71 false NA + @@ -1039,14 +1030,15 @@ lowercase characters. 18 ethernet_mac - 50 + 72 false NA + MAP1 - + 1 2 true @@ -1058,12 +1050,13 @@ lowercase characters. 19 ethernet_mac - 51 + 73 false NA + @@ -1077,12 +1070,13 @@ lowercase characters. 20 ethernet_mac - 52 + 74 false NA + @@ -1096,12 +1090,13 @@ lowercase characters. 21 ethernet_mac - 53 + 75 false NA + @@ -1115,12 +1110,13 @@ lowercase characters. 22 ethernet_mac - 54 + 76 false NA + @@ -1134,12 +1130,13 @@ lowercase characters. 23 ethernet_mac - 55 + 77 false NA + @@ -1153,15 +1150,15 @@ lowercase characters. 24 ethernet_mac - 56 + 78 false NA - MAP7 + - 1 + 2 true @@ -1173,12 +1170,13 @@ lowercase characters. 25 ethernet_mac - 57 + 79 false NA + @@ -1192,14 +1190,15 @@ lowercase characters. 26 ethernet_mac - 58 + 80 false NA + MAP2 - + 0 2 true @@ -1211,12 +1210,13 @@ lowercase characters. 27 ethernet_mac - 59 + 81 false NA + @@ -1230,12 +1230,13 @@ lowercase characters. 28 ethernet_mac - 60 + 82 false NA + @@ -1249,12 +1250,13 @@ lowercase characters. 29 ethernet_mac - 61 + 83 false NA + @@ -1268,12 +1270,13 @@ lowercase characters. 30 ethernet_mac - 62 + 84 false NA + @@ -1287,12 +1290,13 @@ lowercase characters. 31 ethernet_mac - 63 + 85 false NA + @@ -1306,15 +1310,15 @@ lowercase characters. 32 ethernet_mac - 64 + 86 false NA - MAP0 + - 0 + 2 true @@ -1326,12 +1330,13 @@ lowercase characters. 33 ethernet_mac - 65 + 87 false NA + @@ -1345,14 +1350,15 @@ lowercase characters. 34 ethernet_mac - 66 + 88 false NA + MAP3 - + 1 2 true @@ -1364,12 +1370,13 @@ lowercase characters. 35 ethernet_mac - 67 + 89 false NA + @@ -1383,12 +1390,13 @@ lowercase characters. 36 ethernet_mac - 68 + 90 false NA + @@ -1402,12 +1410,13 @@ lowercase characters. 37 ethernet_mac - 69 + 91 false NA + @@ -1421,12 +1430,13 @@ lowercase characters. 38 ethernet_mac - 70 + 92 false NA + @@ -1440,12 +1450,13 @@ lowercase characters. 39 ethernet_mac - 71 + 93 false NA + @@ -1459,15 +1470,15 @@ lowercase characters. 40 ethernet_mac - 72 + 94 false NA - MAP1 + - 1 + 2 true @@ -1479,12 +1490,13 @@ lowercase characters. 41 ethernet_mac - 73 + 95 false NA + @@ -1498,14 +1510,15 @@ lowercase characters. 42 ethernet_mac - 74 + 96 false NA + MAP4 - + 0 2 true @@ -1517,12 +1530,13 @@ lowercase characters. 43 ethernet_mac - 75 + 97 false NA + @@ -1536,12 +1550,13 @@ lowercase characters. 44 ethernet_mac - 76 + 98 false NA + @@ -1555,12 +1570,13 @@ lowercase characters. 45 ethernet_mac - 77 + 99 false NA + @@ -1574,12 +1590,13 @@ lowercase characters. 46 ethernet_mac - 78 + 100 false NA + @@ -1593,12 +1610,13 @@ lowercase characters. 47 ethernet_mac - 79 + 101 false NA + @@ -1612,15 +1630,15 @@ lowercase characters. 48 ethernet_mac - 80 + 102 false NA - MAP2 + - 0 + 2 true @@ -1632,12 +1650,13 @@ lowercase characters. 49 ethernet_mac - 81 + 103 false NA + @@ -1651,14 +1670,15 @@ lowercase characters. 50 ethernet_mac - 82 + 104 false NA + MAP5 - + 1 2 true @@ -1670,12 +1690,13 @@ lowercase characters. 51 ethernet_mac - 83 + 105 false NA + @@ -1689,12 +1710,13 @@ lowercase characters. 52 ethernet_mac - 84 + 106 false NA + @@ -1708,12 +1730,13 @@ lowercase characters. 53 ethernet_mac - 85 + 107 false NA + @@ -1727,12 +1750,13 @@ lowercase characters. 54 ethernet_mac - 86 + 108 false NA + @@ -1746,12 +1770,13 @@ lowercase characters. 55 ethernet_mac - 87 + 109 false NA + @@ -1765,15 +1790,15 @@ lowercase characters. 56 ethernet_mac - 88 + 110 false NA - MAP3 + - 1 + 2 true @@ -1785,12 +1810,13 @@ lowercase characters. 57 ethernet_mac - 89 + 111 false NA + @@ -1804,14 +1830,15 @@ lowercase characters. 58 ethernet_mac - 90 + 112 false NA + MAP6 - + 0 2 true @@ -1823,12 +1850,13 @@ lowercase characters. 59 ethernet_mac - 91 + 113 false NA + @@ -1842,12 +1870,13 @@ lowercase characters. 60 ethernet_mac - 92 + 114 false NA + @@ -1861,12 +1890,13 @@ lowercase characters. 64 ethernet_mac - 93 + 115 false NA + @@ -1880,12 +1910,13 @@ lowercase characters. 65 ethernet_mac - 94 + 116 false NA + @@ -1899,12 +1930,13 @@ lowercase characters. 66 ethernet_mac - 95 + 117 false NA + @@ -1918,15 +1950,15 @@ lowercase characters. 67 ethernet_mac - 96 + 118 false NA - MAP4 + - 0 + 2 true @@ -1938,12 +1970,13 @@ lowercase characters. 68 ethernet_mac - 97 + 119 false NA + @@ -1957,14 +1990,15 @@ lowercase characters. 69 ethernet_mac - 98 + 120 false NA + MAP7 - + 1 2 true @@ -1976,12 +2010,13 @@ lowercase characters. 70 ethernet_mac - 99 + 121 false NA + @@ -1995,12 +2030,13 @@ lowercase characters. 71 ethernet_mac - 100 + 122 false NA + @@ -2014,12 +2050,13 @@ lowercase characters. 72 ethernet_mac - 101 + 123 false NA + @@ -2033,12 +2070,13 @@ lowercase characters. 73 ethernet_mac - 102 + 124 false NA + @@ -2052,12 +2090,13 @@ lowercase characters. 74 ethernet_mac - 103 + 125 false NA + @@ -2071,15 +2110,15 @@ lowercase characters. 75 ethernet_mac - 104 + 126 false NA - MAP5 + - 1 + 2 true @@ -2091,12 +2130,13 @@ lowercase characters. 76 ethernet_mac - 105 + 127 false NA + @@ -2110,14 +2150,15 @@ lowercase characters. 77 ethernet_mac - 106 + 128 false NA + MAP0 - + 0 2 true @@ -2129,12 +2170,13 @@ lowercase characters. 78 ethernet_mac - 107 + 129 false NA + @@ -2148,12 +2190,13 @@ lowercase characters. 79 ethernet_mac - 108 + 130 false NA + @@ -2167,12 +2210,13 @@ lowercase characters. 80 ethernet_mac - 109 + 131 false NA + @@ -2186,12 +2230,13 @@ lowercase characters. 81 ethernet_mac - 110 + 132 false NA + @@ -2205,12 +2250,13 @@ lowercase characters. 82 ethernet_mac - 111 + 133 false NA + @@ -2224,15 +2270,15 @@ lowercase characters. 83 ethernet_mac - 112 + 134 false NA - MAP6 + - 0 + 2 true @@ -2244,12 +2290,13 @@ lowercase characters. 84 ethernet_mac - 113 + 135 false NA + @@ -2263,14 +2310,15 @@ lowercase characters. 85 ethernet_mac - 114 + 136 false NA + MAP1 - + 1 2 true @@ -2282,12 +2330,13 @@ lowercase characters. 86 ethernet_mac - 115 + 137 false NA + @@ -2301,12 +2350,13 @@ lowercase characters. 87 ethernet_mac - 116 + 138 false NA + @@ -2320,12 +2370,13 @@ lowercase characters. 88 ethernet_mac - 117 + 139 false NA + @@ -2339,12 +2390,13 @@ lowercase characters. 89 ethernet_mac - 118 + 140 false NA + @@ -2358,12 +2410,13 @@ lowercase characters. 90 ethernet_mac - 119 + 141 false NA + @@ -2377,15 +2430,15 @@ lowercase characters. 91 ethernet_mac - 120 + 142 false NA - MAP7 + - 1 + 2 true @@ -2397,12 +2450,13 @@ lowercase characters. 92 ethernet_mac - 121 + 143 false NA + @@ -2416,14 +2470,15 @@ lowercase characters. 93 ethernet_mac - 122 + 144 false NA + MAP2 - + 0 2 true @@ -2435,12 +2490,13 @@ lowercase characters. 94 ethernet_mac - 123 + 145 false NA + @@ -2454,12 +2510,13 @@ lowercase characters. 95 ethernet_mac - 124 + 146 false NA + @@ -2470,15 +2527,36 @@ lowercase characters. - 96 + 237 ethernet_mac - 125 + 258 + false + + + NA + + + + 2 + + 2 + true + + false + + + + 236 + + ethernet_mac + 31 false NA + @@ -2489,15 +2567,16 @@ lowercase characters. - 97 + 235 ethernet_mac - 126 + 30 false NA + @@ -2508,15 +2587,16 @@ lowercase characters. - 98 + 234 ethernet_mac - 127 + 29 false NA + @@ -2527,18 +2607,18 @@ lowercase characters. - 99 + 233 ethernet_mac - 128 + 28 false NA - MAP0 + - 0 + 2 true @@ -2547,15 +2627,16 @@ lowercase characters. - 100 + 232 ethernet_mac - 130 + 27 false NA + @@ -2566,15 +2647,16 @@ lowercase characters. - 101 + 231 ethernet_mac - 132 + 26 false NA + @@ -2585,15 +2667,16 @@ lowercase characters. - 102 + 230 ethernet_mac - 134 + 25 false NA + @@ -2604,16 +2687,16 @@ lowercase characters. - 103 + 229 ethernet_mac - 136 + 24 false NA - MAP1 + MAP3 1 @@ -2624,15 +2707,16 @@ lowercase characters. - 104 + 228 ethernet_mac - 138 + 23 false NA + @@ -2643,15 +2727,16 @@ lowercase characters. - 105 + 227 ethernet_mac - 140 + 22 false NA + @@ -2662,15 +2747,16 @@ lowercase characters. - 106 + 226 ethernet_mac - 142 + 21 false NA + @@ -2681,18 +2767,18 @@ lowercase characters. - 107 + 225 ethernet_mac - 144 + 20 false NA - MAP2 + - 0 + 2 true @@ -2701,15 +2787,16 @@ lowercase characters. - 108 + 224 ethernet_mac - 146 + 19 false NA + @@ -2720,15 +2807,16 @@ lowercase characters. - 109 + 223 ethernet_mac - 148 + 18 false NA + @@ -2739,15 +2827,16 @@ lowercase characters. - 110 + 222 ethernet_mac - 150 + 17 false NA + @@ -2758,18 +2847,18 @@ lowercase characters. - 111 + 221 ethernet_mac - 152 + 16 false NA - MAP3 + MAP2 - 1 + 0 2 true @@ -2778,15 +2867,16 @@ lowercase characters. - 112 + 220 ethernet_mac - 154 + 15 false NA + @@ -2797,15 +2887,16 @@ lowercase characters. - 113 + 219 ethernet_mac - 156 + 14 false NA + @@ -2816,15 +2907,16 @@ lowercase characters. - 114 + 218 ethernet_mac - 158 + 13 false NA + @@ -2835,18 +2927,18 @@ lowercase characters. - 115 + 217 ethernet_mac - 160 + 12 false NA - MAP4 + - 0 + 2 true @@ -2855,15 +2947,16 @@ lowercase characters. - 116 + 216 ethernet_mac - 164 + 11 false NA + @@ -2874,18 +2967,18 @@ lowercase characters. - 117 + 215 ethernet_mac - 168 + 10 false NA - MAP5 + - 1 + 2 true @@ -2894,15 +2987,16 @@ lowercase characters. - 118 + 214 ethernet_mac - 172 + 9 false NA + @@ -2913,18 +3007,18 @@ lowercase characters. - 119 + 213 ethernet_mac - 176 + 8 false NA - MAP6 + MAP1 - 0 + 1 2 true @@ -2933,15 +3027,16 @@ lowercase characters. - 120 + 212 ethernet_mac - 180 + 7 false NA + @@ -2952,18 +3047,18 @@ lowercase characters. - 121 + 211 ethernet_mac - 184 + 6 false NA - MAP7 + - 1 + 2 true @@ -2972,15 +3067,16 @@ lowercase characters. - 122 + 210 ethernet_mac - 188 + 5 false NA + @@ -2991,18 +3087,18 @@ lowercase characters. - 123 + 209 ethernet_mac - 192 + 4 false NA - MAP0 + - 0 + 2 true @@ -3011,15 +3107,16 @@ lowercase characters. - 124 + 208 ethernet_mac - 196 + 3 false NA + @@ -3030,18 +3127,18 @@ lowercase characters. - 125 + 207 ethernet_mac - 200 + 2 false NA - MAP1 + - 1 + 2 true @@ -3050,15 +3147,16 @@ lowercase characters. - 126 + 206 ethernet_mac - 204 + 1 false NA + @@ -3069,16 +3167,16 @@ lowercase characters. - 127 + 205 ethernet_mac - 208 + 0 false NA - MAP2 + MAP0 0 @@ -3089,15 +3187,16 @@ lowercase characters. - 128 + 204 ethernet_mac - 212 + 255 false NA + @@ -3108,18 +3207,18 @@ lowercase characters. - 129 + 203 ethernet_mac - 216 + 254 false NA - MAP3 + - 1 + 2 true @@ -3128,15 +3227,16 @@ lowercase characters. - 130 + 202 ethernet_mac - 220 + 253 false NA + @@ -3147,18 +3247,18 @@ lowercase characters. - 131 + 201 ethernet_mac - 224 + 252 false NA - MAP4 + - 0 + 2 true @@ -3167,18 +3267,18 @@ lowercase characters. - 132 + 200 ethernet_mac - 232 + 251 false NA - MAP5 + - 1 + 2 true @@ -3187,18 +3287,18 @@ lowercase characters. - 133 + 199 ethernet_mac - 240 + 250 false NA - MAP6 + - 0 + 2 true @@ -3207,18 +3307,18 @@ lowercase characters. - 134 + 198 ethernet_mac - 248 + 249 false NA - MAP7 + - 1 + 2 true @@ -3227,18 +3327,18 @@ lowercase characters. - 135 + 197 ethernet_mac - 0 + 248 false NA - MAP0 + MAP7 - 0 + 1 2 true @@ -3247,18 +3347,18 @@ lowercase characters. - 136 + 196 ethernet_mac - 8 + 247 false NA - MAP1 + - 1 + 2 true @@ -3267,18 +3367,18 @@ lowercase characters. - 137 + 195 ethernet_mac - 16 + 246 false NA - MAP2 + - 0 + 2 true @@ -3287,18 +3387,18 @@ lowercase characters. - 138 + 194 ethernet_mac - 24 + 245 false NA - MAP3 + - 1 + 2 true @@ -3307,17 +3407,18 @@ lowercase characters. - 139 + 193 ethernet_mac - 258 + 244 false NA + - 2 + 2 true @@ -3326,31 +3427,1971 @@ lowercase characters. - 63 + 192 - cpu_sdma - 273 + ethernet_mac + 243 false + + NA + + + + + + 2 + true + + false + - 140 + 191 - cpu_sdma - 274 + ethernet_mac + 242 false + + NA + + + + + + 2 + true + + false + - 142 + 190 - cpu_sdma - 275 + ethernet_mac + 241 false - - - 141 + + NA + + + + + + 2 + true + + false + + + + 189 + + ethernet_mac + 240 + false + + + NA + + MAP6 + + 0 + + 2 + true + + false + + + + 188 + + ethernet_mac + 239 + false + + + NA + + + + + + 2 + true + + false + + + + 187 + + ethernet_mac + 238 + false + + + NA + + + + + + 2 + true + + false + + + + 186 + + ethernet_mac + 237 + false + + + NA + + + + + + 2 + true + + false + + + + 185 + + ethernet_mac + 236 + false + + + NA + + + + + + 2 + true + + false + + + + 184 + + ethernet_mac + 235 + false + + + NA + + + + + + 2 + true + + false + + + + 183 + + ethernet_mac + 234 + false + + + NA + + + + + + 2 + true + + false + + + + 182 + + ethernet_mac + 233 + false + + + NA + + + + + + 2 + true + + false + + + + 181 + + ethernet_mac + 232 + false + + + NA + + MAP5 + + 1 + + 2 + true + + false + + + + 180 + + ethernet_mac + 231 + false + + + NA + + + + + + 2 + true + + false + + + + 179 + + ethernet_mac + 230 + false + + + NA + + + + + + 2 + true + + false + + + + 178 + + ethernet_mac + 229 + false + + + NA + + + + + + 2 + true + + false + + + + 177 + + ethernet_mac + 228 + false + + + NA + + + + + + 2 + true + + false + + + + 176 + + ethernet_mac + 227 + false + + + NA + + + + + + 2 + true + + false + + + + 175 + + ethernet_mac + 226 + false + + + NA + + + + + + 2 + true + + false + + + + 174 + + ethernet_mac + 225 + false + + + NA + + + + + + 2 + true + + false + + + + 173 + + ethernet_mac + 224 + false + + + NA + + MAP4 + + 0 + + 2 + true + + false + + + + 172 + + ethernet_mac + 223 + false + + + NA + + + + + + 2 + true + + false + + + + 171 + + ethernet_mac + 222 + false + + + NA + + + + + + 2 + true + + false + + + + 170 + + ethernet_mac + 221 + false + + + NA + + + + + + 2 + true + + false + + + + 169 + + ethernet_mac + 220 + false + + + NA + + + + + + 2 + true + + false + + + + 168 + + ethernet_mac + 219 + false + + + NA + + + + + + 2 + true + + false + + + + 167 + + ethernet_mac + 218 + false + + + NA + + + + + + 2 + true + + false + + + + 166 + + ethernet_mac + 217 + false + + + NA + + + + + + 2 + true + + false + + + + 165 + + ethernet_mac + 216 + false + + + NA + + MAP3 + + 1 + + 2 + true + + false + + + + 164 + + ethernet_mac + 215 + false + + + NA + + + + + + 2 + true + + false + + + + 163 + + ethernet_mac + 214 + false + + + NA + + + + + + 2 + true + + false + + + + 162 + + ethernet_mac + 213 + false + + + NA + + + + + + 2 + true + + false + + + + 161 + + ethernet_mac + 212 + false + + + NA + + + + + + 2 + true + + false + + + + 160 + + ethernet_mac + 211 + false + + + NA + + + + + + 2 + true + + false + + + + 159 + + ethernet_mac + 210 + false + + + NA + + + + + + 2 + true + + false + + + + 158 + + ethernet_mac + 209 + false + + + NA + + + + + + 2 + true + + false + + + + 157 + + ethernet_mac + 208 + false + + + NA + + MAP2 + + 0 + + 2 + true + + false + + + + 156 + + ethernet_mac + 207 + false + + + NA + + + + + + 2 + true + + false + + + + 155 + + ethernet_mac + 206 + false + + + NA + + + + + + 2 + true + + false + + + + 154 + + ethernet_mac + 205 + false + + + NA + + + + + + 2 + true + + false + + + + 153 + + ethernet_mac + 204 + false + + + NA + + + + + + 2 + true + + false + + + + 152 + + ethernet_mac + 203 + false + + + NA + + + + + + 2 + true + + false + + + + 151 + + ethernet_mac + 202 + false + + + NA + + + + + + 2 + true + + false + + + + 150 + + ethernet_mac + 201 + false + + + NA + + + + + + 2 + true + + false + + + + 149 + + ethernet_mac + 200 + false + + + NA + + MAP1 + + 1 + + 2 + true + + false + + + + 148 + + ethernet_mac + 199 + false + + + NA + + + + + + 2 + true + + false + + + + 147 + + ethernet_mac + 198 + false + + + NA + + + + + + 2 + true + + false + + + + 146 + + ethernet_mac + 197 + false + + + NA + + + + + + 2 + true + + false + + + + 145 + + ethernet_mac + 196 + false + + + NA + + + + + + 2 + true + + false + + + + 144 + + ethernet_mac + 195 + false + + + NA + + + + + + 2 + true + + false + + + + 143 + + ethernet_mac + 194 + false + + + NA + + + + + + 2 + true + + false + + + + 142 + + ethernet_mac + 193 + false + + + NA + + + + + + 2 + true + + false + + + + 141 + + ethernet_mac + 192 + false + + + NA + + MAP0 + + 0 + + 2 + true + + false + + + + 140 + + ethernet_mac + 191 + false + + + NA + + + + + + 2 + true + + false + + + + 139 + + ethernet_mac + 190 + false + + + NA + + + + + + 2 + true + + false + + + + 138 + + ethernet_mac + 189 + false + + + NA + + + + + + 2 + true + + false + + + + 137 + + ethernet_mac + 188 + false + + + NA + + + + + + 2 + true + + false + + + + 136 + + ethernet_mac + 187 + false + + + NA + + + + + + 2 + true + + false + + + + 135 + + ethernet_mac + 186 + false + + + NA + + + + + + 2 + true + + false + + + + 134 + + ethernet_mac + 185 + false + + + NA + + + + + + 2 + true + + false + + + + 133 + + ethernet_mac + 184 + false + + + NA + + MAP7 + + 1 + + 2 + true + + false + + + + 132 + + ethernet_mac + 183 + false + + + NA + + + + + + 2 + true + + false + + + + 131 + + ethernet_mac + 182 + false + + + NA + + + + + + 2 + true + + false + + + + 130 + + ethernet_mac + 181 + false + + + NA + + + + + + 2 + true + + false + + + + 129 + + ethernet_mac + 180 + false + + + NA + + + + + + 2 + true + + false + + + + 128 + + ethernet_mac + 179 + false + + + NA + + + + + + 2 + true + + false + + + + 127 + + ethernet_mac + 178 + false + + + NA + + + + + + 2 + true + + false + + + + 126 + + ethernet_mac + 177 + false + + + NA + + + + + + 2 + true + + false + + + + 125 + + ethernet_mac + 176 + false + + + NA + + MAP6 + + 0 + + 2 + true + + false + + + + 124 + + ethernet_mac + 175 + false + + + NA + + + + + + 2 + true + + false + + + + 123 + + ethernet_mac + 174 + false + + + NA + + + + + + 2 + true + + false + + + + 122 + + ethernet_mac + 173 + false + + + NA + + + + + + 2 + true + + false + + + + 121 + + ethernet_mac + 172 + false + + + NA + + + + + + 2 + true + + false + + + + 120 + + ethernet_mac + 171 + false + + + NA + + + + + + 2 + true + + false + + + + 119 + + ethernet_mac + 170 + false + + + NA + + + + + + 2 + true + + false + + + + 118 + + ethernet_mac + 169 + false + + + NA + + + + + + 2 + true + + false + + + + 117 + + ethernet_mac + 168 + false + + + NA + + MAP5 + + 1 + + 2 + true + + false + + + + 116 + + ethernet_mac + 167 + false + + + NA + + + + + + 2 + true + + false + + + + 115 + + ethernet_mac + 166 + false + + + NA + + + + + + 2 + true + + false + + + + 114 + + ethernet_mac + 165 + false + + + NA + + + + + + 2 + true + + false + + + + 113 + + ethernet_mac + 164 + false + + + NA + + + + + + 2 + true + + false + + + + 112 + + ethernet_mac + 163 + false + + + NA + + + + + + 2 + true + + false + + + + 111 + + ethernet_mac + 162 + false + + + NA + + + + + + 2 + true + + false + + + + 110 + + ethernet_mac + 161 + false + + + NA + + + + + + 2 + true + + false + + + + 109 + + ethernet_mac + 160 + false + + + NA + + MAP4 + + 0 + + 2 + true + + false + + + + 108 + + ethernet_mac + 159 + false + + + NA + + + + + + 2 + true + + false + + + + 107 + + ethernet_mac + 158 + false + + + NA + + + + + + 2 + true + + false + + + + 106 + + ethernet_mac + 157 + false + + + NA + + + + + + 2 + true + + false + + + + 105 + + ethernet_mac + 156 + false + + + NA + + + + + + 2 + true + + false + + + + 104 + + ethernet_mac + 155 + false + + + NA + + + + + + 2 + true + + false + + + + 103 + + ethernet_mac + 154 + false + + + NA + + + + + + 2 + true + + false + + + + 102 + + ethernet_mac + 153 + false + + + NA + + + + + + 2 + true + + false + + + + 101 + + ethernet_mac + 152 + false + + + NA + + MAP3 + + 1 + + 2 + true + + false + + + + 100 + + ethernet_mac + 151 + false + + + NA + + + + + + 2 + true + + false + + + + 99 + + ethernet_mac + 150 + false + + + NA + + + + + + 2 + true + + false + + + + 98 + + ethernet_mac + 149 + false + + + NA + + + + + + 2 + true + + false + + + + 97 + + ethernet_mac + 148 + false + + + NA + + + + + + 2 + true + + false + + + + 96 + + ethernet_mac + 147 + false + + + NA + + + + + + 2 + true + + false + + + + 63 + + cpu_sdma + 273 + false + + + + 238 + + cpu_sdma + 274 + false + + + + 239 + + cpu_sdma + 275 + false + + + + 240 cpu_sdma 276 diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.md5 index dd2029e187cc..a3fbe5af773e 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.md5 @@ -1 +1 @@ -ea16f9a242a729d34f016aeb819b10c1 \ No newline at end of file +d38213fa01008a6b8b8b1313a569ebdc \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.xml index c248b2556344..36e91b2b4470 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-L1-F12_8T-DB.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR2 @@ -855,19 +659,19 @@ KR2 100G rs_544_514_enabled - rs_544_514_enabled + disabled CR2 50G rs_enabled - rs_enabled + disabled KR2 50G rs_enabled - rs_enabled + disabled @@ -897,7 +701,7 @@ KR4 100G rs_enabled - rs_enabled + disabled @@ -910,7 +714,11 @@ SR_LR 10G - enabled + disabled + + + 1000BASE_X + 1G KR @@ -918,6 +726,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + 10GR1Fix @@ -969,19 +783,19 @@ KR4 200G rs_544_514_enabled - rs_544_514_enabled + disabled CR4 100G rs_enabled - rs_enabled + disabled KR4 100G rs_enabled - rs_enabled + disabled @@ -1011,6 +825,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -1021,13 +839,19 @@ KR 25G rs_enabled - rs_enabled + disabled KR 10G enabled - enabled + disabled + + + 1000BASE_X + 1G + disabled + disabled @@ -1057,7 +881,7 @@ KR8 400G rs_544_514_enabled - rs_544_514_enabled + disabled @@ -1102,6 +926,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 50G @@ -1112,25 +940,31 @@ KR 50G rs_544_514_enabled - rs_544_514_enabled + disabled CR 25G rs_enabled - rs_enabled + disabled KR 25G rs_enabled - rs_enabled + disabled KR 10G enabled - enabled + disabled + + + 1000BASE_X + 1G + disabled + disabled @@ -1139,823 +973,1856 @@ 0 AVAGO profile_default - 10GR1 - - - 1 - AVAGO - profile_default - 10GR1 - - - 2 - AVAGO - profile_default - 10GR1 - - - 3 - AVAGO - profile_default - 10GR1 + 400GR8 + true + + 0 + + 100GR2 + 200GR4 + 400GR8 + + + 1 + + 100GR2 + + + + + 2 + + 100GR2 + 200GR4 + + + + 3 + + 100GR2 + + + 4 AVAGO profile_default - 10GR1 - - - 5 - AVAGO - profile_default - 10GR1 - - - 6 - AVAGO - profile_default - 10GR1 - - - 7 - AVAGO - profile_default - 10GR1 + 400GR8 + true + + 4 + + 100GR2 + 200GR4 + 400GR8 + + + 5 + + 100GR2 + + + + + 6 + + 100GR2 + 200GR4 + + + + 7 + + 100GR2 + + + 8 AVAGO profile_default - 10GR1 + 400GR8 + false 9 AVAGO profile_default - 10GR1 + 400GR8 + false 10 AVAGO profile_default - 10GR1 - - - 11 - AVAGO - profile_default - 10GR1 - - - 12 - AVAGO - profile_default - 10GR1 - - - 13 - AVAGO - profile_default - 10GR1 - - - 14 - AVAGO - profile_default - 10GR1 - - - 15 - AVAGO - profile_default - 10GR1 - - - 16 - AVAGO - profile_default - 10GR1 - - - 17 - AVAGO - profile_default - 10GR1 + 400GR8 + true + + 10 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 11 + 50GR1 + + + + + + 12 + 50GR1 + 100GR2 + + + + + 13 + 50GR1 + + + + + + 14 + 50GR1 + 100GR2 + 200GR4 + + + + 15 + 50GR1 + + + + + + 16 + 50GR1 + 100GR2 + + + + + 17 + 50GR1 + + + + 18 AVAGO profile_default - 10GR1 - - - 19 - AVAGO - profile_default - 10GR1 - - - 20 - AVAGO - profile_default - 10GR1 - - - 21 - AVAGO - profile_default - 10GR1 - - - 22 - AVAGO - profile_default - 10GR1 - - - 23 - AVAGO - profile_default - 10GR1 - - - 24 - AVAGO - profile_default - 10GR1 - - - 25 - AVAGO - profile_default - 10GR1 + 400GR8 + true + + 18 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 19 + 50GR1 + + + + + + 20 + 50GR1 + 100GR2 + + + + + 21 + 50GR1 + + + + + + 22 + 50GR1 + 100GR2 + 200GR4 + + + + 23 + 50GR1 + + + + + + 24 + 50GR1 + 100GR2 + + + + + 25 + 50GR1 + + + + 26 AVAGO profile_default - 10GR1 - - - 27 - AVAGO - profile_default - 10GR1 - - - 28 - AVAGO - profile_default - 10GR1 - - - 29 - AVAGO - profile_default - 10GR1 - - - 30 - AVAGO - profile_default - 10GR1 - - - 31 - AVAGO - profile_default - 10GR1 - - - 32 - AVAGO - profile_default - 25GR1 + 400GR8 + true + + 26 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 27 + 50GR1 + + + + + + 28 + 50GR1 + 100GR2 + + + + + 29 + 50GR1 + + + + + + 30 + 50GR1 + 100GR2 + 200GR4 + + + + 31 + 50GR1 + + + + + + 32 + 50GR1 + 100GR2 + + + + + 33 + 50GR1 + + + + - 33 + 34 AVAGO profile_default - 25GR1 + 400GR8 + true + + 34 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 35 + 50GR1 + + + + + + 36 + 50GR1 + 100GR2 + + + + + 37 + 50GR1 + + + + + + 38 + 50GR1 + 100GR2 + 200GR4 + + + + 39 + 50GR1 + + + + + + 40 + 50GR1 + 100GR2 + + + + + 41 + 50GR1 + + + + - 34 + 42 AVAGO profile_default - 25GR1 + 400GR8 + true + + 42 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 43 + 50GR1 + + + + + + 44 + 50GR1 + 100GR2 + + + + + 45 + 50GR1 + + + + + + 46 + 50GR1 + 100GR2 + 200GR4 + + + + 47 + 50GR1 + + + + + + 48 + 50GR1 + 100GR2 + + + + + 49 + 50GR1 + + + + - 35 + 50 AVAGO profile_default - 25GR1 + 400GR8 + true + + 50 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 51 + 50GR1 + + + + + + 52 + 50GR1 + 100GR2 + + + + + 53 + 50GR1 + + + + + + 54 + 50GR1 + 100GR2 + 200GR4 + + + + 55 + 50GR1 + + + + + + 56 + 50GR1 + 100GR2 + + + + + 57 + 50GR1 + + + + - 36 + 58 AVAGO profile_default - 25GR1 + 400GR8 + true + + 58 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 59 + 50GR1 + + + + + + 60 + 50GR1 + 100GR2 + + + + + 64 + 50GR1 + + + + + + 65 + 50GR1 + 100GR2 + 200GR4 + + + + 66 + 50GR1 + + + + + + 67 + 50GR1 + 100GR2 + + + + + 68 + 50GR1 + + + + - 37 + 69 AVAGO profile_default - 25GR1 + 400GR8 + true + + 69 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 70 + 50GR1 + + + + + + 71 + 50GR1 + 100GR2 + + + + + 72 + 50GR1 + + + + + + 73 + 50GR1 + 100GR2 + 200GR4 + + + + 74 + 50GR1 + + + + + + 75 + 50GR1 + 100GR2 + + + + + 76 + 50GR1 + + + + - 38 + 77 AVAGO profile_default - 25GR1 + 400GR8 + true + + 77 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 78 + 50GR1 + + + + + + 79 + 50GR1 + 100GR2 + + + + + 80 + 50GR1 + + + + + + 81 + 50GR1 + 100GR2 + 200GR4 + + + + 82 + 50GR1 + + + + + + 83 + 50GR1 + 100GR2 + + + + + 84 + 50GR1 + + + + - 39 + 85 AVAGO profile_default - 25GR1 + 400GR8 + true + + 85 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 86 + 50GR1 + + + + + + 87 + 50GR1 + 100GR2 + + + + + 88 + 50GR1 + + + + + + 89 + 50GR1 + 100GR2 + 200GR4 + + + + 90 + 50GR1 + + + + + + 91 + 50GR1 + 100GR2 + + + + + 92 + 50GR1 + + + + - 40 + 93 AVAGO profile_default - 25GR1 + 400GR8 + true + + 93 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 94 + 50GR1 + + + + + + 95 + 50GR1 + 100GR2 + + + + + 96 + 50GR1 + + + + + + 97 + 50GR1 + 100GR2 + 200GR4 + + + + 98 + 50GR1 + + + + + + 99 + 50GR1 + 100GR2 + + + + + 100 + 50GR1 + + + + - 41 + 101 AVAGO profile_default - 25GR1 + 400GR8 + true + + 101 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 102 + 50GR1 + + + + + + 103 + 50GR1 + 100GR2 + + + + + 104 + 50GR1 + + + + + + 105 + 50GR1 + 100GR2 + 200GR4 + + + + 106 + 50GR1 + + + + + + 107 + 50GR1 + 100GR2 + + + + + 108 + 50GR1 + + + + - 42 + 109 AVAGO profile_default - 25GR1 + 400GR8 + true + + 109 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 110 + 50GR1 + + + + + + 111 + 50GR1 + 100GR2 + + + + + 112 + 50GR1 + + + + + + 113 + 50GR1 + 100GR2 + 200GR4 + + + + 114 + 50GR1 + + + + + + 115 + 50GR1 + 100GR2 + + + + + 116 + 50GR1 + + + + - 43 + 117 AVAGO profile_default - 25GR1 + 400GR8 + true + + 117 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 118 + 50GR1 + + + + + + 119 + 50GR1 + 100GR2 + + + + + 120 + 50GR1 + + + + + + 121 + 50GR1 + 100GR2 + 200GR4 + + + + 122 + 50GR1 + + + + + + 123 + 50GR1 + 100GR2 + + + + + 124 + 50GR1 + + + + - 44 + 125 AVAGO profile_default - 25GR1 + 400GR8 + true + + 125 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 126 + 50GR1 + + + + + + 127 + 50GR1 + 100GR2 + + + + + 128 + 50GR1 + + + + + + 129 + 50GR1 + 100GR2 + 200GR4 + + + + 130 + 50GR1 + + + + + + 131 + 50GR1 + 100GR2 + + + + + 132 + 50GR1 + + + + - 45 + 133 AVAGO profile_default - 25GR1 - - - 46 + 400GR8 + true + + 133 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 134 + 50GR1 + + + + + + 135 + 50GR1 + 100GR2 + + + + + 136 + 50GR1 + + + + + + 137 + 50GR1 + 100GR2 + 200GR4 + + + + 138 + 50GR1 + + + + + + 139 + 50GR1 + 100GR2 + + + + + 140 + 50GR1 + + + + + + + 141 AVAGO profile_default - 25GR1 - - - 47 + 400GR8 + true + + 141 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 142 + 50GR1 + + + + + + 143 + 50GR1 + 100GR2 + + + + + 144 + 50GR1 + + + + + + 145 + 50GR1 + 100GR2 + 200GR4 + + + + 146 + 50GR1 + + + + + + 147 + 50GR1 + 100GR2 + + + + + 148 + 50GR1 + + + + + + + 149 AVAGO profile_default - 25GR1 - - - 48 + 400GR8 + true + + 149 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 150 + 50GR1 + + + + + + 151 + 50GR1 + 100GR2 + + + + + 152 + 50GR1 + + + + + + 153 + 50GR1 + 100GR2 + 200GR4 + + + + 154 + 50GR1 + + + + + + 155 + 50GR1 + 100GR2 + + + + + 156 + 50GR1 + + + + + + + 157 AVAGO profile_default - 25GR1 - - - 49 + 400GR8 + true + + 157 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 158 + 50GR1 + + + + + + 159 + 50GR1 + 100GR2 + + + + + 160 + 50GR1 + + + + + + 161 + 50GR1 + 100GR2 + 200GR4 + + + + 162 + 50GR1 + + + + + + 163 + 50GR1 + 100GR2 + + + + + 164 + 50GR1 + + + + + + + 165 AVAGO profile_default - 25GR1 - - - 50 + 400GR8 + true + + 165 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 166 + 50GR1 + + + + + + 167 + 50GR1 + 100GR2 + + + + + 168 + 50GR1 + + + + + + 169 + 50GR1 + 100GR2 + 200GR4 + + + + 170 + 50GR1 + + + + + + 171 + 50GR1 + 100GR2 + + + + + 172 + 50GR1 + + + + + + + 173 AVAGO profile_default - 25GR1 - - - 51 + 400GR8 + true + + 173 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 174 + 50GR1 + + + + + + 175 + 50GR1 + 100GR2 + + + + + 176 + 50GR1 + + + + + + 177 + 50GR1 + 100GR2 + 200GR4 + + + + 178 + 50GR1 + + + + + + 179 + 50GR1 + 100GR2 + + + + + 180 + 50GR1 + + + + + + + 181 AVAGO profile_default - 25GR1 - - - 52 + 400GR8 + true + + 181 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 182 + 50GR1 + + + + + + 183 + 50GR1 + 100GR2 + + + + + 184 + 50GR1 + + + + + + 185 + 50GR1 + 100GR2 + 200GR4 + + + + 186 + 50GR1 + + + + + + 187 + 50GR1 + 100GR2 + + + + + 188 + 50GR1 + + + + + + + 189 AVAGO profile_default - 25GR1 - - - 53 + 400GR8 + true + + 189 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 190 + 50GR1 + + + + + + 191 + 50GR1 + 100GR2 + + + + + 192 + 50GR1 + + + + + + 193 + 50GR1 + 100GR2 + 200GR4 + + + + 194 + 50GR1 + + + + + + 195 + 50GR1 + 100GR2 + + + + + 196 + 50GR1 + + + + + + + 197 AVAGO profile_default - 25GR1 - - - 54 + 400GR8 + true + + 197 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 198 + 50GR1 + + + + + + 199 + 50GR1 + 100GR2 + + + + + 200 + 50GR1 + + + + + + 201 + 50GR1 + 100GR2 + 200GR4 + + + + 202 + 50GR1 + + + + + + 203 + 50GR1 + 100GR2 + + + + + 204 + 50GR1 + + + + + + + 205 AVAGO profile_default - 25GR1 - - - 55 + 400GR8 + true + + 205 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 206 + 50GR1 + + + + + + 207 + 50GR1 + 100GR2 + + + + + 208 + 50GR1 + + + + + + 209 + 50GR1 + 100GR2 + 200GR4 + + + + 210 + 50GR1 + + + + + + 211 + 50GR1 + 100GR2 + + + + + 212 + 50GR1 + + + + + + + 213 AVAGO profile_default - 25GR1 - - - 56 + 400GR8 + true + + 213 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 214 + 50GR1 + + + + + + 215 + 50GR1 + 100GR2 + + + + + 216 + 50GR1 + + + + + + 217 + 50GR1 + 100GR2 + 200GR4 + + + + 218 + 50GR1 + + + + + + 219 + 50GR1 + 100GR2 + + + + + 220 + 50GR1 + + + + + + + 221 AVAGO profile_default - 25GR1 - - - 57 - AVAGO - profile_default - 25GR1 - - - 58 - AVAGO - profile_default - 25GR1 - - - 59 - AVAGO - profile_default - 25GR1 - - - 60 - AVAGO - profile_default - 25GR1 - - - 64 - AVAGO - profile_default - 25GR1 - - - 65 - AVAGO - profile_default - 25GR1 - - - 66 - AVAGO - profile_default - 25GR1 - - - 67 - AVAGO - profile_default - 50GR1 - - - 68 - AVAGO - profile_default - 50GR1 - - - 69 - AVAGO - profile_default - 50GR1 - - - 70 - AVAGO - profile_default - 50GR1 - - - 71 - AVAGO - profile_default - 50GR1 - - - 72 - AVAGO - profile_default - 50GR1 - - - 73 - AVAGO - profile_default - 50GR1 - - - 74 - AVAGO - profile_default - 50GR1 - - - 75 - AVAGO - profile_default - 50GR1 - - - 76 - AVAGO - profile_default - 50GR1 - - - 77 - AVAGO - profile_default - 50GR1 - - - 78 - AVAGO - profile_default - 50GR1 - - - 79 - AVAGO - profile_default - 50GR1 - - - 80 - AVAGO - profile_default - 50GR1 - - - 81 - AVAGO - profile_default - 50GR1 - - - 82 - AVAGO - profile_default - 50GR1 - - - 83 - AVAGO - profile_default - 50GR1 - - - 84 - AVAGO - profile_default - 50GR1 - - - 85 - AVAGO - profile_default - 50GR1 - - - 86 - AVAGO - profile_default - 50GR1 - - - 87 - AVAGO - profile_default - 50GR1 - - - 88 - AVAGO - profile_default - 50GR1 - - - 89 - AVAGO - profile_default - 50GR1 - - - 90 - AVAGO - profile_default - 50GR1 - - - 91 - AVAGO - profile_default - 50GR1 - - - 92 - AVAGO - profile_default - 50GR1 - - - 93 - AVAGO - profile_default - 50GR1 - - - 94 - AVAGO - profile_default - 50GR1 - - - 95 - AVAGO - profile_default - 50GR1 - - - 96 - AVAGO - profile_default - 50GR1 - - - 97 - AVAGO - profile_default - 50GR1 - - - 98 - AVAGO - profile_default - 50GR1 - - - 99 - AVAGO - profile_default - 100GR2 - - - 100 - AVAGO - profile_default - 100GR2 - - - 101 - AVAGO - profile_default - 100GR2 - - - 102 - AVAGO - profile_default - 100GR2 - - - 103 - AVAGO - profile_default - 100GR2 - - - 104 - AVAGO - profile_default - 100GR2 - - - 105 - AVAGO - profile_default - 100GR2 - - - 106 - AVAGO - profile_default - 100GR2 - - - 107 - AVAGO - profile_default - 100GR2 - - - 108 - AVAGO - profile_default - 100GR2 - - - 109 - AVAGO - profile_default - 100GR2 - - - 110 - AVAGO - profile_default - 100GR2 - - - 111 - AVAGO - profile_default - 100GR2 - - - 112 - AVAGO - profile_default - 100GR2 - - - 113 - AVAGO - profile_default - 100GR2 - - - 114 - AVAGO - profile_default - 100GR2 - - - 115 - AVAGO - profile_default - 100GR4 - - - 116 - AVAGO - profile_default - 100GR4 - - - 117 - AVAGO - profile_default - 100GR4 - - - 118 - AVAGO - profile_default - 100GR4 - - - 119 - AVAGO - profile_default - 100GR4 - - - 120 - AVAGO - profile_default - 100GR4 - - - 121 - AVAGO - profile_default - 100GR4 - - - 122 - AVAGO - profile_default - 100GR4 - - - 123 - AVAGO - profile_default - 200GR4 - - - 124 - AVAGO - profile_default - 200GR4 - - - 125 - AVAGO - profile_default - 200GR4 - - - 126 - AVAGO - profile_default - 200GR4 - - - 127 - AVAGO - profile_default - 200GR4 - - - 128 - AVAGO - profile_default - 200GR4 - - - 129 - AVAGO - profile_default - 200GR4 - - - 130 - AVAGO - profile_default - 200GR4 - - - 131 - AVAGO - profile_default - 400GR8 - - - 132 - AVAGO - profile_default - 400GR8 - - - 133 - AVAGO - profile_default - 400GR8 - - - 134 - AVAGO - profile_default - 400GR8 - - - 135 - AVAGO - profile_default - 400GR8 - - - 136 + 400GR8 + true + + 221 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 222 + 50GR1 + + + + + + 223 + 50GR1 + 100GR2 + + + + + 224 + 50GR1 + + + + + + 225 + 50GR1 + 100GR2 + 200GR4 + + + + 226 + 50GR1 + + + + + + 227 + 50GR1 + 100GR2 + + + + + 228 + 50GR1 + + + + + + + 229 AVAGO profile_default 400GR8 - - - 137 - AVAGO - profile_default - 400GR8 - - - 138 - AVAGO - profile_default - 400GR8 - - - 139 + true + + 229 + 50GR1 + 100GR2 + 200GR4 + 400GR8 + + + 230 + 50GR1 + + + + + + 231 + 50GR1 + 100GR2 + + + + + 232 + 50GR1 + + + + + + 233 + 50GR1 + 100GR2 + 200GR4 + + + + 234 + 50GR1 + + + + + + 235 + 50GR1 + 100GR2 + + + + + 236 + 50GR1 + + + + + + + 237 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.md5 index 9980130ff5c3..f541671c6925 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.md5 @@ -1 +1 @@ -fa06a79dae1d9859fa0d579044b41e62 \ No newline at end of file +8bfaf5b9fd1eff2082ed8e5ab6943c23 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.xml index 6bc02e574fde..d04a1d95899b 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/ASK-PP-F12_8T-DB.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.md5 index b8354262f261..02e4365bdfdb 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.md5 @@ -1 +1 @@ -77abb2b5b75369072fc4e2e498e86204 \ No newline at end of file +b296c20e5fe6b33cf6eec409b23af93f \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.xml index b603467c45ed..495f140fb1cb 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/SAI-F12_8T-DB.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -164,687 +194,1177 @@ 0 0 - 31 - - - 1 - 0 - 30 + 0 2 0 - 29 - - - 3 - 0 - 28 + 1 4 0 - 27 - - - 5 - 0 - 26 + 2 6 0 - 25 - - - 7 - 0 - 24 + 3 8 0 - 23 - - - 9 - 0 - 22 + 4 10 0 - 21 - - - 11 - 0 - 20 + 5 12 0 - 19 - - - 13 - 0 - 18 + 6 14 0 - 17 - - - 15 - 0 - 16 + 7 16 0 - 15 - - - 17 - 0 - 14 - - - 18 - 0 - 13 - - - 19 - 0 - 12 - - - 20 - 0 - 11 - - - 21 - 0 - 10 - - - 22 - 0 - 9 - - - 23 - 0 8 24 0 - 7 - - - 25 - 0 - 6 - - - 26 - 0 - 5 - - - 27 - 0 - 4 - - - 28 - 0 - 3 - - - 29 - 0 - 2 - - - 30 - 0 - 1 - - - 31 - 0 - 0 + 9 32 0 - 66 + 10 33 0 - 65 + 11 34 0 - 64 + 12 35 0 - 60 + 13 36 0 - 59 + 14 37 0 - 58 + 15 38 0 - 57 + 16 39 0 - 56 + 17 40 0 - 55 + 18 41 0 - 54 + 19 42 0 - 53 + 20 43 0 - 52 + 21 44 0 - 51 + 22 45 0 - 50 + 23 46 0 - 49 + 24 47 0 - 48 + 25 48 0 - 47 + 26 49 0 - 46 + 27 50 0 - 45 + 28 51 0 - 44 + 29 52 0 - 43 + 30 53 0 - 42 + 31 54 0 - 41 + 32 55 0 - 40 + 33 56 0 - 39 + 34 57 0 - 38 + 35 58 0 - 37 + 36 59 0 - 36 + 37 60 0 - 35 + 38 61 0 - 34 + 39 62 0 - 33 + 40 63 0 - 32 + 41 64 0 - 98 + 42 65 0 - 97 + 43 66 0 - 96 + 44 67 0 - 95 + 45 68 0 - 94 + 46 69 0 - 93 + 47 70 0 - 92 + 48 71 0 - 91 + 49 72 0 - 90 + 50 73 0 - 89 + 51 74 0 - 88 + 52 75 0 - 87 + 53 76 0 - 86 + 54 77 0 - 85 + 55 78 0 - 84 + 56 79 0 - 83 + 57 80 0 - 82 + 58 81 0 - 81 + 59 82 0 - 80 + 60 83 0 - 79 + 64 84 0 - 78 + 65 85 0 - 77 + 66 86 0 - 76 + 67 87 0 - 75 + 68 88 0 - 74 + 69 89 0 - 73 + 70 90 0 - 72 + 71 91 0 - 71 + 72 92 0 - 70 + 73 93 0 - 69 + 74 94 0 - 68 + 75 95 0 - 67 + 76 96 0 - 114 + 77 + + + 97 + 0 + 78 98 0 - 113 + 79 + + + 99 + 0 + 80 100 0 - 112 + 81 + + + 101 + 0 + 82 102 0 - 111 + 83 + + + 103 + 0 + 84 104 0 - 110 + 85 + + + 105 + 0 + 86 106 0 - 109 + 87 + + + 107 + 0 + 88 108 0 - 108 + 89 + + + 109 + 0 + 90 110 0 - 107 + 91 + + + 111 + 0 + 92 112 0 - 106 + 93 + + + 113 + 0 + 94 114 0 - 105 + 95 + + + 115 + 0 + 96 116 0 - 104 + 97 + + + 117 + 0 + 98 118 0 - 103 + 99 + + + 119 + 0 + 100 120 0 + 101 + + + 121 + 0 102 122 0 - 101 + 103 + + + 123 + 0 + 104 124 0 - 100 + 105 + + + 125 + 0 + 106 126 0 - 99 + 107 + + + 127 + 0 + 108 128 0 - 122 + 109 + + + 129 + 0 + 110 + + + 130 + 0 + 111 + + + 131 + 0 + 112 132 0 - 121 + 113 + + + 133 + 0 + 114 + + + 134 + 0 + 115 + + + 135 + 0 + 116 136 0 + 117 + + + 137 + 0 + 118 + + + 138 + 0 + 119 + + + 139 + 0 120 140 0 - 119 + 121 + + + 141 + 0 + 122 + + + 142 + 0 + 123 + + + 143 + 0 + 124 144 0 - 118 + 125 + + + 145 + 0 + 126 + + + 146 + 0 + 127 + + + 147 + 0 + 128 148 0 - 117 + 129 + + + 149 + 0 + 130 + + + 150 + 0 + 131 + + + 151 + 0 + 132 152 0 - 116 + 133 + + + 153 + 0 + 134 + + + 154 + 0 + 135 + + + 155 + 0 + 136 156 0 - 115 + 137 + + + 157 + 0 + 138 + + + 158 + 0 + 139 + + + 159 + 0 + 140 160 0 - 130 + 141 + + + 161 + 0 + 142 + + + 162 + 0 + 143 + + + 163 + 0 + 144 164 0 - 129 + 145 + + + 165 + 0 + 146 + + + 166 + 0 + 147 + + + 167 + 0 + 148 168 0 - 128 + 149 + + + 169 + 0 + 150 + + + 170 + 0 + 151 + + + 171 + 0 + 152 172 0 - 127 + 153 + + + 173 + 0 + 154 + + + 174 + 0 + 155 + + + 175 + 0 + 156 176 0 - 126 + 157 + + + 177 + 0 + 158 + + + 178 + 0 + 159 + + + 179 + 0 + 160 180 0 - 125 + 161 + + + 181 + 0 + 162 + + + 182 + 0 + 163 + + + 183 + 0 + 164 184 0 - 124 + 165 + + + 185 + 0 + 166 + + + 186 + 0 + 167 + + + 187 + 0 + 168 188 0 - 123 + 169 + + + 189 + 0 + 170 + + + 190 + 0 + 171 + + + 191 + 0 + 172 192 0 - 138 + 173 + + + 193 + 0 + 174 + + + 194 + 0 + 175 + + + 195 + 0 + 176 + + + 196 + 0 + 177 + + + 197 + 0 + 178 + + + 198 + 0 + 179 + + + 199 + 0 + 180 200 0 - 137 + 181 + + + 201 + 0 + 182 + + + 202 + 0 + 183 + + + 203 + 0 + 184 + + + 204 + 0 + 185 + + + 205 + 0 + 186 + + + 206 + 0 + 187 + + + 207 + 0 + 188 208 0 - 136 + 189 + + + 209 + 0 + 190 + + + 210 + 0 + 191 + + + 211 + 0 + 192 + + + 212 + 0 + 193 + + + 213 + 0 + 194 + + + 214 + 0 + 195 + + + 215 + 0 + 196 216 0 - 135 + 197 + + + 217 + 0 + 198 + + + 218 + 0 + 199 + + + 219 + 0 + 200 + + + 220 + 0 + 201 + + + 221 + 0 + 202 + + + 222 + 0 + 203 + + + 223 + 0 + 204 224 0 - 134 + 205 + + + 225 + 0 + 206 + + + 226 + 0 + 207 + + + 227 + 0 + 208 + + + 228 + 0 + 209 + + + 229 + 0 + 210 + + + 230 + 0 + 211 + + + 231 + 0 + 212 232 0 - 133 + 213 + + + 233 + 0 + 214 + + + 234 + 0 + 215 + + + 235 + 0 + 216 + + + 236 + 0 + 217 + + + 237 + 0 + 218 + + + 238 + 0 + 219 + + + 239 + 0 + 220 240 0 - 132 + 221 + + + 241 + 0 + 222 + + + 242 + 0 + 223 + + + 243 + 0 + 224 + + + 244 + 0 + 225 + + + 245 + 0 + 226 + + + 246 + 0 + 227 + + + 247 + 0 + 228 248 0 - 131 + 229 + + + 249 + 0 + 230 + + + 250 + 0 + 231 + + + 251 + 0 + 232 + + + 252 + 0 + 233 + + + 253 + 0 + 234 + + + 254 + 0 + 235 + + + 255 + 0 + 236 256 0 - 139 + 237 @@ -862,6 +1382,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t0.j2 index 5e24d992559a..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"85000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t1.j2 index 5e24d992559a..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"85000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/hwsku.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/hwsku.json new file mode 100644 index 000000000000..0181b7a79248 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/hwsku.json @@ -0,0 +1,1410 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "4x100G", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet2": { + "default_brkout_mode": "4x100G", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet4": { + "default_brkout_mode": "4x100G", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet6": { + "default_brkout_mode": "4x100G", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "4x100G", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet10": { + "default_brkout_mode": "4x100G", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet12": { + "default_brkout_mode": "4x100G", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet14": { + "default_brkout_mode": "4x100G", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet33": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet34": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet35": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet36": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet37": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet38": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet39": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet41": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet42": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet43": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet44": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet45": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet46": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet47": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet49": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet50": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet51": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet52": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet53": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet54": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet55": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet57": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet58": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet59": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet60": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet61": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet62": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet63": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet65": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet66": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet67": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet68": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet69": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet70": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet71": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet73": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet74": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet75": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet76": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet77": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet78": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet79": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet81": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet82": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet83": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet84": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet85": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet86": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet87": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet89": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet90": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet91": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet92": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet93": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet94": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet95": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet97": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet98": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet99": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet100": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet101": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet102": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet103": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet105": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet106": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet107": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet108": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet109": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet110": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet111": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet113": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet114": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet115": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet116": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet117": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet118": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet119": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet121": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet122": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet123": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet124": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet125": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet126": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet127": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet129": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet130": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet131": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet132": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet133": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet134": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet135": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet137": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet138": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet139": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet140": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet141": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet142": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet143": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet145": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet146": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet147": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet148": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet149": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet150": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet151": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet153": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet154": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet155": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet156": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet157": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet158": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet159": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet161": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet162": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet163": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet164": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet165": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet166": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet167": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet169": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet170": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet171": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet172": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet173": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet174": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet175": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet177": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet178": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet179": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet180": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet181": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet182": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet183": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet185": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet186": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet187": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet188": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet189": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet190": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet191": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet193": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet194": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet195": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet196": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet197": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet198": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet199": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet201": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet202": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet203": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet204": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet205": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet206": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet207": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet209": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet210": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet211": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet212": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet213": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet214": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet215": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet217": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet218": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet219": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet220": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet221": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet222": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet223": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet225": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet226": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet227": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet228": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet229": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet230": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet231": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet233": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet234": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet235": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet236": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet237": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet238": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet239": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet241": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet242": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet243": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet244": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet245": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet246": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet247": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "1", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet249": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "2", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet250": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "3", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet251": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "4", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet252": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "5", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet253": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "6", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet254": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "7", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet255": { + "default_brkout_mode": "8x50G[25G,10G,1G]", + "subport": "8", + "autoneg": "on", + "fec": "rs" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G", + "autoneg": "off" + } + } +} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/port_config.ini b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/port_config.ini index 57fb6e2c46f2..85820e5e2b2e 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/port_config.ini +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FALCON_DB/port_config.ini @@ -1,138 +1,236 @@ -# name lanes alias speed autoneg fec index -Ethernet0 0 tenGigE0 10000 on none 1 -Ethernet1 1 tenGigE1 10000 on none 2 -Ethernet2 2 tenGigE2 10000 on none 3 -Ethernet3 3 tenGigE3 10000 on none 4 -Ethernet4 4 tenGigE4 10000 on none 5 -Ethernet5 5 tenGigE5 10000 on none 6 -Ethernet6 6 tenGigE6 10000 on none 7 -Ethernet7 7 tenGigE7 10000 on none 8 -Ethernet8 8 tenGigE8 10000 on none 9 -Ethernet9 9 tenGigE9 10000 on none 10 -Ethernet10 10 tenGigE10 10000 on none 11 -Ethernet11 11 tenGigE11 10000 on none 12 -Ethernet12 12 tenGigE12 10000 on none 13 -Ethernet13 13 tenGigE13 10000 on none 14 -Ethernet14 14 tenGigE14 10000 on none 15 -Ethernet15 15 tenGigE15 10000 on none 16 -Ethernet16 16 tenGigE16 10000 on none 17 -Ethernet17 17 tenGigE17 10000 on none 18 -Ethernet18 18 tenGigE18 10000 on none 19 -Ethernet19 19 tenGigE19 10000 on none 20 -Ethernet20 20 tenGigE20 10000 on none 21 -Ethernet21 21 tenGigE21 10000 on none 22 -Ethernet22 22 tenGigE22 10000 on none 23 -Ethernet23 23 tenGigE23 10000 on none 24 -Ethernet24 24 tenGigE24 10000 on none 25 -Ethernet25 25 tenGigE25 10000 on none 26 -Ethernet26 26 tenGigE26 10000 on none 27 -Ethernet27 27 tenGigE27 10000 on none 28 -Ethernet28 28 tenGigE28 10000 on none 29 -Ethernet29 29 tenGigE29 10000 on none 30 -Ethernet30 30 tenGigE30 10000 on none 31 -Ethernet31 31 tenGigE31 10000 on none 32 -Ethernet32 32 twenty5GigE32 25000 on none 33 -Ethernet33 33 twenty5GigE33 25000 on none 34 -Ethernet34 34 twenty5GigE34 25000 on none 35 -Ethernet35 35 twenty5GigE35 25000 on none 36 -Ethernet36 36 twenty5GigE36 25000 on none 37 -Ethernet37 37 twenty5GigE37 25000 on none 38 -Ethernet38 38 twenty5GigE38 25000 on none 39 -Ethernet39 39 twenty5GigE39 25000 on none 40 -Ethernet40 40 twenty5GigE40 25000 on none 41 -Ethernet41 41 twenty5GigE41 25000 on none 42 -Ethernet42 42 twenty5GigE42 25000 on none 43 -Ethernet43 43 twenty5GigE43 25000 on none 44 -Ethernet44 44 twenty5GigE44 25000 on none 45 -Ethernet45 45 twenty5GigE45 25000 on none 46 -Ethernet46 46 twenty5GigE46 25000 on none 47 -Ethernet47 47 twenty5GigE47 25000 on none 48 -Ethernet48 48 twenty5GigE48 25000 on none 49 -Ethernet49 49 twenty5GigE49 25000 on none 50 -Ethernet50 50 twenty5GigE50 25000 on none 51 -Ethernet51 51 twenty5GigE51 25000 on none 52 -Ethernet52 52 twenty5GigE52 25000 on none 53 -Ethernet53 53 twenty5GigE53 25000 on none 54 -Ethernet54 54 twenty5GigE54 25000 on none 55 -Ethernet55 55 twenty5GigE55 25000 on none 56 -Ethernet56 56 twenty5GigE56 25000 on none 57 -Ethernet57 57 twenty5GigE57 25000 on none 58 -Ethernet58 58 twenty5GigE58 25000 on none 59 -Ethernet59 59 twenty5GigE59 25000 on none 60 -Ethernet60 60 twenty5GigE60 25000 on none 61 -Ethernet61 61 twenty5GigE61 25000 on none 62 -Ethernet62 62 twenty5GigE62 25000 on none 63 -Ethernet63 63 twenty5GigE63 25000 on none 64 -Ethernet64 64 fiftyGigE64 50000 on rs 65 -Ethernet65 65 fiftyGigE65 50000 on rs 66 -Ethernet66 66 fiftyGigE66 50000 on rs 67 -Ethernet67 67 fiftyGigE67 50000 on rs 68 -Ethernet68 68 fiftyGigE68 50000 on rs 69 -Ethernet69 69 fiftyGigE69 50000 on rs 70 -Ethernet70 70 fiftyGigE70 50000 on rs 71 -Ethernet71 71 fiftyGigE71 50000 on rs 72 -Ethernet72 72 fiftyGigE72 50000 on rs 73 -Ethernet73 73 fiftyGigE73 50000 on rs 74 -Ethernet74 74 fiftyGigE74 50000 on rs 75 -Ethernet75 75 fiftyGigE75 50000 on rs 76 -Ethernet76 76 fiftyGigE76 50000 on rs 77 -Ethernet77 77 fiftyGigE77 50000 on rs 78 -Ethernet78 78 fiftyGigE78 50000 on rs 79 -Ethernet79 79 fiftyGigE79 50000 on rs 80 -Ethernet80 80 fiftyGigE80 50000 on rs 81 -Ethernet81 81 fiftyGigE81 50000 on rs 82 -Ethernet82 82 fiftyGigE82 50000 on rs 83 -Ethernet83 83 fiftyGigE83 50000 on rs 84 -Ethernet84 84 fiftyGigE84 50000 on rs 85 -Ethernet85 85 fiftyGigE85 50000 on rs 86 -Ethernet86 86 fiftyGigE86 50000 on rs 87 -Ethernet87 87 fiftyGigE87 50000 on rs 88 -Ethernet88 88 fiftyGigE88 50000 on rs 89 -Ethernet89 89 fiftyGigE89 50000 on rs 90 -Ethernet90 90 fiftyGigE90 50000 on rs 91 -Ethernet91 91 fiftyGigE91 50000 on rs 92 -Ethernet92 92 fiftyGigE92 50000 on rs 93 -Ethernet93 93 fiftyGigE93 50000 on rs 94 -Ethernet94 94 fiftyGigE94 50000 on rs 95 -Ethernet95 95 fiftyGigE95 50000 on rs 96 -Ethernet96 96,97 one00GigE96 100000 on rs 97 -Ethernet97 98,99 one00GigE97 100000 on rs 98 -Ethernet98 100,101 one00GigE98 100000 on rs 99 -Ethernet99 102,103 one00GigE99 100000 on rs 100 -Ethernet100 104,105 one00GigE100 100000 on rs 101 -Ethernet101 106,107 one00GigE101 100000 on rs 102 -Ethernet102 108,109 one00GigE102 100000 on rs 103 -Ethernet103 110,111 one00GigE103 100000 on rs 104 -Ethernet104 112,113 one00GigE104 100000 on rs 105 -Ethernet105 114,115 one00GigE105 100000 on rs 106 -Ethernet106 116,117 one00GigE106 100000 on rs 107 -Ethernet107 118,119 one00GigE107 100000 on rs 108 -Ethernet108 120,121 one00GigE108 100000 on rs 109 -Ethernet109 122,123 one00GigE109 100000 on rs 110 -Ethernet110 124,125 one00GigE110 100000 on rs 111 -Ethernet111 126,127 one00GigE111 100000 on rs 112 -Ethernet112 128,129,130,131 one00GigE112 100000 on rs 113 -Ethernet113 132,133,134,135 one00GigE113 100000 on rs 114 -Ethernet114 136,137,138,139 one00GigE114 100000 on rs 115 -Ethernet115 140,141,142,143 one00GigE115 100000 on rs 116 -Ethernet116 144,145,146,147 one00GigE116 100000 on rs 117 -Ethernet117 148,149,150,151 one00GigE117 100000 on rs 118 -Ethernet118 152,153,154,155 one00GigE118 100000 on rs 119 -Ethernet119 156,157,158,159 one00GigE119 100000 on rs 120 -Ethernet120 160,161,162,163 two00GigE120 200000 on rs 121 -Ethernet121 164,165,166,167 two00GigE121 200000 on rs 122 -Ethernet122 168,169,170,171 two00GigE122 200000 on rs 123 -Ethernet123 172,173,174,175 two00GigE123 200000 on rs 124 -Ethernet124 176,177,178,179 two00GigE124 200000 on rs 125 -Ethernet125 180,181,182,183 two00GigE125 200000 on rs 126 -Ethernet126 184,185,186,187 two00GigE126 200000 on rs 127 -Ethernet127 188,189,190,191 two00GigE127 200000 on rs 128 -Ethernet128 192,193,194,195,196,197,198,199 four00GigE128 400000 on rs 129 -Ethernet129 200,201,202,203,204,205,206,207 four00GigE129 400000 on rs 130 -Ethernet130 208,209,210,211,212,213,214,215 four00GigE130 400000 on rs 131 -Ethernet131 216,217,218,219,220,221,222,223 four00GigE131 400000 on rs 132 -Ethernet132 224,225,226,227,228,229,230,231 four00GigE132 400000 on rs 133 -Ethernet133 232,233,234,235,236,237,238,239 four00GigE133 400000 on rs 134 -Ethernet134 240,241,242,243,244,245,246,247 four00GigE134 400000 on rs 135 -Ethernet135 248,249,250,251,252,253,254,255 four00GigE135 400000 on rs 136 -Ethernet136 256 tenGigE136 10000 off none 137 +# name lanes alias speed autoneg fec index +Ethernet0 0,1 Eth1/1 100000 on rs 1 +Ethernet2 2,3 Eth1/2 100000 on rs 1 +Ethernet4 4,5 Eth1/3 100000 on rs 1 +Ethernet6 6,7 Eth1/4 100000 on rs 1 +Ethernet8 8,9 Eth2/1 100000 on rs 2 +Ethernet10 10,11 Eth2/2 100000 on rs 2 +Ethernet12 12,13 Eth2/3 100000 on rs 2 +Ethernet14 14,15 Eth2/4 100000 on rs 2 +Ethernet16 16,17,18,19,20,21,22,23 Eth3 400000 on rs 3 +Ethernet24 24,25,26,27,28,29,30,31 Eth4 400000 on rs 4 +Ethernet32 32 Eth5/1 50000 on rs 5 +Ethernet33 33 Eth5/2 50000 on rs 5 +Ethernet34 34 Eth5/3 50000 on rs 5 +Ethernet35 35 Eth5/4 50000 on rs 5 +Ethernet36 36 Eth5/5 50000 on rs 5 +Ethernet37 37 Eth5/6 50000 on rs 5 +Ethernet38 38 Eth5/7 50000 on rs 5 +Ethernet39 39 Eth5/8 50000 on rs 5 +Ethernet40 40 Eth6/1 50000 on rs 6 +Ethernet41 41 Eth6/2 50000 on rs 6 +Ethernet42 42 Eth6/3 50000 on rs 6 +Ethernet43 43 Eth6/4 50000 on rs 6 +Ethernet44 44 Eth6/5 50000 on rs 6 +Ethernet45 45 Eth6/6 50000 on rs 6 +Ethernet46 46 Eth6/7 50000 on rs 6 +Ethernet47 47 Eth6/8 50000 on rs 6 +Ethernet48 48 Eth7/1 50000 on rs 7 +Ethernet49 49 Eth7/2 50000 on rs 7 +Ethernet50 50 Eth7/3 50000 on rs 7 +Ethernet51 51 Eth7/4 50000 on rs 7 +Ethernet52 52 Eth7/5 50000 on rs 7 +Ethernet53 53 Eth7/6 50000 on rs 7 +Ethernet54 54 Eth7/7 50000 on rs 7 +Ethernet55 55 Eth7/8 50000 on rs 7 +Ethernet56 56 Eth8/1 50000 on rs 8 +Ethernet57 57 Eth8/2 50000 on rs 8 +Ethernet58 58 Eth8/3 50000 on rs 8 +Ethernet59 59 Eth8/4 50000 on rs 8 +Ethernet60 60 Eth8/5 50000 on rs 8 +Ethernet61 61 Eth8/6 50000 on rs 8 +Ethernet62 62 Eth8/7 50000 on rs 8 +Ethernet63 63 Eth8/8 50000 on rs 8 +Ethernet64 64 Eth9/1 50000 on rs 9 +Ethernet65 65 Eth9/2 50000 on rs 9 +Ethernet66 66 Eth9/3 50000 on rs 9 +Ethernet67 67 Eth9/4 50000 on rs 9 +Ethernet68 68 Eth9/5 50000 on rs 9 +Ethernet69 69 Eth9/6 50000 on rs 9 +Ethernet70 70 Eth9/7 50000 on rs 9 +Ethernet71 71 Eth9/8 50000 on rs 9 +Ethernet72 72 Eth10/1 50000 on rs 10 +Ethernet73 73 Eth10/2 50000 on rs 10 +Ethernet74 74 Eth10/3 50000 on rs 10 +Ethernet75 75 Eth10/4 50000 on rs 10 +Ethernet76 76 Eth10/5 50000 on rs 10 +Ethernet77 77 Eth10/6 50000 on rs 10 +Ethernet78 78 Eth10/7 50000 on rs 10 +Ethernet79 79 Eth10/8 50000 on rs 10 +Ethernet80 80 Eth11/1 50000 on rs 11 +Ethernet81 81 Eth11/2 50000 on rs 11 +Ethernet82 82 Eth11/3 50000 on rs 11 +Ethernet83 83 Eth11/4 50000 on rs 11 +Ethernet84 84 Eth11/5 50000 on rs 11 +Ethernet85 85 Eth11/6 50000 on rs 11 +Ethernet86 86 Eth11/7 50000 on rs 11 +Ethernet87 87 Eth11/8 50000 on rs 11 +Ethernet88 88 Eth12/1 50000 on rs 12 +Ethernet89 89 Eth12/2 50000 on rs 12 +Ethernet90 90 Eth12/3 50000 on rs 12 +Ethernet91 91 Eth12/4 50000 on rs 12 +Ethernet92 92 Eth12/5 50000 on rs 12 +Ethernet93 93 Eth12/6 50000 on rs 12 +Ethernet94 94 Eth12/7 50000 on rs 12 +Ethernet95 95 Eth12/8 50000 on rs 12 +Ethernet96 96 Eth13/1 50000 on rs 13 +Ethernet97 97 Eth13/2 50000 on rs 13 +Ethernet98 98 Eth13/3 50000 on rs 13 +Ethernet99 99 Eth13/4 50000 on rs 13 +Ethernet100 100 Eth13/5 50000 on rs 13 +Ethernet101 101 Eth13/6 50000 on rs 13 +Ethernet102 102 Eth13/7 50000 on rs 13 +Ethernet103 103 Eth13/8 50000 on rs 13 +Ethernet104 104 Eth14/1 50000 on rs 14 +Ethernet105 105 Eth14/2 50000 on rs 14 +Ethernet106 106 Eth14/3 50000 on rs 14 +Ethernet107 107 Eth14/4 50000 on rs 14 +Ethernet108 108 Eth14/5 50000 on rs 14 +Ethernet109 109 Eth14/6 50000 on rs 14 +Ethernet110 110 Eth14/7 50000 on rs 14 +Ethernet111 111 Eth14/8 50000 on rs 14 +Ethernet112 112 Eth15/1 50000 on rs 15 +Ethernet113 113 Eth15/2 50000 on rs 15 +Ethernet114 114 Eth15/3 50000 on rs 15 +Ethernet115 115 Eth15/4 50000 on rs 15 +Ethernet116 116 Eth15/5 50000 on rs 15 +Ethernet117 117 Eth15/6 50000 on rs 15 +Ethernet118 118 Eth15/7 50000 on rs 15 +Ethernet119 119 Eth15/8 50000 on rs 15 +Ethernet120 120 Eth16/1 50000 on rs 16 +Ethernet121 121 Eth16/2 50000 on rs 16 +Ethernet122 122 Eth16/3 50000 on rs 16 +Ethernet123 123 Eth16/4 50000 on rs 16 +Ethernet124 124 Eth16/5 50000 on rs 16 +Ethernet125 125 Eth16/6 50000 on rs 16 +Ethernet126 126 Eth16/7 50000 on rs 16 +Ethernet127 127 Eth16/8 50000 on rs 16 +Ethernet128 128 Eth17/1 50000 on rs 17 +Ethernet129 129 Eth17/2 50000 on rs 17 +Ethernet130 130 Eth17/3 50000 on rs 17 +Ethernet131 131 Eth17/4 50000 on rs 17 +Ethernet132 132 Eth17/5 50000 on rs 17 +Ethernet133 133 Eth17/6 50000 on rs 17 +Ethernet134 134 Eth17/7 50000 on rs 17 +Ethernet135 135 Eth17/8 50000 on rs 17 +Ethernet136 136 Eth18/1 50000 on rs 18 +Ethernet137 137 Eth18/2 50000 on rs 18 +Ethernet138 138 Eth18/3 50000 on rs 18 +Ethernet139 139 Eth18/4 50000 on rs 18 +Ethernet140 140 Eth18/5 50000 on rs 18 +Ethernet141 141 Eth18/6 50000 on rs 18 +Ethernet142 142 Eth18/7 50000 on rs 18 +Ethernet143 143 Eth18/8 50000 on rs 18 +Ethernet144 144 Eth19/1 50000 on rs 19 +Ethernet145 145 Eth19/2 50000 on rs 19 +Ethernet146 146 Eth19/3 50000 on rs 19 +Ethernet147 147 Eth19/4 50000 on rs 19 +Ethernet148 148 Eth19/5 50000 on rs 19 +Ethernet149 149 Eth19/6 50000 on rs 19 +Ethernet150 150 Eth19/7 50000 on rs 19 +Ethernet151 151 Eth19/8 50000 on rs 19 +Ethernet152 152 Eth20/1 50000 on rs 20 +Ethernet153 153 Eth20/2 50000 on rs 20 +Ethernet154 154 Eth20/3 50000 on rs 20 +Ethernet155 155 Eth20/4 50000 on rs 20 +Ethernet156 156 Eth20/5 50000 on rs 20 +Ethernet157 157 Eth20/6 50000 on rs 20 +Ethernet158 158 Eth20/7 50000 on rs 20 +Ethernet159 159 Eth20/8 50000 on rs 20 +Ethernet160 160 Eth21/1 50000 on rs 21 +Ethernet161 161 Eth21/2 50000 on rs 21 +Ethernet162 162 Eth21/3 50000 on rs 21 +Ethernet163 163 Eth21/4 50000 on rs 21 +Ethernet164 164 Eth21/5 50000 on rs 21 +Ethernet165 165 Eth21/6 50000 on rs 21 +Ethernet166 166 Eth21/7 50000 on rs 21 +Ethernet167 167 Eth21/8 50000 on rs 21 +Ethernet168 168 Eth22/1 50000 on rs 22 +Ethernet169 169 Eth22/2 50000 on rs 22 +Ethernet170 170 Eth22/3 50000 on rs 22 +Ethernet171 171 Eth22/4 50000 on rs 22 +Ethernet172 172 Eth22/5 50000 on rs 22 +Ethernet173 173 Eth22/6 50000 on rs 22 +Ethernet174 174 Eth22/7 50000 on rs 22 +Ethernet175 175 Eth22/8 50000 on rs 22 +Ethernet176 176 Eth23/1 50000 on rs 23 +Ethernet177 177 Eth23/2 50000 on rs 23 +Ethernet178 178 Eth23/3 50000 on rs 23 +Ethernet179 179 Eth23/4 50000 on rs 23 +Ethernet180 180 Eth23/5 50000 on rs 23 +Ethernet181 181 Eth23/6 50000 on rs 23 +Ethernet182 182 Eth23/7 50000 on rs 23 +Ethernet183 183 Eth23/8 50000 on rs 23 +Ethernet184 184 Eth24/1 50000 on rs 24 +Ethernet185 185 Eth24/2 50000 on rs 24 +Ethernet186 186 Eth24/3 50000 on rs 24 +Ethernet187 187 Eth24/4 50000 on rs 24 +Ethernet188 188 Eth24/5 50000 on rs 24 +Ethernet189 189 Eth24/6 50000 on rs 24 +Ethernet190 190 Eth24/7 50000 on rs 24 +Ethernet191 191 Eth24/8 50000 on rs 24 +Ethernet192 192 Eth25/1 50000 on rs 25 +Ethernet193 193 Eth25/2 50000 on rs 25 +Ethernet194 194 Eth25/3 50000 on rs 25 +Ethernet195 195 Eth25/4 50000 on rs 25 +Ethernet196 196 Eth25/5 50000 on rs 25 +Ethernet197 197 Eth25/6 50000 on rs 25 +Ethernet198 198 Eth25/7 50000 on rs 25 +Ethernet199 199 Eth25/8 50000 on rs 25 +Ethernet200 200 Eth26/1 50000 on rs 26 +Ethernet201 201 Eth26/2 50000 on rs 26 +Ethernet202 202 Eth26/3 50000 on rs 26 +Ethernet203 203 Eth26/4 50000 on rs 26 +Ethernet204 204 Eth26/5 50000 on rs 26 +Ethernet205 205 Eth26/6 50000 on rs 26 +Ethernet206 206 Eth26/7 50000 on rs 26 +Ethernet207 207 Eth26/8 50000 on rs 26 +Ethernet208 208 Eth27/1 50000 on rs 27 +Ethernet209 209 Eth27/2 50000 on rs 27 +Ethernet210 210 Eth27/3 50000 on rs 27 +Ethernet211 211 Eth27/4 50000 on rs 27 +Ethernet212 212 Eth27/5 50000 on rs 27 +Ethernet213 213 Eth27/6 50000 on rs 27 +Ethernet214 214 Eth27/7 50000 on rs 27 +Ethernet215 215 Eth27/8 50000 on rs 27 +Ethernet216 216 Eth28/1 50000 on rs 28 +Ethernet217 217 Eth28/2 50000 on rs 28 +Ethernet218 218 Eth28/3 50000 on rs 28 +Ethernet219 219 Eth28/4 50000 on rs 28 +Ethernet220 220 Eth28/5 50000 on rs 28 +Ethernet221 221 Eth28/6 50000 on rs 28 +Ethernet222 222 Eth28/7 50000 on rs 28 +Ethernet223 223 Eth28/8 50000 on rs 28 +Ethernet224 224 Eth29/1 50000 on rs 29 +Ethernet225 225 Eth29/2 50000 on rs 29 +Ethernet226 226 Eth29/3 50000 on rs 29 +Ethernet227 227 Eth29/4 50000 on rs 29 +Ethernet228 228 Eth29/5 50000 on rs 29 +Ethernet229 229 Eth29/6 50000 on rs 29 +Ethernet230 230 Eth29/7 50000 on rs 29 +Ethernet231 231 Eth29/8 50000 on rs 29 +Ethernet232 232 Eth30/1 50000 on rs 30 +Ethernet233 233 Eth30/2 50000 on rs 30 +Ethernet234 234 Eth30/3 50000 on rs 30 +Ethernet235 235 Eth30/4 50000 on rs 30 +Ethernet236 236 Eth30/5 50000 on rs 30 +Ethernet237 237 Eth30/6 50000 on rs 30 +Ethernet238 238 Eth30/7 50000 on rs 30 +Ethernet239 239 Eth30/8 50000 on rs 30 +Ethernet240 240 Eth31/1 50000 on rs 31 +Ethernet241 241 Eth31/2 50000 on rs 31 +Ethernet242 242 Eth31/3 50000 on rs 31 +Ethernet243 243 Eth31/4 50000 on rs 31 +Ethernet244 244 Eth31/5 50000 on rs 31 +Ethernet245 245 Eth31/6 50000 on rs 31 +Ethernet246 246 Eth31/7 50000 on rs 31 +Ethernet247 247 Eth31/8 50000 on rs 31 +Ethernet248 248 Eth32/1 50000 on rs 32 +Ethernet249 249 Eth32/2 50000 on rs 32 +Ethernet250 250 Eth32/3 50000 on rs 32 +Ethernet251 251 Eth32/4 50000 on rs 32 +Ethernet252 252 Eth32/5 50000 on rs 32 +Ethernet253 253 Eth32/6 50000 on rs 32 +Ethernet254 254 Eth32/7 50000 on rs 32 +Ethernet255 255 Eth32/8 50000 on rs 32 +Ethernet256 256 Eth33 10000 off none 33 diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.md5 index fc1b8e224ee0..f219403d1571 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -bfcdbba53aa3d422d93b9d900c305516 \ No newline at end of file +58815c76ce3a808f7d07e5506abd6b89 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.xml index 6bc7a71b1e7b..5626a673e5b5 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-Board-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -744,6 +704,7 @@ lowercase characters. NA + false @@ -759,6 +720,7 @@ lowercase characters. NA + false @@ -774,6 +736,7 @@ lowercase characters. NA + false @@ -809,6 +772,7 @@ lowercase characters. NA + @@ -828,6 +792,7 @@ lowercase characters. NA + @@ -847,6 +812,7 @@ lowercase characters. NA + @@ -886,6 +852,7 @@ lowercase characters. NA + @@ -905,6 +872,7 @@ lowercase characters. NA + @@ -924,6 +892,7 @@ lowercase characters. NA + @@ -963,6 +932,7 @@ lowercase characters. NA + @@ -982,6 +952,7 @@ lowercase characters. NA + @@ -1001,6 +972,7 @@ lowercase characters. NA + @@ -1040,6 +1012,7 @@ lowercase characters. NA + @@ -1059,6 +1032,7 @@ lowercase characters. NA + @@ -1078,6 +1052,7 @@ lowercase characters. NA + @@ -1117,6 +1092,7 @@ lowercase characters. NA + @@ -1136,6 +1112,7 @@ lowercase characters. NA + @@ -1155,6 +1132,7 @@ lowercase characters. NA + @@ -1194,6 +1172,7 @@ lowercase characters. NA + @@ -1213,6 +1192,7 @@ lowercase characters. NA + @@ -1232,6 +1212,7 @@ lowercase characters. NA + @@ -1271,6 +1252,7 @@ lowercase characters. NA + @@ -1290,6 +1272,7 @@ lowercase characters. NA + @@ -1309,6 +1292,7 @@ lowercase characters. NA + @@ -1348,6 +1332,7 @@ lowercase characters. NA + @@ -1367,6 +1352,7 @@ lowercase characters. NA + @@ -1386,6 +1372,7 @@ lowercase characters. NA + @@ -1425,6 +1412,7 @@ lowercase characters. NA + @@ -1444,6 +1432,7 @@ lowercase characters. NA + @@ -1463,6 +1452,7 @@ lowercase characters. NA + @@ -1502,6 +1492,7 @@ lowercase characters. NA + @@ -1521,6 +1512,7 @@ lowercase characters. NA + @@ -1540,6 +1532,7 @@ lowercase characters. NA + @@ -1579,6 +1572,7 @@ lowercase characters. NA + @@ -1598,6 +1592,7 @@ lowercase characters. NA + @@ -1617,6 +1612,7 @@ lowercase characters. NA + @@ -1796,6 +1792,7 @@ lowercase characters. NA + 2 diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.md5 index 80f5a48191a5..b62d25b1f71f 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -bae90780b221c3059c83112fab4abca5 \ No newline at end of file +5b3a182e8bfc7086167b9edb02bbd616 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.xml index 796023cd7a37..9ecfb8501861 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-L1-F12_8T-48x25G-8x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,342 +718,399 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 100GR4 + false 53 AVAGO profile_default 100GR4 + false 54 AVAGO profile_default 100GR4 + false 55 AVAGO profile_default 100GR4 + false 56 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.md5 index 3c28079976c6..93d1496daaae 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -1ed6046358d99524cdf9cd9e136a0efa \ No newline at end of file +5f128393d356e6fe5711e164144b8fc7 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.xml index e3239589f006..b82d8246265d 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/ASK-PP-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.md5 index c01137b77a96..5f7430881bc6 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -68eb84de73105b7ea023989d8e8ebd13 \ No newline at end of file +ad10411677df3547c2be2293a959cc12 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.xml index 7039fa0dafda..f900f8301852 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/SAI-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -462,6 +492,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t0.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t1.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/FC48x25G8x100GR4/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.md5 index fc1b8e224ee0..f219403d1571 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -bfcdbba53aa3d422d93b9d900c305516 \ No newline at end of file +58815c76ce3a808f7d07e5506abd6b89 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.xml index 6bc7a71b1e7b..5626a673e5b5 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-Board-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -149,95 +149,45 @@ 0 - alaska-88E1543 - Specifies PHY identifier 88E1543, used for Combo ports. + alaska-88E1680 + Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. 1 - alaska-88E1545 - Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support. + alaska-88E1780 + Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy +Efficient Ethernet Transceiver 2 - alaska-88E1680 - Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G. + alaska-88E2540 + Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet +Transceiver with IEEE 1588v2 PTP Support 3 - alaska-88E151X - Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber). + alaska-88E2580 + Specifies PHY identifier 88E2580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 4 - alaska-88E3140 - Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. -Uses with FW SolarFlare next generation. + alaska-88E2780 + Specifies PHY identifier 88E2780, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 5 - alaska-88E3240 - Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. -Uses with FW, SolarFlare next generation. + alaska-MVCUE1786 + Specifies PHY identifier alaska V MV-CUE 1786, Octal 100/1000BASE-T Ethernet Transceiver +with IEEE 1588v2 PTP Support 6 - alaska-88E3680 - Specifies PHY identifier 88E3680, used for Octal Copper 100M. - 7 - - - alaska-88E3220 - Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. -Uses FW, SolarFlare next generation. - 8 - - - alaska-88E1680L - Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G. - 9 - - - alaska-88E33X0 - Specifies PHY identifier 88E33X0, used for MGIG Combo. - 10 - - - alaska-88E1548 - Specifies PHY identifier 88E1548, used for Fiber GE. - 11 - - - alaska-88E20X0 - Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 12 - - - alaska-88E1512 - Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G. - 13 - - - alaska-88E2180 - Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G. - 14 - - - alaska-88E1780 - Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy + alaska-88E1781 + Specifies PHY identifier 88E1781, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver - 15 - - - alaska-88E2540 - Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet -Transceiver with IEEE 1588v2 PTP Support - 16 - - - alaska-88E2580 - Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver -with IEEE 1588v2 PTP Support - 17 + 7 @@ -569,15 +519,6 @@ with IEEE 1588v2 PTP Support 0 1 - - led-stream-force-data-type - string - A hexadecimal string with octets represented as hex digits -separated by colons. The canonical representation uses -lowercase characters. - 3 - 11 - bit-type uint32 @@ -698,6 +639,25 @@ lowercase characters. FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + mpp-num-type + uint8 + Specifies the MPP pin number. + 0 + 63 + + + mpp-select-type + uint8 + Specifies the MPP pin value. + 0 + 15 ASIC_Falcon @@ -744,6 +704,7 @@ lowercase characters. NA + false @@ -759,6 +720,7 @@ lowercase characters. NA + false @@ -774,6 +736,7 @@ lowercase characters. NA + false @@ -809,6 +772,7 @@ lowercase characters. NA + @@ -828,6 +792,7 @@ lowercase characters. NA + @@ -847,6 +812,7 @@ lowercase characters. NA + @@ -886,6 +852,7 @@ lowercase characters. NA + @@ -905,6 +872,7 @@ lowercase characters. NA + @@ -924,6 +892,7 @@ lowercase characters. NA + @@ -963,6 +932,7 @@ lowercase characters. NA + @@ -982,6 +952,7 @@ lowercase characters. NA + @@ -1001,6 +972,7 @@ lowercase characters. NA + @@ -1040,6 +1012,7 @@ lowercase characters. NA + @@ -1059,6 +1032,7 @@ lowercase characters. NA + @@ -1078,6 +1052,7 @@ lowercase characters. NA + @@ -1117,6 +1092,7 @@ lowercase characters. NA + @@ -1136,6 +1112,7 @@ lowercase characters. NA + @@ -1155,6 +1132,7 @@ lowercase characters. NA + @@ -1194,6 +1172,7 @@ lowercase characters. NA + @@ -1213,6 +1192,7 @@ lowercase characters. NA + @@ -1232,6 +1212,7 @@ lowercase characters. NA + @@ -1271,6 +1252,7 @@ lowercase characters. NA + @@ -1290,6 +1272,7 @@ lowercase characters. NA + @@ -1309,6 +1292,7 @@ lowercase characters. NA + @@ -1348,6 +1332,7 @@ lowercase characters. NA + @@ -1367,6 +1352,7 @@ lowercase characters. NA + @@ -1386,6 +1372,7 @@ lowercase characters. NA + @@ -1425,6 +1412,7 @@ lowercase characters. NA + @@ -1444,6 +1432,7 @@ lowercase characters. NA + @@ -1463,6 +1452,7 @@ lowercase characters. NA + @@ -1502,6 +1492,7 @@ lowercase characters. NA + @@ -1521,6 +1512,7 @@ lowercase characters. NA + @@ -1540,6 +1532,7 @@ lowercase characters. NA + @@ -1579,6 +1572,7 @@ lowercase characters. NA + @@ -1598,6 +1592,7 @@ lowercase characters. NA + @@ -1617,6 +1612,7 @@ lowercase characters. NA + @@ -1796,6 +1792,7 @@ lowercase characters. NA + 2 diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.md5 index 80f5a48191a5..b62d25b1f71f 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -bae90780b221c3059c83112fab4abca5 \ No newline at end of file +5b3a182e8bfc7086167b9edb02bbd616 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.xml index 796023cd7a37..9ecfb8501861 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-L1-F12_8T-48x25G-8x100G.xml @@ -1,7 +1,32 @@ - + + + asic-type + enumeration + ASIC Type + + ASIC_AC3X + AC3X + 0 + + + ASIC_AC5X + AC5X + 1 + + + ASIC_Falcon + FALCON + 2 + + + ASIC_AC5P + AC5P + 3 + + interface-mode-type enumeration @@ -235,489 +260,274 @@ 1023 - tx-param-type + rx-param-type enumeration - Tx parameter type + Rx parameter type - atten - atten + dataRate + dataRate 0 - post - post + res1Sel + res1Sel 1 - pre - pre + res2Sel + res2Sel 2 - pre2 - pre2 + cap1Sel + cap1Sel 3 - pre3 - pre3 + cap2Sel + cap2Sel 4 - peak - peak + minCap + minCap 5 - main - main + minCapN + minCapN 6 - txAmpAdjEn - txAmpAdjEn - 7 - - - emph0 - emph0 - 8 - - - emph1 - emph1 - 9 - - - txAmpShft - txAmpShft - 10 - - - txEmphEn - txEmphEn - 11 - - - txEmphEn1 - txEmphEn1 - 12 - - - txAmpAdj - txAmpAdj - 13 - - - slewCtrlEn - slewCtrlEn - 14 - - - slewRate - slewRate - 15 - - - - rx-param-type - enumeration - Rx parameter type - - sqlch - sqlch - 0 - - - DC - DC - 1 - - - LF - LF - 2 - - - HF - HF - 3 - - - gainShape1 - gainShape1 - 4 - - - gainShape2 - gainShape2 - 5 - - - shortChannelEn - shortChannelEn + sumfBoostTargetC0 + sumfBoostTargetC0 7 - bfLf - bfLf + sumfBoostTargetC1 + sumfBoostTargetC1 8 - bfHf - bfHf + sumfBoostTargetC2 + sumfBoostTargetC2 9 - minLf - minLf + midpointPhaseOs0 + midpointPhaseOs0 10 - maxLf - maxLf + midpointPhaseOs1 + midpointPhaseOs1 11 - minHf - minHf + midpointPhaseOs2 + midpointPhaseOs2 12 - maxHf - maxHf + selmufi + selmufi 13 - minPre1 - minPre1 + selmuff + selmuff 14 - maxPre1 - maxPre1 + selmupi + selmupi 15 - minPre2 - minPre2 + selmupf + selmupf 16 - maxPre2 - + midpointLargeThresKLane + midpointLargeThresKLane 17 - minPost - minPost + midpointSmallThresKLane + midpointSmallThresKLane 18 - maxPost - maxPost + midpointLargeThresCLane + midpointLargeThresCLane 19 - squelch - squelch + midpointSmallThresCLane + midpointSmallThresCLane 20 - termination - termination - 27 - - - coldEnvelope - coldEnvelope - 35 - - - hotEnvelope - hotEnvelope - 36 - - - dcGain - dcGain - 37 - - - bandWidth - bandWidth - 38 - - - dfe - dfe - 39 + inxSumfMidpointAdatptiveEnLane + inxSumfMidpointAdatptiveEnLane + 21 - ffeR - ffeR - 40 + dfeResF0aHighThresInitLane + dfeResF0aHighThresInitLane + 22 - ffeC - ffeC - 41 + dfeResF0aHighThresEndLane + dfeResF0aHighThresEndLane + 23 - sampler - sampler - 42 + squelch + squelch + 24 align90 align90 - 43 - - - ffeS - ffeS - 44 - - - resSel - resSel - 45 - - - resShift - resShift - 46 - - - capSel - capSel - 47 - - - ffeSettingForce - ffeSettingForce - 48 - - - adaptedResSel - adaptedResSel - 49 - - - adaptedCapSel - adaptedCapSel - 50 - - - selmufi - selmufi - 51 - - - selmuff - selmuff - 52 - - - selmupi - selmupi - 53 + 25 - selmupf - selmupf - 54 + sampler + sampler + 26 slewRateCtrl0 slewRateCtrl0 - 55 + 27 slewRateCtrl1 slewRateCtrl1 - 56 + 28 EO EO - 57 - - - dataRate - dataRate - 58 - - - res1Sel - res1Sel - 59 - - - res2Sel - res2Sel - 60 - - - cap1Sel - cap1Sel - 61 - - - cap2Sel - cap2Sel - 62 - - - midpointLargeThresKLane - midpointLargeThresKLane - 63 - - - midpointSmallThresKLane - midpointSmallThresKLane - 64 + 29 - midpointLargeThresCLane - midpointLargeThresCLane - 65 + minCap1 + minCap1 + 30 - midpointSmallThresCLane - midpointSmallThresCLane - 66 + maxCap1 + maxCap1 + 31 - dfeResF0aHighThresInitLane - dfeResF0aHighThresInitLane - 67 + minRes1 + minRes1 + 32 - dfeResF0aHighThresEndLane - dfeResF0aHighThresEndLane - 68 + maxRes1 + maxRes1 + 33 current1Sel current1Sel - 69 + 34 rl1Sel rl1Sel - 70 + 35 rl1Extra rl1Extra - 71 + 36 cl1Ctrl cl1Ctrl - 72 + 37 enMidFreq enMidFreq - 73 + 38 cs1Mid cs1Mid - 74 + 39 rs1Mid rs1Mid - 75 + 40 rfCtrl rfCtrl - 76 + 41 rl1TiaSel rl1TiaSel - 77 + 42 rl1TiaExtra rl1TiaExtra - 78 + 43 hpfRSel1st hpfRSel1st - 79 + 44 current1TiaSel current1TiaSel - 80 + 45 rl2Tune rl2Tune - 81 + 46 rl2Sel rl2Sel - 82 + 47 rs2Sel rs2Sel - 83 + 48 current2Sel current2Sel - 84 + 49 hpfRsel2nd hpfRsel2nd - 85 - - - BW - BW - 86 - - - dfeGAIN - dfeGAIN - 87 - - - dfeGAIN2 - dfeGAIN2 - 88 - - - pre1 - pre1 - 89 - - - pre2 - pre2 - 90 + 50 - post1 - post1 - 91 + align90AnaReg + align90AnaReg + 51 boolean-type enumeration - Boolean 32 bits , due to bing endian + Boolean 32 bits , due to big endian false False @@ -765,29 +575,22 @@ - uint8-type - uint32 - Uint8 32 bits , due to bing endian - 0 - 255 - - - serdes-termination-type + phy-serdes-type enumeration - RX termination mode + Phy Serdes Type - GND - Enabled + NA + No serdes 0 - VDD - Disabled + COMPHY + COMPHY 1 - FLOATING - RS FEC enabled + COMPHY_C28G + COMPHY_C28G 2 @@ -812,6 +615,7 @@ + ASIC_Falcon 100GR4 @@ -878,6 +682,10 @@ 10G enabled + + 1000BASE_X + 1G + CR 25G @@ -896,6 +704,12 @@ enabled enabled + + 1000BASE_X + 1G + disabled + disabled + @@ -904,342 +718,399 @@ AVAGO profile_default 25GR1 + false 1 AVAGO profile_default 25GR1 + false 2 AVAGO profile_default 25GR1 + false 3 AVAGO profile_default 25GR1 + false 4 AVAGO profile_default 25GR1 + false 5 AVAGO profile_default 25GR1 + false 6 AVAGO profile_default 25GR1 + false 7 AVAGO profile_default 25GR1 + false 8 AVAGO profile_default 25GR1 + false 9 AVAGO profile_default 25GR1 + false 10 AVAGO profile_default 25GR1 + false 11 AVAGO profile_default 25GR1 + false 12 AVAGO profile_default 25GR1 + false 13 AVAGO profile_default 25GR1 + false 14 AVAGO profile_default 25GR1 + false 15 AVAGO profile_default 25GR1 + false 16 AVAGO profile_default 25GR1 + false 17 AVAGO profile_default 25GR1 + false 18 AVAGO profile_default 25GR1 + false 19 AVAGO profile_default 25GR1 + false 20 AVAGO profile_default 25GR1 + false 21 AVAGO profile_default 25GR1 + false 22 AVAGO profile_default 25GR1 + false 23 AVAGO profile_default 25GR1 + false 24 AVAGO profile_default 25GR1 + false 25 AVAGO profile_default 25GR1 + false 26 AVAGO profile_default 25GR1 + false 27 AVAGO profile_default 25GR1 + false 28 AVAGO profile_default 25GR1 + false 29 AVAGO profile_default 25GR1 + false 30 AVAGO profile_default 25GR1 + false 31 AVAGO profile_default 25GR1 + false 32 AVAGO profile_default 25GR1 + false 33 AVAGO profile_default 25GR1 + false 34 AVAGO profile_default 25GR1 + false 35 AVAGO profile_default 25GR1 + false 36 AVAGO profile_default 25GR1 + false 37 AVAGO profile_default 25GR1 + false 38 AVAGO profile_default 25GR1 + false 39 AVAGO profile_default 25GR1 + false 40 AVAGO profile_default 25GR1 + false 41 AVAGO profile_default 25GR1 + false 42 AVAGO profile_default 25GR1 + false 43 AVAGO profile_default 25GR1 + false 44 AVAGO profile_default 25GR1 + false 45 AVAGO profile_default 25GR1 + false 46 AVAGO profile_default 25GR1 + false 47 AVAGO profile_default 25GR1 + false 48 AVAGO profile_default 100GR4 + false 49 AVAGO profile_default 100GR4 + false 50 AVAGO profile_default 100GR4 + false 51 AVAGO profile_default 100GR4 + false 52 AVAGO profile_default 100GR4 + false 53 AVAGO profile_default 100GR4 + false 54 AVAGO profile_default 100GR4 + false 55 AVAGO profile_default 100GR4 + false 56 AVAGO profile_default 10GR1Fix + false diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.md5 index 3c28079976c6..93d1496daaae 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -1ed6046358d99524cdf9cd9e136a0efa \ No newline at end of file +5f128393d356e6fe5711e164144b8fc7 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.xml index e3239589f006..b82d8246265d 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/ASK-PP-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -378,7 +378,7 @@ number-physical-port-type enumeration - AC3X/AC5X 128, falcon 64, 128, 256, 512, 1024 + AC3X/AC5X/AC5P 128, falcon 64, 128, 256, 512, 1024 no-ports no-ports @@ -538,6 +538,11 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + ASIC_Falcon diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.md5 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.md5 index c01137b77a96..5f7430881bc6 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.md5 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.md5 @@ -1 +1 @@ -68eb84de73105b7ea023989d8e8ebd13 \ No newline at end of file +ad10411677df3547c2be2293a959cc12 \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.xml b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.xml index 7039fa0dafda..f900f8301852 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.xml +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/SAI-F12_8T-48x25G-8x100G.xml @@ -1,5 +1,5 @@ - + @@ -50,10 +50,20 @@ Router In Drop Counters track Route Black Hole Packets 1 + + + Feature-enable + enumeration + Feature Enabled/Disabled - IN_DROP_ANY - Router In Drop Counters track either TTL & Hop Limit Exceeded or Route Black Hole Packets - 2 + Disabled + Disabled + 0 + + + Enabled + Enabled + 1 @@ -156,6 +166,26 @@ FALCON 2 + + ASIC_AC5P + AC5P + 3 + + + + boolean-type + enumeration + Boolean 32 bits , due to bing endian + + false + False + 0 + + + true + True + 1 + ASIC_Falcon @@ -462,6 +492,13 @@ 0 + + Enabled + Enabled + + + Enabled + SAI_LOG_SYSLOG diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers.json.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers.json.j2 index a9a01d707ebf..0b1cb2c541b6 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers.json.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers.json.j2 @@ -1 +1,2 @@ +{%- set default_topo = 't1' %} {%- include 'buffers_config.j2' %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t0.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t0.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t0.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t0.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t1.j2 b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t1.j2 index bf0b552cbd02..4d95dbdc81f2 100644 --- a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t1.j2 +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/buffers_defaults_t1.j2 @@ -3,34 +3,47 @@ {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "23000000", - "type": "ingress", - "mode": "dynamic" + "ingress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "ingress" + }, + "ingress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "ingress" }, - "egress_pool": { - "size": "23000000", - "type": "egress", - "mode": "static" + "egress_pool1": { + "mode": "dynamic", + "size": "22000000", + "type": "egress" + }, + "egress_pool2": { + "mode": "dynamic", + "size": "1000000", + "type": "egress" } }, "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, "egress_lossless_profile": { - "pool":"egress_pool", - "mode": "static", - "size":"340000", - "static_th":"0" + "pool": "egress_pool1", + "size": "0", + "dynamic_th": "1" }, "egress_lossy_profile": { - "pool":"egress_pool", - "size":"0", - "mode": "dynamic", - "dynamic_th":"3" + "pool": "egress_pool2", + "size": "0", + "dynamic_th": "1" + }, + "ingress_lossless_profile": { + "pool": "ingress_pool1", + "size": "0", + "dynamic_th": "-3" + }, + "ingress_lossy_profile": { + "pool": "ingress_pool2", + "size": "0", + "dynamic_th": "-3" } }, {%- endmacro %} diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/create_only_config_db_buffers.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/create_only_config_db_buffers.json new file mode 100644 index 000000000000..8bea3894c083 --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/db98cx8580_32cd/create_only_config_db_buffers.json @@ -0,0 +1,7 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "create_only_config_db_buffers": "true" + } + } +} \ No newline at end of file diff --git a/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/platform.json b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/platform.json new file mode 100644 index 000000000000..47c75f4c47db --- /dev/null +++ b/device/marvell/x86_64-marvell_db98cx8580_32cd-r0/platform.json @@ -0,0 +1,351 @@ +{ + "interfaces": { + "Ethernet0": { + "breakout_modes": { + "1x400G": ["Eth1"], + "2x200G[100G]": ["Eth1/1", "Eth1/2"], + "4x100G": ["Eth1/1", "Eth1/2", "Eth1/3", "Eth1/4"] + }, + "index": "1,1,1,1,1,1,1,1", + "lanes": "0,1,2,3,4,5,6,7" + }, + "Ethernet8": { + "breakout_modes": { + "1x400G": ["Eth2"], + "2x200G[100G]": ["Eth2/1", "Eth2/2"], + "4x100G": ["Eth2/1", "Eth2/2", "Eth2/3", "Eth2/4"] + }, + "index": "2,2,2,2,2,2,2,2", + "lanes": "8,9,10,11,12,13,14,15" + }, + "Ethernet16": { + "breakout_modes": { + "1x400G": ["Eth3"] + }, + "index": "3,3,3,3,3,3,3,3", + "lanes": "16,17,18,19,20,21,22,23" + }, + "Ethernet24": { + "breakout_modes": { + "1x400G": ["Eth4"] + }, + "index": "4,4,4,4,4,4,4,4", + "lanes": "24,25,26,27,28,29,30,31" + }, + "Ethernet32": { + "breakout_modes": { + "1x400G": ["Eth5"], + "2x200G[100G]": ["Eth5/1", "Eth5/2"], + "4x100G": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4"], + "4x25G(4)": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4"], + "8x50G[25G,10G,1G]": ["Eth5/1", "Eth5/2", "Eth5/3", "Eth5/4", "Eth5/5", "Eth5/6", "Eth5/7", "Eth5/8"] + }, + "index": "5,5,5,5,5,5,5,5", + "lanes": "32,33,34,35,36,37,38,39" + }, + "Ethernet40": { + "breakout_modes": { + "1x400G": ["Eth6"], + "2x200G[100G]": ["Eth6/1", "Eth6/2"], + "4x100G": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4"], + "4x25G(4)": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4"], + "8x50G[25G,10G,1G]": ["Eth6/1", "Eth6/2", "Eth6/3", "Eth6/4", "Eth6/5", "Eth6/6", "Eth6/7", "Eth6/8"] + }, + "index": "6,6,6,6,6,6,6,6", + "lanes": "40,41,42,43,44,45,46,47" + }, + "Ethernet48": { + "breakout_modes": { + "1x400G": ["Eth7"], + "2x200G[100G]": ["Eth7/1", "Eth7/2"], + "4x100G": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4"], + "4x25G(4)": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4"], + "8x50G[25G,10G,1G]": ["Eth7/1", "Eth7/2", "Eth7/3", "Eth7/4", "Eth7/5", "Eth7/6", "Eth7/7", "Eth7/8"] + }, + "index": "7,7,7,7,7,7,7,7", + "lanes": "48,49,50,51,52,53,54,55" + }, + "Ethernet56": { + "breakout_modes": { + "1x400G": ["Eth8"], + "2x200G[100G]": ["Eth8/1", "Eth8/2"], + "4x100G": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4"], + "4x25G(4)": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4"], + "8x50G[25G,10G,1G]": ["Eth8/1", "Eth8/2", "Eth8/3", "Eth8/4", "Eth8/5", "Eth8/6", "Eth8/7", "Eth8/8"] + }, + "index": "8,8,8,8,8,8,8,8", + "lanes": "56,57,58,59,60,61,62,63" + }, + "Ethernet64": { + "breakout_modes": { + "1x400G": ["Eth9"], + "2x200G[100G]": ["Eth9/1", "Eth9/2"], + "4x100G": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4"], + "4x25G(4)": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4"], + "8x50G[25G,10G,1G]": ["Eth9/1", "Eth9/2", "Eth9/3", "Eth9/4", "Eth9/5", "Eth9/6", "Eth9/7", "Eth9/8"] + }, + "index": "9,9,9,9,9,9,9,9", + "lanes": "64,65,66,67,68,69,70,71" + }, + "Ethernet72": { + "breakout_modes": { + "1x400G": ["Eth10"], + "2x200G[100G]": ["Eth10/1", "Eth10/2"], + "4x100G": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4"], + "4x25G(4)": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4"], + "8x50G[25G,10G,1G]": ["Eth10/1", "Eth10/2", "Eth10/3", "Eth10/4", "Eth10/5", "Eth10/6", "Eth10/7", "Eth10/8"] + }, + "index": "10,10,10,10,10,10,10,10", + "lanes": "72,73,74,75,76,77,78,79" + }, + "Ethernet80": { + "breakout_modes": { + "1x400G": ["Eth11"], + "2x200G[100G]": ["Eth11/1", "Eth11/2"], + "4x100G": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4"], + "4x25G(4)": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4"], + "8x50G[25G,10G,1G]": ["Eth11/1", "Eth11/2", "Eth11/3", "Eth11/4", "Eth11/5", "Eth11/6", "Eth11/7", "Eth11/8"] + }, + "index": "11,11,11,11,11,11,11,11", + "lanes": "80,81,82,83,84,85,86,87" + }, + "Ethernet88": { + "breakout_modes": { + "1x400G": ["Eth12"], + "2x200G[100G]": ["Eth12/1", "Eth12/2"], + "4x100G": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4"], + "4x25G(4)": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4"], + "8x50G[25G,10G,1G]": ["Eth12/1", "Eth12/2", "Eth12/3", "Eth12/4", "Eth12/5", "Eth12/6", "Eth12/7", "Eth12/8"] + }, + "index": "12,12,12,12,12,12,12,12", + "lanes": "88,89,90,91,92,93,94,95" + }, + "Ethernet96": { + "breakout_modes": { + "1x400G": ["Eth13"], + "2x200G[100G]": ["Eth13/1", "Eth13/2"], + "4x100G": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4"], + "4x25G(4)": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4"], + "8x50G[25G,10G,1G]": ["Eth13/1", "Eth13/2", "Eth13/3", "Eth13/4", "Eth13/5", "Eth13/6", "Eth13/7", "Eth13/8"] + }, + "index": "13,13,13,13,13,13,13,13", + "lanes": "96,97,98,99,100,101,102,103" + }, + "Ethernet104": { + "breakout_modes": { + "1x400G": ["Eth14"], + "2x200G[100G]": ["Eth14/1", "Eth14/2"], + "4x100G": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4"], + "4x25G(4)": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4"], + "8x50G[25G,10G,1G]": ["Eth14/1", "Eth14/2", "Eth14/3", "Eth14/4", "Eth14/5", "Eth14/6", "Eth14/7", "Eth14/8"] + }, + "index": "14,14,14,14,14,14,14,14", + "lanes": "104,105,106,107,108,109,110,111" + }, + "Ethernet112": { + "breakout_modes": { + "1x400G": ["Eth15"], + "2x200G[100G]": ["Eth15/1", "Eth15/2"], + "4x100G": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4"], + "4x25G(4)": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4"], + "8x50G[25G,10G,1G]": ["Eth15/1", "Eth15/2", "Eth15/3", "Eth15/4", "Eth15/5", "Eth15/6", "Eth15/7", "Eth15/8"] + }, + "index": "15,15,15,15,15,15,15,15", + "lanes": "112,113,114,115,116,117,118,119" + }, + "Ethernet120": { + "breakout_modes": { + "1x400G": ["Eth16"], + "2x200G[100G]": ["Eth16/1", "Eth16/2"], + "4x100G": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4"], + "4x25G(4)": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4"], + "8x50G[25G,10G,1G]": ["Eth16/1", "Eth16/2", "Eth16/3", "Eth16/4", "Eth16/5", "Eth16/6", "Eth16/7", "Eth16/8"] + }, + "index": "16,16,16,16,16,16,16,16", + "lanes": "120,121,122,123,124,125,126,127" + }, + "Ethernet128": { + "breakout_modes": { + "1x400G": ["Eth17"], + "2x200G[100G]": ["Eth17/1", "Eth17/2"], + "4x100G": ["Eth17/1", "Eth17/2", "Eth17/3", "Eth17/4"], + "4x25G(4)": ["Eth17/1", "Eth17/2", "Eth17/3", "Eth17/4"], + "8x50G[25G,10G,1G]": ["Eth17/1", "Eth17/2", "Eth17/3", "Eth17/4", "Eth17/5", "Eth17/6", "Eth17/7", "Eth17/8"] + }, + "index": "17,17,17,17,17,17,17,17", + "lanes": "128,129,130,131,132,133,134,135" + }, + "Ethernet136": { + "breakout_modes": { + "1x400G": ["Eth18"], + "2x200G[100G]": ["Eth18/1", "Eth18/2"], + "4x100G": ["Eth18/1", "Eth18/2", "Eth18/3", "Eth18/4"], + "4x25G(4)": ["Eth18/1", "Eth18/2", "Eth18/3", "Eth18/4"], + "8x50G[25G,10G,1G]": ["Eth18/1", "Eth18/2", "Eth18/3", "Eth18/4", "Eth18/5", "Eth18/6", "Eth18/7", "Eth18/8"] + }, + "index": "18,18,18,18,18,18,18,18", + "lanes": "136,137,138,139,140,141,142,143" + }, + "Ethernet144": { + "breakout_modes": { + "1x400G": ["Eth19"], + "2x200G[100G]": ["Eth19/1", "Eth19/2"], + "4x100G": ["Eth19/1", "Eth19/2", "Eth19/3", "Eth19/4"], + "4x25G(4)": ["Eth19/1", "Eth19/2", "Eth19/3", "Eth19/4"], + "8x50G[25G,10G,1G]": ["Eth19/1", "Eth19/2", "Eth19/3", "Eth19/4", "Eth19/5", "Eth19/6", "Eth19/7", "Eth19/8"] + }, + "index": "19,19,19,19,19,19,19,19", + "lanes": "144,145,146,147,148,149,150,151" + }, + "Ethernet152": { + "breakout_modes": { + "1x400G": ["Eth20"], + "2x200G[100G]": ["Eth20/1", "Eth20/2"], + "4x100G": ["Eth20/1", "Eth20/2", "Eth20/3", "Eth20/4"], + "4x25G(4)": ["Eth20/1", "Eth20/2", "Eth20/3", "Eth20/4"], + "8x50G[25G,10G,1G]": ["Eth20/1", "Eth20/2", "Eth20/3", "Eth20/4", "Eth20/5", "Eth20/6", "Eth20/7", "Eth20/8"] + }, + "index": "20,20,20,20,20,20,20,20", + "lanes": "152,153,154,155,156,157,158,159" + }, + "Ethernet160": { + "breakout_modes": { + "1x400G": ["Eth21"], + "2x200G[100G]": ["Eth21/1", "Eth21/2"], + "4x100G": ["Eth21/1", "Eth21/2", "Eth21/3", "Eth21/4"], + "4x25G(4)": ["Eth21/1", "Eth21/2", "Eth21/3", "Eth21/4"], + "8x50G[25G,10G,1G]": ["Eth21/1", "Eth21/2", "Eth21/3", "Eth21/4", "Eth21/5", "Eth21/6", "Eth21/7", "Eth21/8"] + }, + "index": "21,21,21,21,21,21,21,21", + "lanes": "160,161,162,163,164,165,166,167" + }, + "Ethernet168": { + "breakout_modes": { + "1x400G": ["Eth22"], + "2x200G[100G]": ["Eth22/1", "Eth22/2"], + "4x100G": ["Eth22/1", "Eth22/2", "Eth22/3", "Eth22/4"], + "4x25G(4)": ["Eth22/1", "Eth22/2", "Eth22/3", "Eth22/4"], + "8x50G[25G,10G,1G]": ["Eth22/1", "Eth22/2", "Eth22/3", "Eth22/4", "Eth22/5", "Eth22/6", "Eth22/7", "Eth22/8"] + }, + "index": "22,22,22,22,22,22,22,22", + "lanes": "168,169,170,171,172,173,174,175" + }, + "Ethernet176": { + "breakout_modes": { + "1x400G": ["Eth23"], + "2x200G[100G]": ["Eth23/1", "Eth23/2"], + "4x100G": ["Eth23/1", "Eth23/2", "Eth23/3", "Eth23/4"], + "4x25G(4)": ["Eth23/1", "Eth23/2", "Eth23/3", "Eth23/4"], + "8x50G[25G,10G,1G]": ["Eth23/1", "Eth23/2", "Eth23/3", "Eth23/4", "Eth23/5", "Eth23/6", "Eth23/7", "Eth23/8"] + }, + "index": "23,23,23,23,23,23,23,23", + "lanes": "176,177,178,179,180,181,182,183" + }, + "Ethernet184": { + "breakout_modes": { + "1x400G": ["Eth24"], + "2x200G[100G]": ["Eth24/1", "Eth24/2"], + "4x100G": ["Eth24/1", "Eth24/2", "Eth24/3", "Eth24/4"], + "4x25G(4)": ["Eth24/1", "Eth24/2", "Eth24/3", "Eth24/4"], + "8x50G[25G,10G,1G]": ["Eth24/1", "Eth24/2", "Eth24/3", "Eth24/4", "Eth24/5", "Eth24/6", "Eth24/7", "Eth24/8"] + }, + "index": "24,24,24,24,24,24,24,24", + "lanes": "184,185,186,187,188,189,190,191" + }, + "Ethernet192": { + "breakout_modes": { + "1x400G": ["Eth25"], + "2x200G[100G]": ["Eth25/1", "Eth25/2"], + "4x100G": ["Eth25/1", "Eth25/2", "Eth25/3", "Eth25/4"], + "4x25G(4)": ["Eth25/1", "Eth25/2", "Eth25/3", "Eth25/4"], + "8x50G[25G,10G,1G]": ["Eth25/1", "Eth25/2", "Eth25/3", "Eth25/4", "Eth25/5", "Eth25/6", "Eth25/7", "Eth25/8"] + }, + "index": "25,25,25,25,25,25,25,25", + "lanes": "192,193,194,195,196,197,198,199" + }, + "Ethernet200": { + "breakout_modes": { + "1x400G": ["Eth26"], + "2x200G[100G]": ["Eth26/1", "Eth26/2"], + "4x100G": ["Eth26/1", "Eth26/2", "Eth26/3", "Eth26/4"], + "4x25G(4)": ["Eth26/1", "Eth26/2", "Eth26/3", "Eth26/4"], + "8x50G[25G,10G,1G]": ["Eth26/1", "Eth26/2", "Eth26/3", "Eth26/4", "Eth26/5", "Eth26/6", "Eth26/7", "Eth26/8"] + }, + "index": "26,26,26,26,26,26,26,26", + "lanes": "200,201,202,203,204,205,206,207" + }, + "Ethernet208": { + "breakout_modes": { + "1x400G": ["Eth27"], + "2x200G[100G]": ["Eth27/1", "Eth27/2"], + "4x100G": ["Eth27/1", "Eth27/2", "Eth27/3", "Eth27/4"], + "4x25G(4)": ["Eth27/1", "Eth27/2", "Eth27/3", "Eth27/4"], + "8x50G[25G,10G,1G]": ["Eth27/1", "Eth27/2", "Eth27/3", "Eth27/4", "Eth27/5", "Eth27/6", "Eth27/7", "Eth27/8"] + }, + "index": "27,27,27,27,27,27,27,27", + "lanes": "208,209,210,211,212,213,214,215" + }, + "Ethernet216": { + "breakout_modes": { + "1x400G": ["Eth28"], + "2x200G[100G]": ["Eth28/1", "Eth28/2"], + "4x100G": ["Eth28/1", "Eth28/2", "Eth28/3", "Eth28/4"], + "4x25G(4)": ["Eth28/1", "Eth28/2", "Eth28/3", "Eth28/4"], + "8x50G[25G,10G,1G]": ["Eth28/1", "Eth28/2", "Eth28/3", "Eth28/4", "Eth28/5", "Eth28/6", "Eth28/7", "Eth28/8"] + }, + "index": "28,28,28,28,28,28,28,28", + "lanes": "216,217,218,219,220,221,222,223" + }, + "Ethernet224": { + "breakout_modes": { + "1x400G": ["Eth29"], + "2x200G[100G]": ["Eth29/1", "Eth29/2"], + "4x100G": ["Eth29/1", "Eth29/2", "Eth29/3", "Eth29/4"], + "4x25G(4)": ["Eth29/1", "Eth29/2", "Eth29/3", "Eth29/4"], + "8x50G[25G,10G,1G]": ["Eth29/1", "Eth29/2", "Eth29/3", "Eth29/4", "Eth29/5", "Eth29/6", "Eth29/7", "Eth29/8"] + }, + "index": "29,29,29,29,29,29,29,29", + "lanes": "224,225,226,227,228,229,230,231" + }, + "Ethernet232": { + "breakout_modes": { + "1x400G": ["Eth30"], + "2x200G[100G]": ["Eth30/1", "Eth30/2"], + "4x100G": ["Eth30/1", "Eth30/2", "Eth30/3", "Eth30/4"], + "4x25G(4)": ["Eth30/1", "Eth30/2", "Eth30/3", "Eth30/4"], + "8x50G[25G,10G,1G]": ["Eth30/1", "Eth30/2", "Eth30/3", "Eth30/4", "Eth30/5", "Eth30/6", "Eth30/7", "Eth30/8"] + }, + "index": "30,30,30,30,30,30,30,30", + "lanes": "232,233,234,235,236,237,238,239" + }, + "Ethernet240": { + "breakout_modes": { + "1x400G": ["Eth31"], + "2x200G[100G]": ["Eth31/1", "Eth31/2"], + "4x100G": ["Eth31/1", "Eth31/2", "Eth31/3", "Eth31/4"], + "4x25G(4)": ["Eth31/1", "Eth31/2", "Eth31/3", "Eth31/4"], + "8x50G[25G,10G,1G]": ["Eth31/1", "Eth31/2", "Eth31/3", "Eth31/4", "Eth31/5", "Eth31/6", "Eth31/7", "Eth31/8"] + }, + "index": "31,31,31,31,31,31,31,31", + "lanes": "240,241,242,243,244,245,246,247" + }, + "Ethernet248": { + "breakout_modes": { + "1x400G": ["Eth32"], + "2x200G[100G]": ["Eth32/1", "Eth32/2"], + "4x100G": ["Eth32/1", "Eth32/2", "Eth32/3", "Eth32/4"], + "4x25G(4)": ["Eth32/1", "Eth32/2", "Eth32/3", "Eth32/4"], + "8x50G[25G,10G,1G]": ["Eth32/1", "Eth32/2", "Eth32/3", "Eth32/4", "Eth32/5", "Eth32/6", "Eth32/7", "Eth32/8"] + }, + "index": "32,32,32,32,32,32,32,32", + "lanes": "248,249,250,251,252,253,254,255" + }, + "Ethernet256":{ + "breakout_modes": { + "1x10G": ["Eth33"] + }, + "index": "33", + "lanes": "256" + } + } +} diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/port_config.ini b/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/port_config.ini deleted file mode 100755 index 74865956f61b..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/port_config.ini +++ /dev/null @@ -1,55 +0,0 @@ -# name lanes -Ethernet0 0 -Ethernet1 1 -Ethernet2 2 -Ethernet3 3 -Ethernet4 4 -Ethernet5 5 -Ethernet6 6 -Ethernet7 7 -Ethernet8 8 -Ethernet9 9 -Ethernet10 10 -Ethernet11 11 -Ethernet12 12 -Ethernet13 13 -Ethernet14 14 -Ethernet15 15 -Ethernet16 16 -Ethernet17 17 -Ethernet18 18 -Ethernet19 19 -Ethernet20 20 -Ethernet21 21 -Ethernet22 22 -Ethernet23 23 -Ethernet24 24 -Ethernet25 25 -Ethernet26 26 -Ethernet27 27 -Ethernet28 28 -Ethernet29 29 -Ethernet30 30 -Ethernet31 31 -Ethernet32 32 -Ethernet33 33 -Ethernet34 34 -Ethernet35 35 -Ethernet36 36 -Ethernet37 37 -Ethernet38 38 -Ethernet39 39 -Ethernet40 40 -Ethernet41 41 -Ethernet42 42 -Ethernet43 43 -Ethernet44 44 -Ethernet45 45 -Ethernet46 46 -Ethernet47 47 -Ethernet48 48 -Ethernet49 49 -Ethernet50 50 -Ethernet51 51 -Ethernet52 52 -Ethernet53 53 diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/sai.profile b/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/sai.profile deleted file mode 100755 index edba72ba4823..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/SLM5401-54x/sai.profile +++ /dev/null @@ -1,2 +0,0 @@ -mode=1 -hwId=slm5401-54x diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/default_sku b/device/marvell/x86_64-marvell_slm5401_54x-r0/default_sku deleted file mode 100644 index 8ace9a8abcef..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/default_sku +++ /dev/null @@ -1 +0,0 @@ -SLM5401-54x t1 diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/installer.conf b/device/marvell/x86_64-marvell_slm5401_54x-r0/installer.conf deleted file mode 100755 index 14404194ef53..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/installer.conf +++ /dev/null @@ -1,3 +0,0 @@ -CONSOLE_PORT=0x2f8 -CONSOLE_DEV=1 -CONSOLE_SPEED=115200 diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/platform_asic b/device/marvell/x86_64-marvell_slm5401_54x-r0/platform_asic deleted file mode 100644 index a554752878b7..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/platform_asic +++ /dev/null @@ -1 +0,0 @@ -marvell diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/eeprom.py b/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/eeprom.py deleted file mode 100755 index 951384d5e37d..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/eeprom.py +++ /dev/null @@ -1,23 +0,0 @@ -try: - import binascii - import time - import optparse - import warnings - import os - import sys - from sonic_eeprom import eeprom_base - from sonic_eeprom import eeprom_tlvinfo - import subprocess -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class board(eeprom_tlvinfo.TlvInfoDecoder): - _TLV_INFO_MAX_LEN = 256 - - def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/sys/bus/i2c/devices/1-0057/eeprom" - # Two i2c buses might get flipped order, check them both. - if not os.path.exists(self.eeprom_path): - self.eeprom_path = "/sys/bus/i2c/devices/0-0057/eeprom" - super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/sfputil.py b/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/sfputil.py deleted file mode 100755 index b1d356e393ee..000000000000 --- a/device/marvell/x86_64-marvell_slm5401_54x-r0/plugins/sfputil.py +++ /dev/null @@ -1,132 +0,0 @@ -try: - import time - from sonic_sfp.sfputilbase import SfpUtilBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - - -class sfputil(SfpUtilBase): - """Platform specific sfputil class""" - - port_start = 0 - port_end = 31 - ports_in_block = 32 - - port_to_eeprom_mapping = {} - port_to_i2c_mapping = { - 9: 18, - 10: 19, - 11: 20, - 12: 21, - 1: 22, - 2: 23, - 3: 24, - 4: 25, - 6: 26, - 5: 27, - 8: 28, - 7: 29, - 13: 30, - 14: 31, - 15: 32, - 16: 33, - 17: 34, - 18: 35, - 19: 36, - 20: 37, - 25: 38, - 26: 39, - 27: 40, - 28: 41, - 29: 42, - 30: 43, - 31: 44, - 32: 45, - 21: 46, - 22: 47, - 23: 48, - 24: 49, - } - - _qsfp_ports = list(range(0, ports_in_block + 1)) - - def __init__(self): - # Override port_to_eeprom_mapping for class initialization - eeprom_path = '/sys/bus/i2c/devices/{0}-0050/sfp_eeprom' - for x in range(self.port_start, self.port_end + 1): - port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x+1]) - self.port_to_eeprom_mapping[x] = port_eeprom_path - SfpUtilBase.__init__(self) - - def reset(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - - path = "/sys/bus/i2c/devices/{0}-0050/sfp_port_reset" - port_ps = path.format(self.port_to_i2c_mapping[port_num+1]) - - try: - reg_file = open(port_ps, 'w') - except IOError as e: - print("Error: unable to open file: %s" % str(e)) - return False - - # toggle reset - reg_file.seek(0) - reg_file.write('1') - time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() - return True - - def set_low_power_mode(self, port_nuM, lpmode): - raise NotImplementedErro - - def get_low_power_mode(self, port_num): - raise NotImplementedErro - - def get_presence(self, port_num): - # Check for invalid port_num - if port_num < self._port_start or port_num > self._port_end: - return False - - path = "/sys/bus/i2c/devices/{0}-0050/sfp_is_present" - port_ps = path.format(self.port_to_i2c_mapping[port_num+1]) - - try: - reg_file = open(port_ps) - except IOError as e: - print("Error: unable to open file: %s" % str(e)) - return False - - reg_value = reg_file.readline().rstrip() - if reg_value == '1': - return True - - return False - - @property - def port_start(self): - return self._port_start - - @property - def port_end(self): - return self._port_end - - @property - def qsfp_ports(self): - return list(range(0, self.ports_in_block + 1)) - - @property - def port_to_eeprom_mapping(self): - return self._port_to_eeprom_mapping - - def get_transceiver_change_event(self): - """ - TODO: This function need to be implemented - when decide to support monitoring SFP(Xcvrd) - on this platform. - """ - raise NotImplementedError From edec8813eac18690eb115d4c9d620812e59051ac Mon Sep 17 00:00:00 2001 From: Mukul Chodhary <70460358+Muckthebuck@users.noreply.github.com> Date: Sat, 22 Feb 2025 14:58:14 +1100 Subject: [PATCH 39/47] Sonic t2 support for radian (#21732) Why I did it Adding support for RADIAN feature for SONiC T2 Work item tracking Microsoft ADO (number only):30112967 How I did it Cli commands to add/remove ANCHOR prefix to a PREFIX_LIST table in CONFIG_DB yang model changes for the new table PrefixListMgr to handle add/remove of configuration Templates add_radian/del_radian : to add or remove an anchor prefix list and aggregate address How to verify it Unit tests : config gen, manager and yang model --------- Signed-off-by: Mukul Chodhary <70460358+Muckthebuck@users.noreply.github.com> --- .../base_image_files/prefix_list | 178 ++++++++++++++++++ .../frr/bgpd/radian/add_radian.conf.j2 | 11 ++ .../frr/bgpd/radian/del_radian.conf.j2 | 10 + .../bgpd/templates/general/peer-group.conf.j2 | 6 + .../bgpd/templates/general/policies.conf.j2 | 42 ++++- .../templates/voq_chassis/policies.conf.j2 | 7 + files/image_config/constants/constants.yml | 3 + rules/docker-fpm-frr.mk | 1 + src/sonic-bgpcfgd/bgpcfgd/main.py | 5 +- .../bgpcfgd/managers_prefix_list.py | 119 ++++++++++++ .../policies.conf/param_all_chassis_pkt.json | 11 +- .../param_all_chassis_pkt_down.json | 4 +- .../general/policies.conf/param_all_voq.json | 11 +- .../policies.conf/param_all_voq_down.json | 4 +- .../policies.conf/result_all_chassis_pkt.conf | 47 ++++- .../general/policies.conf/result_all_voq.conf | 45 ++++- .../data/sonic-cfggen/radian/add_radian.conf | 6 + .../data/sonic-cfggen/radian/add_radian.json | 7 + .../data/sonic-cfggen/radian/del_radian.conf | 6 + .../data/sonic-cfggen/radian/del_radian.json | 7 + .../voq_chassis/policies.conf/param_base.json | 7 +- .../policies.conf/result_base.conf | 9 +- src/sonic-bgpcfgd/tests/test_prefix_list.py | 70 +++++++ src/sonic-bgpcfgd/tests/test_sonic-cfggen.py | 12 ++ src/sonic-yang-models/doc/Configuration.md | 13 ++ src/sonic-yang-models/setup.py | 1 + .../tests/files/sample_config_db.json | 4 + .../tests/bgp_prefix_list.json | 13 ++ .../tests_config/bgp_prefix_list.json | 40 ++++ .../yang-models/sonic-bgp-prefix-list.yang | 67 +++++++ 30 files changed, 745 insertions(+), 21 deletions(-) create mode 100755 dockers/docker-fpm-frr/base_image_files/prefix_list create mode 100644 dockers/docker-fpm-frr/frr/bgpd/radian/add_radian.conf.j2 create mode 100644 dockers/docker-fpm-frr/frr/bgpd/radian/del_radian.conf.j2 create mode 100644 src/sonic-bgpcfgd/bgpcfgd/managers_prefix_list.py create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.json create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.json create mode 100644 src/sonic-bgpcfgd/tests/test_prefix_list.py create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/bgp_prefix_list.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_prefix_list.json create mode 100644 src/sonic-yang-models/yang-models/sonic-bgp-prefix-list.yang diff --git a/dockers/docker-fpm-frr/base_image_files/prefix_list b/dockers/docker-fpm-frr/base_image_files/prefix_list new file mode 100755 index 000000000000..a3d09f140f27 --- /dev/null +++ b/dockers/docker-fpm-frr/base_image_files/prefix_list @@ -0,0 +1,178 @@ +#!/bin/bash + +# Function to display help message +display_help() { + echo "Usage: sudo prefix-list " + echo "" + echo "Commands:" + echo " add Add a prefix with prefix type and network." + echo " Requires: , ." + echo "" + echo " remove Remove a prefix with prefix type and network." + echo " Requires: , ." + echo "" + echo " status Display current prefix lists." + echo " No additional parameters required." + echo "" + echo "Arguments:" + echo " Type of prefix list. Allowed values: {$(printf "%s" "${supported_prefix_types[*]}" | tr ' ' '|')}." + echo " Network in CIDR format." + echo "" + echo "Options:" + echo " -h, --help Display this help message." + exit 0 +} + + +# Function to check if the user has root privileges +check_root_privileges() { + if [ "$EUID" -ne 0 ] ; then + echo "Root privileges are needed for this operation." >&2 + exit 1 + fi +} + +# Function to check if the device is supported device with type spine routers and subtype UpstreamLC +check_spine_router() { + type=$(sonic-cfggen -d -v DEVICE_METADATA.localhost.type) + sub_type=$(sonic-cfggen -d -v DEVICE_METADATA.localhost.sub_type) + + # only supported on spine routers and UpstreamLC + if [[ "$type" != "SpineRouter" || "$sub_type" != "UpstreamLC" ]]; then + echo "Operation is only supported on UpstreamLC of SpineRouter." >&2 + exit 1 + fi +} + +# Function to skip operation on chassis supervisor +skip_chassis_supervisor() { + if [ -f /etc/sonic/chassisdb.conf ]; then + echo "Skipping Operation on chassis supervisor" + exit 0 + fi +} + +# Function to validate the operation and prefix type parameters +validate_operation() { + local valid_operation=false + local valid_prefix_type=false + + for operation in "${prefix_list_operations[@]}"; do + if [[ "$1" == "$operation" ]]; then + valid_operation=true + break + fi + done + + if [ $valid_operation == false ]; then + echo "Invalid parameter $1, Operation not supported" >&2 + echo "" + display_help + exit 1 + fi + + # Check if the prefix type is supported or not if the operation is not status + if [ $1 != "status" ]; then + for prefix_type in "${supported_prefix_types[@]}"; do + if [[ "$2" == "$prefix_type" ]]; then + valid_prefix_type=true + break + fi + done + + if [ $valid_prefix_type == false ]; then + echo "Invalid parameter $2, Prefix type not supported" >&2 + echo "" + display_help + exit 1 + fi + fi +} + +# Function to handle prefix list operations for a specific ASIC +handle_prefix_list_asic() { + local asic=$1 + local operation=$2 + local PREFIX_TYPE=$3 + local network=$4 + local namespace_prefix='asic' + + if [ $operation == 'status' ] ; then + echo "BGP$asic: Current prefix lists:" + sonic-cfggen -d -v PREFIX_LIST -n $namespace_prefix$asic + else + if [ $operation == 'add' ]; then + local prefix_list_entry="{\"PREFIX_LIST\":{\"$PREFIX_TYPE|$network\":{}}}" + sonic-cfggen -a "$prefix_list_entry" -w -n $namespace_prefix$asic + logger -t $operation -p user.info "Added prefix list: $PREFIX_TYPE with network: $network" + echo "BGP$asic: Added prefix list: $PREFIX_TYPE with network: $network" + elif [ $operation == 'remove' ]; then + sonic-db-cli -n $namespace_prefix$asic CONFIG_DB DEL "PREFIX_LIST|$PREFIX_TYPE|$network" + logger -t $operation -p user.info "Removed prefix list: $PREFIX_TYPE with network: $network" + echo "BGP$asic: Removed prefix list: $PREFIX_TYPE with network: $network" + fi + fi +} + +# Function to handle prefix list operations for a single ASIC +handle_prefix_list_single() { + local operation=$1 + local PREFIX_TYPE=$2 + local network=$3 + + if [ $operation == 'status' ] ; then + echo "Current prefix lists:" + sonic-cfggen -d -v PREFIX_LIST + else + if [ $operation == 'add' ]; then + local prefix_list_entry="{\"PREFIX_LIST\":{\"$PREFIX_TYPE|$network\":{}}}" + sonic-cfggen -a "$prefix_list_entry" -w + logger -t $operation -p user.info "Added prefix list: $PREFIX_TYPE with network: $network" + echo "Added prefix list: $PREFIX_TYPE with network: $network" + elif [ $operation == 'remove' ]; then + sonic-db-cli CONFIG_DB DEL "PREFIX_LIST|$PREFIX_TYPE|$network" + logger -t $operation -p user.info "Removed prefix list: $PREFIX_TYPE with network: $network" + echo "Removed prefix list: $PREFIX_TYPE with network: $network" + fi + fi +} + +prefix_list_operations=("add" "remove" "status") +supported_prefix_types=("ANCHOR_PREFIX") +# Main script execution +if [[ "$1" == "-h" || "$1" == "--help" ]]; then + display_help +fi + +check_root_privileges +check_spine_router +skip_chassis_supervisor + +validate_operation $1 $2 + +# Read SONiC immutable variables +[ -f /etc/sonic/sonic-environment ] && . /etc/sonic/sonic-environment + +PLATFORM=${PLATFORM:-`sonic-cfggen -H -v DEVICE_METADATA.localhost.platform`} + +# Parse the device specific asic conf file, if it exists +ASIC_CONF=/usr/share/sonic/device/$PLATFORM/asic.conf +[ -f $ASIC_CONF ] && . $ASIC_CONF + +if [[ ($NUM_ASIC -gt 1) ]]; then + asic=0 + while [ $asic -lt $NUM_ASIC ] + do + sub_role=`sonic-cfggen -d -v "DEVICE_METADATA['localhost']['sub_role']" -n asic$asic` + if [ $sub_role == 'FrontEnd' ]; then + handle_prefix_list_asic $asic $1 $2 $3 + fi + asic=$((asic+1)) + done +else + handle_prefix_list_single $1 $2 $3 +fi + +if [ $1 != 'status' ]; then + echo "Please execute 'sudo config save' to preserve prefix list after reboot or config reload" +fi diff --git a/dockers/docker-fpm-frr/frr/bgpd/radian/add_radian.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/radian/add_radian.conf.j2 new file mode 100644 index 000000000000..b17de1808427 --- /dev/null +++ b/dockers/docker-fpm-frr/frr/bgpd/radian/add_radian.conf.j2 @@ -0,0 +1,11 @@ +{{ data.ipv }} prefix-list ANCHOR_CONTRIBUTING_ROUTES permit {{ data.prefix }} ge 48 +{# #} +router bgp {{ data.bgp_asn }} +{% if data.ipv == 'ip' -%} + address-family ipv4 unicast +{% else -%} + address-family ipv6 unicast +{% endif %} + aggregate-address {{ data.prefix }} route-map TAG_ANCHOR_COMMUNITY + exit +exit \ No newline at end of file diff --git a/dockers/docker-fpm-frr/frr/bgpd/radian/del_radian.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/radian/del_radian.conf.j2 new file mode 100644 index 000000000000..77374be9ae9e --- /dev/null +++ b/dockers/docker-fpm-frr/frr/bgpd/radian/del_radian.conf.j2 @@ -0,0 +1,10 @@ +no {{ data.ipv }} prefix-list ANCHOR_CONTRIBUTING_ROUTES permit {{ data.prefix }} ge 48 +router bgp {{ data.bgp_asn }} +{% if data.ipv == 'ip' -%} + address-family ipv4 unicast +{% else %} + address-family ipv6 unicast +{% endif -%} + no aggregate-address {{ data.prefix }} route-map TAG_ANCHOR_COMMUNITY + exit +exit \ No newline at end of file diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 index 2617cc94c2d2..69477cda2e3b 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 @@ -14,6 +14,9 @@ neighbor PEER_V4 soft-reconfiguration inbound neighbor PEER_V4 route-map FROM_BGP_PEER_V4 in neighbor PEER_V4 route-map TO_BGP_PEER_V4 out +{% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'SpineRouter' %} + table-map SELECTIVE_ROUTE_DOWNLOAD_V4 +{% endif %} exit-address-family address-family ipv6 {% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %} @@ -26,6 +29,9 @@ neighbor PEER_V6 soft-reconfiguration inbound neighbor PEER_V6 route-map FROM_BGP_PEER_V6 in neighbor PEER_V6 route-map TO_BGP_PEER_V6 out +{% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'SpineRouter' %} + table-map SELECTIVE_ROUTE_DOWNLOAD_V6 +{% endif %} exit-address-family ! ! end of template: bgpd/templates/general/peer-group.conf.j2 diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/general/policies.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/general/policies.conf.j2 index 8db76a69f848..07cea2e22e96 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/general/policies.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/general/policies.conf.j2 @@ -73,7 +73,8 @@ route-map FROM_BGP_PEER_V6 permit 13 {% else %} set tag {{ constants.bgp.route_eligible_for_fallback_to_default_tag }} {% endif %} - set community {{ constants.bgp.internal_fallback_community }} additive {% endif %} + set community {{ constants.bgp.internal_fallback_community }} additive +{% endif %} {% endif %} ! {% endif %} @@ -97,5 +98,44 @@ route-map TO_BGP_PEER_V6 permit 100 ! route-map CHECK_IDF_ISOLATION permit 10 ! +! +! +{% if CONFIG_DB__DEVICE_METADATA and 'localhost' in CONFIG_DB__DEVICE_METADATA and 'type' in CONFIG_DB__DEVICE_METADATA['localhost'] and 'subtype' in CONFIG_DB__DEVICE_METADATA['localhost'] %} +{% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'SpineRouter' and CONFIG_DB__DEVICE_METADATA['localhost']['subtype'] == 'UpstreamLC' %} +bgp community-list standard ANCHOR_ROUTE_COMMUNITY permit {{ constants.bgp.anchor_route_community }} +bgp community-list standard LOCAL_ANCHOR_ROUTE_COMMUNITY permit {{ constants.bgp.local_anchor_route_community }} +bgp community-list standard ANCHOR_CONTRIBUTING_ROUTE_COMMUNITY permit {{ constants.bgp.anchor_contributing_route_community }} +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 permit 1000 +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 permit 1000 +! +route-map TAG_ANCHOR_COMMUNITY permit 10 + set community {{ constants.bgp.local_anchor_route_community }} {{ constants.bgp.anchor_route_community }} additive +! +route-map TO_BGP_PEER_V6 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community {{ constants.bgp.anchor_contributing_route_community }} additive + on-match next +! +route-map TO_BGP_PEER_V6 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! +route-map TO_BGP_PEER_V4 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community {{ constants.bgp.anchor_contributing_route_community }} additive + on-match next +! +route-map TO_BGP_PEER_V4 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! +{% endif %} +{% endif %} ! end of template: bgpd/templates/general/policies.conf.j2 ! diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/policies.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/policies.conf.j2 index 961587c6ebb7..b1ad80c53a3d 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/policies.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/policies.conf.j2 @@ -1,6 +1,7 @@ ! ! template: bgpd/templates/voq_chassis/policies.conf.j2 ! +bgp community-list standard LOCAL_ANCHOR_ROUTE_COMMUNITY permit {{ constants.bgp.local_anchor_route_community }} bgp community-list standard DEVICE_INTERNAL_COMMUNITY permit {{ constants.bgp.internal_community }} bgp community-list standard DEVICE_INTERNAL_FALLBACK_COMMUNITY permit {{ constants.bgp.internal_fallback_community }} bgp community-list standard NO_EXPORT permit no-export @@ -31,6 +32,9 @@ route-map TO_VOQ_CHASSIS_V4_PEER permit 1 match ip address prefix-list PL_LoopbackV4 set community {{ constants.bgp.internal_community }} ! +route-map TO_VOQ_CHASSIS_V4_PEER deny 15 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! route-map TO_VOQ_CHASSIS_V4_PEER permit 100 ! route-map FROM_VOQ_CHASSIS_V6_PEER permit 1 @@ -63,6 +67,9 @@ route-map TO_VOQ_CHASSIS_V6_PEER permit 1 match ipv6 address prefix-list PL_LoopbackV6 set community {{ constants.bgp.internal_community }} ! +route-map TO_VOQ_CHASSIS_V6_PEER deny 15 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! route-map TO_VOQ_CHASSIS_V6_PEER permit 100 ! ! end of template: bgpd/templates/voq_chassis/policies.conf.j2 diff --git a/files/image_config/constants/constants.yml b/files/image_config/constants/constants.yml index 781055ba49b2..61c28d8be466 100644 --- a/files/image_config/constants/constants.yml +++ b/files/image_config/constants/constants.yml @@ -8,6 +8,9 @@ constants: internal_fallback_community: 22222:22222 sentinel_community: 12345:12346 internal_community_match_tag: 201 + local_anchor_route_community: 12345:555 + anchor_route_community: 12345:666 + anchor_contributing_route_community: 12345:777 route_do_not_send_appdb_tag: 202 route_eligible_for_fallback_to_default_tag: 203 families: diff --git a/rules/docker-fpm-frr.mk b/rules/docker-fpm-frr.mk index e81105caaec2..c914dbff1da6 100644 --- a/rules/docker-fpm-frr.mk +++ b/rules/docker-fpm-frr.mk @@ -41,6 +41,7 @@ $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSB:/usr/bin/TSB $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSC:/usr/bin/TSC $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TS:/usr/bin/TS $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += idf_isolation:/usr/bin/idf_isolation +$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += prefix_list:/usr/bin/prefix_list SONIC_BOOKWORM_DOCKERS += $(DOCKER_FPM_FRR) SONIC_BOOKWORM_DBG_DOCKERS += $(DOCKER_FPM_FRR_DBG) diff --git a/src/sonic-bgpcfgd/bgpcfgd/main.py b/src/sonic-bgpcfgd/bgpcfgd/main.py index bc50f22161c7..a39080bcfdc0 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/main.py +++ b/src/sonic-bgpcfgd/bgpcfgd/main.py @@ -24,6 +24,7 @@ from .managers_chassis_app_db import ChassisAppDbMgr from .managers_bfd import BfdMgr from .managers_srv6 import SRv6Mgr +from .managers_prefix_list import PrefixListMgr from .static_rt_timer import StaticRouteTimer from .runner import Runner, signal_handler from .template import TemplateFabric @@ -79,7 +80,9 @@ def do_work(): DeviceGlobalCfgMgr(common_objs, "CONFIG_DB", swsscommon.CFG_BGP_DEVICE_GLOBAL_TABLE_NAME), # SRv6 Manager SRv6Mgr(common_objs, "CONFIG_DB", "SRV6_MY_SIDS"), - SRv6Mgr(common_objs, "CONFIG_DB", "SRV6_MY_LOCATORS") + SRv6Mgr(common_objs, "CONFIG_DB", "SRV6_MY_LOCATORS"), + # Prefix List Manager + PrefixListMgr(common_objs, "CONFIG_DB", "PREFIX_LIST") ] if device_info.is_chassis(): diff --git a/src/sonic-bgpcfgd/bgpcfgd/managers_prefix_list.py b/src/sonic-bgpcfgd/bgpcfgd/managers_prefix_list.py new file mode 100644 index 000000000000..965dea9ff247 --- /dev/null +++ b/src/sonic-bgpcfgd/bgpcfgd/managers_prefix_list.py @@ -0,0 +1,119 @@ +from .manager import Manager +from .log import log_debug, log_warn, log_info +from swsscommon import swsscommon +import netaddr + +class PrefixListMgr(Manager): + """This class responds to changes in the PREFIX_LIST table""" + + def __init__(self, common_objs, db, table): + """ + Initialize the object + :param common_objs: common object dictionary + :param db: name of the db + :param table: name of the table in the db + """ + self.directory = common_objs['directory'] + self.cfg_mgr = common_objs['cfg_mgr'] + self.constants = common_objs['constants'] + self.templates = { + "add_radian": common_objs['tf'].from_file("bgpd/radian/add_radian.conf.j2"), + "del_radian": common_objs['tf'].from_file("bgpd/radian/del_radian.conf.j2"), + } + super(PrefixListMgr, self).__init__( + common_objs, + [], + db, + table, + ) + + def generate_prefix_list_config(self, data, add): + """ + Generate the prefix list configuration from the template + :param data: data from the PREFIX_LIST table + :return: rendered configuration + """ + cmd = "\n" + metadata = self.directory.get_slot("CONFIG_DB", swsscommon.CFG_DEVICE_METADATA_TABLE_NAME)["localhost"] + try: + bgp_asn = metadata["bgp_asn"] + localhost_type = metadata["type"] + subtype = metadata["subtype"] + except KeyError as e: + log_warn(f"PrefixListMgr:: Missing metadata key: {e}") + return False + + if data["prefix_list_name"] != "ANCHOR_PREFIX": + log_warn("PrefixListMgr:: Prefix list %s is not supported" % data["prefix_list_name"]) + return False + if localhost_type != "SpineRouter" or subtype != "UpstreamLC": + log_warn("PrefixListMgr:: Prefix list %s is only supported on UpstreamLC of SpineRouter" % data["prefix_list_name"]) + return False + + # Add the anchor prefix to the radian configuration + data["bgp_asn"] = bgp_asn + if add: + # add some way of getting this asn list from the database in the future + cmd += self.templates["add_radian"].render(data=data) + log_debug("PrefixListMgr:: Anchor prefix %s added to radian configuration" % data["prefix"]) + else: + cmd += self.templates["del_radian"].render(data=data) + log_debug("PrefixListMgr:: Anchor prefix %s removed from radian configuration" % data["prefix"]) + self.cfg_mgr.push(cmd) + return True + + + + def set_handler(self, key, data): + log_debug("PrefixListMgr:: set handler") + if '|' in key: + prefix_list_name, prefix_str = key.split('|', 1) + try: + prefix = netaddr.IPNetwork(str(prefix_str)) + except (netaddr.NotRegisteredError, netaddr.AddrFormatError, netaddr.AddrConversionError): + log_warn("PrefixListMgr:: Prefix '%s' format is wrong for prefix list '%s'" % (prefix_str, prefix_list_name)) + return True + data["prefix_list_name"] = prefix_list_name + data["prefix"] = str(prefix.cidr) + data["ipv"] = self.get_ip_type(prefix) + # Generate the prefix list configuration + if self.generate_prefix_list_config(data, add=True): + log_info("PrefixListMgr:: %s %s configuration generated" % (prefix_list_name, data["prefix"])) + + self.directory.put(self.db_name, self.table_name, key, data) + log_info("PrefixListMgr:: set %s" % key) + return True + + def del_handler(self, key): + log_debug("PrefixListMgr:: del handler") + if '|' in key: + prefix_list_name, prefix_str = key.split('|', 1) + try: + prefix = netaddr.IPNetwork(str(prefix_str)) + except (netaddr.NotRegisteredError, netaddr.AddrFormatError, netaddr.AddrConversionError): + log_warn("PrefixListMgr:: Prefix '%s' format is wrong for prefix list '%s'" % (prefix_str, prefix_list_name)) + return True + data = {} + data["prefix_list_name"] = prefix_list_name + data["prefix"] = str(prefix.cidr) + data["ipv"] = self.get_ip_type(prefix) + # remove the prefix list configuration + if self.generate_prefix_list_config(data, add=False): + log_info("PrefixListMgr:: %s %s configuration deleted" % (prefix_list_name, data["prefix"])) + self.directory.remove(self.db_name, self.table_name, key) + log_info("PrefixListMgr:: deleted %s" % key) + # Implement deletion logic if necessary + return True + + def get_ip_type(self, prefix: netaddr.IPNetwork): + """ + Determine the IP type (IPv4 or IPv6) of a prefix. + :param prefix: The prefix to check (e.g., "192.168.1.0/24" or "2001:db8::/32") + :return: "ip" if the prefix is an IPv4 address, "ipv6" if it is an IPv6 address, None if invalid + """ + if prefix.version == 4: + return "ip" + elif prefix.version == 6: + return "ipv6" + else: + return None \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt.json b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt.json index 0a96a1cacfd6..420577ef399e 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt.json +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt.json @@ -5,10 +5,13 @@ "allow_list": { "enabled": true, "drop_community": "12345:12345" - }, - "route_eligible_for_fallback_to_default_tag": "203", - "route_do_not_send_appdb_tag" : "202", - "internal_fallback_community": "1111:2222" + }, + "route_eligible_for_fallback_to_default_tag": "203", + "route_do_not_send_appdb_tag" : "202", + "internal_fallback_community": "1111:2222", + "local_anchor_route_community": "12345:555", + "anchor_route_community": "12345:666", + "anchor_contributing_route_community": "12345:777" } }, "allow_list_default_action": "permit", diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt_down.json b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt_down.json index 103e5a1fdcac..d8ef3a0c9071 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt_down.json +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_chassis_pkt_down.json @@ -5,10 +5,10 @@ "allow_list": { "enabled": true, "drop_community": "12345:12345" - }, + }, "route_eligible_for_fallback_to_default_tag": "203", "route_do_not_send_appdb_tag" : "202", - "internal_fallback_community": "1111:2222" + "internal_fallback_community": "1111:2222" } }, "allow_list_default_action": "permit", diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq.json b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq.json index a940effc8463..f4e0f9447f1f 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq.json +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq.json @@ -5,10 +5,13 @@ "allow_list": { "enabled": true, "drop_community": "12345:12345" - }, - "route_eligible_for_fallback_to_default_tag": "203", - "route_do_not_send_appdb_tag" : "202", - "internal_fallback_community": "1111:2222" + }, + "route_eligible_for_fallback_to_default_tag": "203", + "route_do_not_send_appdb_tag" : "202", + "internal_fallback_community": "1111:2222", + "local_anchor_route_community": "12345:555", + "anchor_route_community": "12345:666", + "anchor_contributing_route_community": "12345:777" } }, "allow_list_default_action": "permit", diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq_down.json b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq_down.json index 9671b7fcf25c..67aa23c92ff1 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq_down.json +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/param_all_voq_down.json @@ -5,10 +5,10 @@ "allow_list": { "enabled": true, "drop_community": "12345:12345" - }, + }, "route_eligible_for_fallback_to_default_tag": "203", "route_do_not_send_appdb_tag" : "202", - "internal_fallback_community": "1111:2222" + "internal_fallback_community": "1111:2222" } }, "allow_list_default_action": "permit", diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_chassis_pkt.conf b/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_chassis_pkt.conf index 7262a0c857d1..842b75ed47e7 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_chassis_pkt.conf +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_chassis_pkt.conf @@ -1,13 +1,17 @@ ! ! template: bgpd/templates/general/policies.conf.j2 ! +! ip prefix-list DEFAULT_IPV4 permit 0.0.0.0/0 ipv6 prefix-list DEFAULT_IPV6 permit ::/0 ! +! +! ! please don't remove. 65535 entries are default rules ! which works when allow_list is enabled, but new configuration ! is not applied ! +! route-map ALLOW_LIST_DEPLOYMENT_ID_0_V4 permit 65535 set community 12345:12345 additive ! @@ -45,13 +49,17 @@ route-map FROM_BGP_PEER_V6 permit 12 ! route-map FROM_BGP_PEER_V6 permit 13 set tag 203 - set community 1111:2222 additive + set community 1111:2222 additive +! +! +! ! route-map FROM_BGP_PEER_V4 permit 100 ! route-map TO_BGP_PEER_V4 permit 100 call CHECK_IDF_ISOLATION ! +! route-map FROM_BGP_PEER_V6 permit 1 on-match next set ipv6 next-hop prefer-global @@ -63,5 +71,40 @@ route-map TO_BGP_PEER_V6 permit 100 ! route-map CHECK_IDF_ISOLATION permit 10 ! -! end of template: bgpd/templates/general/policies.conf.j2 ! +! +bgp community-list standard ANCHOR_ROUTE_COMMUNITY permit 12345:666 +bgp community-list standard LOCAL_ANCHOR_ROUTE_COMMUNITY permit 12345:555 +bgp community-list standard ANCHOR_CONTRIBUTING_ROUTE_COMMUNITY permit 12345:777 +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 permit 1000 +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 permit 1000 +! +route-map TAG_ANCHOR_COMMUNITY permit 10 + set community 12345:555 12345:666 additive +! +route-map TO_BGP_PEER_V6 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community 12345:777 additive + on-match next +! +route-map TO_BGP_PEER_V6 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! +route-map TO_BGP_PEER_V4 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community 12345:777 additive + on-match next +! +route-map TO_BGP_PEER_V4 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! +! end of template: bgpd/templates/general/policies.conf.j2 +! \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_voq.conf b/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_voq.conf index 9c6b1fc28422..1697cb0fd8ea 100644 --- a/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_voq.conf +++ b/src/sonic-bgpcfgd/tests/data/general/policies.conf/result_all_voq.conf @@ -1,13 +1,17 @@ ! ! template: bgpd/templates/general/policies.conf.j2 ! +! ip prefix-list DEFAULT_IPV4 permit 0.0.0.0/0 ipv6 prefix-list DEFAULT_IPV6 permit ::/0 ! +! +! ! please don't remove. 65535 entries are default rules ! which works when allow_list is enabled, but new configuration ! is not applied ! +! route-map ALLOW_LIST_DEPLOYMENT_ID_0_V4 permit 65535 set community 12345:12345 additive ! @@ -45,13 +49,17 @@ route-map FROM_BGP_PEER_V6 permit 12 ! route-map FROM_BGP_PEER_V6 permit 13 set tag 202 - set community 1111:2222 additive + set community 1111:2222 additive +! +! +! ! route-map FROM_BGP_PEER_V4 permit 100 ! route-map TO_BGP_PEER_V4 permit 100 call CHECK_IDF_ISOLATION ! +! route-map FROM_BGP_PEER_V6 permit 1 on-match next set ipv6 next-hop prefer-global @@ -63,5 +71,40 @@ route-map TO_BGP_PEER_V6 permit 100 ! route-map CHECK_IDF_ISOLATION permit 10 ! +! +! +bgp community-list standard ANCHOR_ROUTE_COMMUNITY permit 12345:666 +bgp community-list standard LOCAL_ANCHOR_ROUTE_COMMUNITY permit 12345:555 +bgp community-list standard ANCHOR_CONTRIBUTING_ROUTE_COMMUNITY permit 12345:777 +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V4 permit 1000 +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 deny 10 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! +route-map SELECTIVE_ROUTE_DOWNLOAD_V6 permit 1000 +! +route-map TAG_ANCHOR_COMMUNITY permit 10 + set community 12345:555 12345:666 additive +! +route-map TO_BGP_PEER_V6 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community 12345:777 additive + on-match next +! +route-map TO_BGP_PEER_V6 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! +route-map TO_BGP_PEER_V4 permit 30 + match ipv6 address prefix-list ANCHOR_CONTRIBUTING_ROUTES + set community 12345:777 additive + on-match next +! +route-map TO_BGP_PEER_V4 permit 40 + set comm-list LOCAL_ANCHOR_ROUTE_COMMUNITY delete +! ! end of template: bgpd/templates/general/policies.conf.j2 ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.conf new file mode 100644 index 000000000000..56158fe170a2 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.conf @@ -0,0 +1,6 @@ +ipv6 prefix-list ANCHOR_CONTRIBUTING_ROUTES permit ffff::/64 ge 48 +router bgp 1234 +address-family ipv6 unicast + aggregate-address ffff::/64 route-map TAG_ANCHOR_COMMUNITY + exit +exit \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.json new file mode 100644 index 000000000000..d8e992aa8ae4 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/add_radian.json @@ -0,0 +1,7 @@ +{ + "data": { + "ipv": "ipv6", + "prefix": "ffff::/64", + "bgp_asn": 1234 + } +} diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.conf new file mode 100644 index 000000000000..165976815187 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.conf @@ -0,0 +1,6 @@ +no ipv6 prefix-list ANCHOR_CONTRIBUTING_ROUTES permit ffff::/64 ge 48 +router bgp 1234 + address-family ipv6 unicast +no aggregate-address ffff::/64 route-map TAG_ANCHOR_COMMUNITY + exit +exit \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.json new file mode 100644 index 000000000000..d8e992aa8ae4 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/radian/del_radian.json @@ -0,0 +1,7 @@ +{ + "data": { + "ipv": "ipv6", + "prefix": "ffff::/64", + "bgp_asn": 1234 + } +} diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/param_base.json b/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/param_base.json index 1d2f80eed337..fd0aaf54580a 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/param_base.json +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/param_base.json @@ -3,14 +3,15 @@ "localhost": { "type": "SpineRouter", "subtype": "DownstreamLC" - } + } }, "constants": { "bgp": { "internal_community": "12345:556", - "internal_community_match_tag": "101", + "internal_community_match_tag": "101", "route_eligible_for_fallback_to_default_tag": "203", - "internal_fallback_community": "1111:2222" + "internal_fallback_community": "1111:2222", + "local_anchor_route_community": "12345:555" } } } diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/result_base.conf b/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/result_base.conf index 10fe3c832655..f63593b85d5c 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/result_base.conf +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/policies.conf/result_base.conf @@ -1,6 +1,7 @@ ! ! template: bgpd/templates/voq_chassis/policies.conf.j2 ! +bgp community-list standard LOCAL_ANCHOR_ROUTE_COMMUNITY permit 12345:555 bgp community-list standard DEVICE_INTERNAL_COMMUNITY permit 12345:556 bgp community-list standard DEVICE_INTERNAL_FALLBACK_COMMUNITY permit 1111:2222 bgp community-list standard NO_EXPORT permit no-export @@ -26,6 +27,9 @@ route-map TO_VOQ_CHASSIS_V4_PEER permit 1 match ip address prefix-list PL_LoopbackV4 set community 12345:556 ! +route-map TO_VOQ_CHASSIS_V4_PEER deny 15 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! route-map TO_VOQ_CHASSIS_V4_PEER permit 100 ! route-map FROM_VOQ_CHASSIS_V6_PEER permit 1 @@ -53,7 +57,10 @@ route-map TO_VOQ_CHASSIS_V6_PEER permit 1 match ipv6 address prefix-list PL_LoopbackV6 set community 12345:556 ! +route-map TO_VOQ_CHASSIS_V6_PEER deny 15 + match community LOCAL_ANCHOR_ROUTE_COMMUNITY +! route-map TO_VOQ_CHASSIS_V6_PEER permit 100 ! ! end of template: bgpd/templates/voq_chassis/policies.conf.j2 -! +! \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/test_prefix_list.py b/src/sonic-bgpcfgd/tests/test_prefix_list.py new file mode 100644 index 000000000000..9f1ef6a48c99 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/test_prefix_list.py @@ -0,0 +1,70 @@ +from unittest.mock import MagicMock, patch + +import os +from bgpcfgd.directory import Directory +from bgpcfgd.template import TemplateFabric +from . import swsscommon_test +from swsscommon import swsscommon + +from bgpcfgd.managers_prefix_list import PrefixListMgr + +TEMPLATE_PATH = os.path.abspath('../../dockers/docker-fpm-frr/frr') + +def constructor(): + cfg_mgr = MagicMock() + common_objs = { + 'directory': Directory(), + 'cfg_mgr': cfg_mgr, + 'tf': TemplateFabric(TEMPLATE_PATH), + 'constants': {}, + } + + m = PrefixListMgr(common_objs, "CONFIG_DB", "PREFIX_LIST") + m.directory.put("CONFIG_DB", swsscommon.CFG_DEVICE_METADATA_TABLE_NAME, "localhost", {"bgp_asn": "65100", "type": "SpineRouter", "subtype": "UpstreamLC"}) + + return m + +def set_handler_test(manager, key, value): + res = manager.set_handler(key, value) + assert res, "Returns always True" + +def del_handler_test(manager, key): + res = manager.del_handler(key) + assert res, "Returns always True" + +# test if the ipv4 radian configs are set correctly +@patch('bgpcfgd.managers_prefix_list.log_debug') +def test_generate_prefix_list_config_ipv4(mocked_log_debug): + m = constructor() + set_handler_test(m, "ANCHOR_PREFIX|192.168.0.0/24", {}) + mocked_log_debug.assert_called_with("PrefixListMgr:: Anchor prefix 192.168.0.0/24 added to radian configuration") + +# test if the ipv6 radian configs are set correctly +@patch('bgpcfgd.managers_prefix_list.log_debug') +def test_generate_prefix_list_config_ipv6(mocked_log_debug): + m = constructor() + set_handler_test(m, "ANCHOR_PREFIX|fc02:100::/64", {}) + mocked_log_debug.assert_called_with("PrefixListMgr:: Anchor prefix fc02:100::/64 added to radian configuration") + +# test if invalid prefix is handled correctly +@patch('bgpcfgd.managers_prefix_list.log_warn') +def test_generate_prefix_list_config_invalid_prefix(mocked_log_warn): + m = constructor() + set_handler_test(m, "ANCHOR_PREFIX|invalid_prefix", {}) + mocked_log_warn.assert_called_with("PrefixListMgr:: Prefix 'invalid_prefix' format is wrong for prefix list 'ANCHOR_PREFIX'") + +# test if the ipv4 radian configs are deleted correctly +@patch('bgpcfgd.managers_prefix_list.log_debug') +def test_del_handler_ipv4(mocked_log_debug): + m = constructor() + set_handler_test(m, "ANCHOR_PREFIX|192.168.0.0/24", {}) + del_handler_test(m, "ANCHOR_PREFIX|192.168.0.0/24") + mocked_log_debug.assert_called_with("PrefixListMgr:: Anchor prefix 192.168.0.0/24 removed from radian configuration") + +# test if the ipv6 radian configs are deleted correctly +@patch('bgpcfgd.managers_prefix_list.log_debug') +def test_del_handler_ipv6(mocked_log_debug): + m = constructor() + set_handler_test(m, "ANCHOR_PREFIX|fc02:100::/64", {}) + del_handler_test(m, "ANCHOR_PREFIX|fc02:100::/64") + mocked_log_debug.assert_called_with("PrefixListMgr:: Anchor prefix fc02:100::/64 removed from radian configuration") \ No newline at end of file diff --git a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py index 908c4d802e54..b259f41baf1a 100644 --- a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py +++ b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py @@ -206,3 +206,15 @@ def test_bgpd_main_conf_defaults_router_id(): "bgpd/bgpd.main.conf.j2", "bgpd.main.conf.j2/defaults_router_id.json", "bgpd.main.conf.j2/defaults_router_id.conf") + +def test_prefix_list_add_radian(): + run_test("Add radian configuration", + "bgpd/radian/add_radian.conf.j2", + "radian/add_radian.json", + "radian/add_radian.conf") + +def test_prefix_list_del_radian(): + run_test("Del radian configuration", + "bgpd/radian/del_radian.conf.j2", + "radian/del_radian.json", + "radian/del_radian.conf") \ No newline at end of file diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 14a90731cd60..8196c7079b75 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -94,6 +94,7 @@ * [Static DNS](#static-dns) * [ASIC_SENSORS](#asic_sensors) * [SRv6](#srv6) + * [Prefix List](#prefix-list) * [For Developers](#for-developers) * [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template) * [Incremental Configuration by Subscribing to ConfigDB](#incremental-configuration-by-subscribing-to-configdb) @@ -2913,6 +2914,18 @@ An example is as follows: } ``` +### Prefix List +Prefix list table stores a list of prefixes with type and prefix separated by `|`. The specific configuration for the prefix type are then rendered by the PrefixListMgr. Currently ANCHOR_PREFIX is supported to add RADIAN configuration. + +An example is as follows: +```json +{ + "PREFIX_LIST": { + "ANCHOR_PREFIX|fc00::/48": {} + } +} +``` + ### FIPS The FIPS table introduces FIPS configuration. diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 02668030182c..ac670d49c1fe 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -205,6 +205,7 @@ def run(self): './yang-models/sonic-system-port.yang', './yang-models/sonic-macsec.yang', './yang-models/sonic-bgp-sentinel.yang', + './yang-models/sonic-bgp-prefix-list.yang', './yang-models/sonic-asic-sensors.yang', './yang-models/sonic-bmp.yang', './yang-models/sonic-xcvrd-log.yang', diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 6a4ca851e76b..710151ef6662 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2852,6 +2852,10 @@ "action": "uN", "decap_dscp_mode": "pipe" } + }, + "PREFIX_LIST": { + "ANCHOR_PREFIX|10.0.0.0/8" : {}, + "ANCHOR_PREFIX|FC00::/48" : {} } }, "SAMPLE_CONFIG_DB_UNKNOWN": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_prefix_list.json b/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_prefix_list.json new file mode 100644 index 000000000000..85d3f7956a2b --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_prefix_list.json @@ -0,0 +1,13 @@ +{ + "BGP_PREFIX_LIST_WITH_VALID_IPV4_PREFIX": { + "desc": "Load BGP prefix list table with a valid IPv4 prefix" + }, + "BGP_PREFIX_LIST_WITH_VALID_IPV6_PREFIX": { + "desc": "Load BGP prefix list table with a valid IPv6 prefix" + }, + "BGP_PREFIX_LIST_WITH_INVALID_PREFIX": { + "desc": "Load BGP prefix list table with an invalid prefix", + "eStrKey": "InvalidValue", + "eStr": ["prefix"] + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_prefix_list.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_prefix_list.json new file mode 100644 index 000000000000..5191ba7e8511 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_prefix_list.json @@ -0,0 +1,40 @@ +{ + "BGP_PREFIX_LIST_WITH_VALID_IPV4_PREFIX": { + "sonic-bgp-prefix-list:sonic-bgp-prefix-list": { + "sonic-bgp-prefix-list:PREFIX_LIST": { + "PREFIX_LIST_LIST": [ + { + "prefix_type": "ANCHOR_PREFIX", + "ip-prefix": "10.0.0.0/8" + } + ] + } + } + }, + "BGP_PREFIX_LIST_WITH_VALID_IPV6_PREFIX": { + "sonic-bgp-prefix-list:sonic-bgp-prefix-list": { + "sonic-bgp-prefix-list:PREFIX_LIST": { + "PREFIX_LIST_LIST": [ + { + "prefix_type": "ANCHOR_PREFIX", + "ip-prefix": "fc00::/48" + } + ] + } + } + }, + "BGP_PREFIX_LIST_WITH_INVALID_PREFIX": { + "sonic-bgp-prefix-list:sonic-bgp-prefix-list": { + "sonic-bgp-prefix-list:PREFIX_LIST": { + "PREFIX_LIST_LIST": [ + { + "prefix_type": "ANCHOR_PREFIX", + "ip-prefix": "invalid_prefix" + } + ] + } + }, + "eStrKey": "InvalidValue", + "eStr": ["prefix"] + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/yang-models/sonic-bgp-prefix-list.yang b/src/sonic-yang-models/yang-models/sonic-bgp-prefix-list.yang new file mode 100644 index 000000000000..78441450addc --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-bgp-prefix-list.yang @@ -0,0 +1,67 @@ + +module sonic-bgp-prefix-list { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-bgp-prefix-list"; + prefix bgppl; + + import sonic-types { + prefix stypes; + } + + import sonic-extension { + prefix ext; + } + + description "SONIC Device-specfifc BGP prefix lists data"; + + revision 2025-02-17 { + description "Updated description and leafs for PREFIX_LIST_LIST"; + } + + revision 2025-02-05 { + description "Initial revision."; + } + + container sonic-bgp-prefix-list { + + container PREFIX_LIST { + + description "PREFIX_LIST container consumed in BGP"; + + list PREFIX_LIST_LIST { + + description "PREFIX_LIST part of config_db.json with prefix_type and ip-prefix"; + + key "prefix_type ip-prefix"; + + leaf prefix_type { + type string; + description "Prefix type"; + } + + leaf ip-prefix { + type union { + type stypes:sonic-ip4-prefix; + type stypes:sonic-ip6-prefix; + } + } + + leaf family { + + /* family leaf needed for backward compatibility + Both ip4 and ip6 address are string in IETF RFC 6021, + so must statement can check based on : or ., family + should be IPv4 or IPv6 according. + */ + + must "(contains(../ip-prefix, ':') and current()='IPv6') or + (contains(../ip-prefix, '.') and current()='IPv4')"; + type stypes:ip-family; + } + } + } + /* end of PREFIX_LIST */ + } +} From 4608b26991c04b6e4a4445235cd9f4c17aecc070 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sat, 22 Feb 2025 19:01:17 +0800 Subject: [PATCH 40/47] [submodule] Update submodule sonic-swss-common to the latest HEAD automatically (#21822) #### Why I did it src/sonic-swss-common ``` * 599b0a6 - (HEAD -> master, origin/master, origin/HEAD) c-api: README.md (#974) (29 hours ago) [erer1243] ``` #### How I did it #### How to verify it #### Description for the changelog --- src/sonic-swss-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss-common b/src/sonic-swss-common index eb30bb72effe..599b0a67fd3d 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit eb30bb72effea2fa184cb9984b395e92b44d4eb6 +Subproject commit 599b0a67fd3dc6caa1f2590fc4bd96349fc625ee From 9be3eb59e90f9e90f1531369cd8cc97cd7bddf10 Mon Sep 17 00:00:00 2001 From: Tejaswini Chadaga <85581939+tjchadaga@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:39:56 -0800 Subject: [PATCH 41/47] Revert unix socket for chassis db (#21606) Why I did it Reverting part of #21345, since Chassis DB connection from remote host (linecard) cannot use unix socket How I did it Continue to use TCP socket for chassis DB connection How to verify it Bring up BGP on chassis, which currently fails after change in #21345 --- src/sonic-bgpcfgd/bgpcfgd/runner.py | 2 +- src/sonic-py-common/sonic_py_common/daemon_base.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sonic-bgpcfgd/bgpcfgd/runner.py b/src/sonic-bgpcfgd/bgpcfgd/runner.py index 3ede4bbfe852..75df6f902e9a 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/runner.py +++ b/src/sonic-bgpcfgd/bgpcfgd/runner.py @@ -40,7 +40,7 @@ def add_manager(self, manager): db = swsscommon.SonicDBConfig.getDbId(db_name) if db not in self.db_connectors: if db_name == "CHASSIS_APP_DB": - self.db_connectors[db] = swsscommon.DBConnector(db_name, 0, False, '') + self.db_connectors[db] = swsscommon.DBConnector(db_name, 0, True, '') else: self.db_connectors[db] = swsscommon.DBConnector(db_name, 0) diff --git a/src/sonic-py-common/sonic_py_common/daemon_base.py b/src/sonic-py-common/sonic_py_common/daemon_base.py index 1e65e47dd5c9..fd98a12b28e2 100644 --- a/src/sonic-py-common/sonic_py_common/daemon_base.py +++ b/src/sonic-py-common/sonic_py_common/daemon_base.py @@ -26,7 +26,7 @@ def db_connect(db_name, namespace=EMPTY_NAMESPACE): from swsscommon import swsscommon - return swsscommon.DBConnector(db_name, REDIS_TIMEOUT_MSECS, False, namespace) + return swsscommon.DBConnector(db_name, REDIS_TIMEOUT_MSECS, True, namespace) # From f8215d553554d0345d75834c9e7c3132bf96807f Mon Sep 17 00:00:00 2001 From: jingwenxie Date: Tue, 25 Feb 2025 04:07:24 +0800 Subject: [PATCH 42/47] Fix preset config to align with YANG (#21643) Why I did it Fix preset config to align with YANG How I did it Fix config generation based on YANG and add UT to avoid future issue. How to verify it UT --- src/sonic-config-engine/tests/common_utils.py | 16 +++- .../sample_output/t1-smartswitch-dpu.json | 3 +- .../tests/sample_output/t1-smartswitch.json | 96 ++++++++++++------- .../tests/t1-ss-dpu-sample-port-config.ini | 4 +- .../tests/t1-ss-sample-port-config.ini | 66 ++++++------- src/sonic-config-engine/tests/test_j2files.py | 6 ++ 6 files changed, 120 insertions(+), 71 deletions(-) diff --git a/src/sonic-config-engine/tests/common_utils.py b/src/sonic-config-engine/tests/common_utils.py index a5a15c45be42..954cf1f393cc 100644 --- a/src/sonic-config-engine/tests/common_utils.py +++ b/src/sonic-config-engine/tests/common_utils.py @@ -52,7 +52,7 @@ def validate(self, argument): """ Raise exception when yang validation failed """ - if PY3x and "-m" in argument: + if PY3x and ("-m" in argument or "--preset" in argument): import sonic_yang parser=argparse.ArgumentParser(description="Render configuration file from minigraph data and jinja2 template.") parser.add_argument("-m", "--minigraph", help="minigraph xml file", nargs='?', const='/etc/sonic/minigraph.xml') @@ -61,10 +61,17 @@ def validate(self, argument): parser.add_argument("-p", "--port-config", help="port config file, used with -m or -k", nargs='?', const=None) parser.add_argument("-S", "--hwsku-config", help="hwsku config file, used with -p and -m or -k", nargs='?', const=None) parser.add_argument("-j", "--json", help="additional json file input, used with -p, -S and -m or -k", nargs='?', const=None) + parser.add_argument("-a", "--additional-data", help="addition data, in json string", nargs='?', const=None) + parser.add_argument("--preset", help="generate sample configuration from a preset template", nargs='?', const=None) args, unknown = parser.parse_known_args(argument) print('\n Validating yang schema') - cmd = self.script_file + ['-m', args.minigraph] + if "-m" in argument: + cmd = self.script_file + ['-m', args.minigraph] + cmd += ['--print-data'] + elif "--preset" in argument: + cmd = self.script_file + ['--preset', args.preset] + if args.hwsku is not None: cmd += ['-k', args.hwsku] if args.hwsku_config is not None: @@ -75,7 +82,9 @@ def validate(self, argument): cmd += ['-n', args.namespace] if args.json is not None: cmd += ['-j', args.json] - cmd += ['--print-data'] + if args.additional_data is not None: + cmd += ['-a', args.additional_data] + output = subprocess.check_output(cmd).decode() try: self.yang_parser.loadData(configdbJson=json.loads(output)) @@ -87,6 +96,7 @@ def validate(self, argument): return False return True + def cmp(file1, file2): """ compare files """ try: diff --git a/src/sonic-config-engine/tests/sample_output/t1-smartswitch-dpu.json b/src/sonic-config-engine/tests/sample_output/t1-smartswitch-dpu.json index 400d36127a7a..3bd84f20aa88 100644 --- a/src/sonic-config-engine/tests/sample_output/t1-smartswitch-dpu.json +++ b/src/sonic-config-engine/tests/sample_output/t1-smartswitch-dpu.json @@ -14,7 +14,8 @@ "lanes": "0,1,2,3,4,5,6,7", "alias": "etp1", "admin_status": "up", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" } }, "FLEX_COUNTER_TABLE": { diff --git a/src/sonic-config-engine/tests/sample_output/t1-smartswitch.json b/src/sonic-config-engine/tests/sample_output/t1-smartswitch.json index d49ed7feb22c..87036e755b96 100644 --- a/src/sonic-config-engine/tests/sample_output/t1-smartswitch.json +++ b/src/sonic-config-engine/tests/sample_output/t1-smartswitch.json @@ -455,193 +455,225 @@ "admin_status": "up", "alias": "etp1", "lanes": "0,1,2,3,4,5,6,7", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet104": { "admin_status": "up", "alias": "etp14", "lanes": "104,105,106,107,108,109,110,111", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet112": { "admin_status": "up", "alias": "etp15", "lanes": "112,113,114,115,116,117,118,119", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet120": { "admin_status": "up", "alias": "etp16", "lanes": "120,121,122,123,124,125,126,127", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet128": { "admin_status": "up", "alias": "etp17", "lanes": "128,129,130,131,132,133,134,135", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet136": { "admin_status": "up", "alias": "etp18", "lanes": "136,137,138,139,140,141,142,143", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet144": { "admin_status": "up", "alias": "etp19", "lanes": "144,145,146,147,148,149,150,151", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet152": { "admin_status": "up", "alias": "etp20", "lanes": "152,153,154,155,156,157,158,159", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet16": { "admin_status": "up", "alias": "etp3", "lanes": "16,17,18,19,20,21,22,23", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet160": { "admin_status": "up", "alias": "etp21", "lanes": "160,161,162,163,164,165,166,167", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet168": { "admin_status": "up", "alias": "etp22", "lanes": "168,169,170,171,172,173,174,175", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet176": { "admin_status": "up", "alias": "etp23", "lanes": "176,177,178,179,180,181,182,183", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet184": { "admin_status": "up", "alias": "etp24", "lanes": "184,185,186,187,188,189,190,191", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet192": { "admin_status": "up", "alias": "etp25", "lanes": "192,193,194,195,196,197,198,199", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet200": { "admin_status": "up", "alias": "etp26", "lanes": "200,201,202,203,204,205,206,207", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet208": { "admin_status": "up", "alias": "etp27", "lanes": "208,209,210,211,212,213,214,215", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet216": { "admin_status": "up", "alias": "etp28", "lanes": "216,217,218,219,220,221,222,223", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet224": { "admin_status": "up", "alias": "etp29", "lanes": "224,225,226,227,228,229,230,231", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet232": { "admin_status": "up", "alias": "etp30", "lanes": "232,233,234,235,236,237,238,239", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet24": { "admin_status": "up", "alias": "etp4", "lanes": "24,25,26,27,28,29,30,31", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet240": { "admin_status": "up", "alias": "etp31", "lanes": "240,241,242,243,244,245,246,247", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet248": { "admin_status": "up", "alias": "etp32", "lanes": "248,249,250,251,252,253,254,255", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet32": { "admin_status": "up", "alias": "etp5", "lanes": "32,33,34,35,36,37,38,39", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet40": { "admin_status": "up", "alias": "etp6", "lanes": "40,41,42,43,44,45,46,47", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet48": { "admin_status": "up", "alias": "etp7", "lanes": "48,49,50,51,52,53,54,55", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet56": { "admin_status": "up", "alias": "etp8", "lanes": "56,57,58,59,60,61,62,63", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet64": { "admin_status": "up", "alias": "etp9", "lanes": "64,65,66,67,68,69,70,71", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet72": { "admin_status": "up", "alias": "etp10", "lanes": "72,73,74,75,76,77,78,79", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet8": { "admin_status": "up", "alias": "etp2", "lanes": "8,9,10,11,12,13,14,15", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet80": { "admin_status": "up", "alias": "etp11", "lanes": "80,81,82,83,84,85,86,87", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet88": { "admin_status": "up", "alias": "etp12", "lanes": "88,89,90,91,92,93,94,95", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" }, "Ethernet96": { "admin_status": "up", "alias": "etp13", "lanes": "96,97,98,99,100,101,102,103", - "mtu": "9100" + "mtu": "9100", + "speed": "100000" } } } diff --git a/src/sonic-config-engine/tests/t1-ss-dpu-sample-port-config.ini b/src/sonic-config-engine/tests/t1-ss-dpu-sample-port-config.ini index eb8916447e47..98a7a50d6e79 100644 --- a/src/sonic-config-engine/tests/t1-ss-dpu-sample-port-config.ini +++ b/src/sonic-config-engine/tests/t1-ss-dpu-sample-port-config.ini @@ -1,2 +1,2 @@ -# name lanes alias -Ethernet0 0,1,2,3,4,5,6,7 etp1 +# name lanes alias speed +Ethernet0 0,1,2,3,4,5,6,7 etp1 100000 diff --git a/src/sonic-config-engine/tests/t1-ss-sample-port-config.ini b/src/sonic-config-engine/tests/t1-ss-sample-port-config.ini index d140050c87ea..a7a7f13faa21 100644 --- a/src/sonic-config-engine/tests/t1-ss-sample-port-config.ini +++ b/src/sonic-config-engine/tests/t1-ss-sample-port-config.ini @@ -1,33 +1,33 @@ -# name lanes alias -Ethernet0 0,1,2,3,4,5,6,7 etp1 -Ethernet8 8,9,10,11,12,13,14,15 etp2 -Ethernet16 16,17,18,19,20,21,22,23 etp3 -Ethernet24 24,25,26,27,28,29,30,31 etp4 -Ethernet32 32,33,34,35,36,37,38,39 etp5 -Ethernet40 40,41,42,43,44,45,46,47 etp6 -Ethernet48 48,49,50,51,52,53,54,55 etp7 -Ethernet56 56,57,58,59,60,61,62,63 etp8 -Ethernet64 64,65,66,67,68,69,70,71 etp9 -Ethernet72 72,73,74,75,76,77,78,79 etp10 -Ethernet80 80,81,82,83,84,85,86,87 etp11 -Ethernet88 88,89,90,91,92,93,94,95 etp12 -Ethernet96 96,97,98,99,100,101,102,103 etp13 -Ethernet104 104,105,106,107,108,109,110,111 etp14 -Ethernet112 112,113,114,115,116,117,118,119 etp15 -Ethernet120 120,121,122,123,124,125,126,127 etp16 -Ethernet128 128,129,130,131,132,133,134,135 etp17 -Ethernet136 136,137,138,139,140,141,142,143 etp18 -Ethernet144 144,145,146,147,148,149,150,151 etp19 -Ethernet152 152,153,154,155,156,157,158,159 etp20 -Ethernet160 160,161,162,163,164,165,166,167 etp21 -Ethernet168 168,169,170,171,172,173,174,175 etp22 -Ethernet176 176,177,178,179,180,181,182,183 etp23 -Ethernet184 184,185,186,187,188,189,190,191 etp24 -Ethernet192 192,193,194,195,196,197,198,199 etp25 -Ethernet200 200,201,202,203,204,205,206,207 etp26 -Ethernet208 208,209,210,211,212,213,214,215 etp27 -Ethernet216 216,217,218,219,220,221,222,223 etp28 -Ethernet224 224,225,226,227,228,229,230,231 etp29 -Ethernet232 232,233,234,235,236,237,238,239 etp30 -Ethernet240 240,241,242,243,244,245,246,247 etp31 -Ethernet248 248,249,250,251,252,253,254,255 etp32 +# name lanes alias speed +Ethernet0 0,1,2,3,4,5,6,7 etp1 100000 +Ethernet8 8,9,10,11,12,13,14,15 etp2 100000 +Ethernet16 16,17,18,19,20,21,22,23 etp3 100000 +Ethernet24 24,25,26,27,28,29,30,31 etp4 100000 +Ethernet32 32,33,34,35,36,37,38,39 etp5 100000 +Ethernet40 40,41,42,43,44,45,46,47 etp6 100000 +Ethernet48 48,49,50,51,52,53,54,55 etp7 100000 +Ethernet56 56,57,58,59,60,61,62,63 etp8 100000 +Ethernet64 64,65,66,67,68,69,70,71 etp9 100000 +Ethernet72 72,73,74,75,76,77,78,79 etp10 100000 +Ethernet80 80,81,82,83,84,85,86,87 etp11 100000 +Ethernet88 88,89,90,91,92,93,94,95 etp12 100000 +Ethernet96 96,97,98,99,100,101,102,103 etp13 100000 +Ethernet104 104,105,106,107,108,109,110,111 etp14 100000 +Ethernet112 112,113,114,115,116,117,118,119 etp15 100000 +Ethernet120 120,121,122,123,124,125,126,127 etp16 100000 +Ethernet128 128,129,130,131,132,133,134,135 etp17 100000 +Ethernet136 136,137,138,139,140,141,142,143 etp18 100000 +Ethernet144 144,145,146,147,148,149,150,151 etp19 100000 +Ethernet152 152,153,154,155,156,157,158,159 etp20 100000 +Ethernet160 160,161,162,163,164,165,166,167 etp21 100000 +Ethernet168 168,169,170,171,172,173,174,175 etp22 100000 +Ethernet176 176,177,178,179,180,181,182,183 etp23 100000 +Ethernet184 184,185,186,187,188,189,190,191 etp24 100000 +Ethernet192 192,193,194,195,196,197,198,199 etp25 100000 +Ethernet200 200,201,202,203,204,205,206,207 etp26 100000 +Ethernet208 208,209,210,211,212,213,214,215 etp27 100000 +Ethernet216 216,217,218,219,220,221,222,223 etp28 100000 +Ethernet224 224,225,226,227,228,229,230,231 etp29 100000 +Ethernet232 232,233,234,235,236,237,238,239 etp30 100000 +Ethernet240 240,241,242,243,244,245,246,247 etp31 100000 +Ethernet248 248,249,250,251,252,253,254,255 etp32 100000 diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py index 3ff70d40ae83..30fc9f0e30bc 100644 --- a/src/sonic-config-engine/tests/test_j2files.py +++ b/src/sonic-config-engine/tests/test_j2files.py @@ -11,6 +11,7 @@ class TestJ2Files(TestCase): def setUp(self): + self.yang = utils.YangWrapper() self.test_dir = os.path.dirname(os.path.realpath(__file__)) self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.simple_minigraph = os.path.join(self.test_dir, 'simple-sample-graph.xml') @@ -260,6 +261,7 @@ def test_l2switch_template(self): def test_l1_ports_template(self): argument = ['-k', '32x1000Gb', '--preset', 'l1', '-p', self.l1_l3_port_config] + self.assertTrue(self.yang.validate(argument)) output = self.run_script(argument) output_json = json.loads(output) @@ -278,6 +280,7 @@ def test_l1_ports_template(self): def test_l3_ports_template(self): argument = ['-k', '32x1000Gb', '--preset', 'l3', '-p', self.l1_l3_port_config] + self.assertTrue(self.yang.validate(argument)) output = self.run_script(argument) output_json = json.loads(output) @@ -311,6 +314,7 @@ def test_l2switch_template_dualtor(self): ] } argument = ['-a', json.dumps(extra_args), '-k', 'Arista-7050CX3-32S-D48C8', '--preset', 'l2', '-p', self.t0_7050cx3_port_config] + self.assertTrue(self.yang.validate(argument)) output = self.run_script(argument) output_json = json.loads(output) @@ -322,6 +326,7 @@ def test_l2switch_template_dualtor(self): def test_t1_smartswitch_template(self): argument = ['-k', 'SSwitch-32x1000Gb', '--preset', 't1-smartswitch', '-p', self.t1_ss_port_config] + self.assertTrue(self.yang.validate(argument)) output = self.run_script(argument) output_json = json.loads(output) @@ -333,6 +338,7 @@ def test_t1_smartswitch_template(self): def test_t1_smartswitch_dpu_template(self): argument = ['-k', 'SS-DPU-1x400Gb', '--preset', 't1-smartswitch', '-p', self.t1_ss_dpu_port_config] + self.assertTrue(self.yang.validate(argument)) output = self.run_script(argument) output_json = json.loads(output) From b66bfc0b25065273787b46ed20e0115f80ad6578 Mon Sep 17 00:00:00 2001 From: Deepak Singhal <115033986+deepak-singhal0408@users.noreply.github.com> Date: Tue, 25 Feb 2025 09:42:49 -0800 Subject: [PATCH 43/47] Fix TSA-TSB race condition on multi-asic platforms (#21830) Setting the STATE_DB ALL_SERVICE_STATUS|tsa_tsb_service flag first as part of startup_tsa_tsb service, followed by configuring TSA. And as part of the case, when tsa_ena is False (genuine or due to race condition), we explictly call TSA again to ensure all asics go to TSA state. --- files/scripts/startup_tsa_tsb.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/files/scripts/startup_tsa_tsb.py b/files/scripts/startup_tsa_tsb.py index 6b975f49aabb..dfbc66d8fd8f 100644 --- a/files/scripts/startup_tsa_tsb.py +++ b/files/scripts/startup_tsa_tsb.py @@ -67,12 +67,12 @@ def config_tsa(): num_asics = multi_asic.get_num_asics() tsa_ena = get_tsa_status(num_asics) if tsa_ena == True: - logger.log_info("Configuring TSA") - subprocess.check_output(['TSA']).strip() logger.log_info("Setting TSA-TSB service field in STATE_DB") subprocess.check_output([ 'sonic-db-cli', 'STATE_DB', 'HSET', 'ALL_SERVICE_STATUS|tsa_tsb_service', 'running', 'OK' ]).strip() + logger.log_info("Configuring TSA") + subprocess.check_output(['TSA']).strip() else: #check if tsa_tsb service is already running, restart the timer try: @@ -84,6 +84,8 @@ def config_tsa(): if startup_tsa_tsb_service_status == 'OK': logger.log_info("TSA-TSB service is already running, just restart the timer") + # execute TSA again: this is to overcome race condition where in its previous run, TSA configuration didnt complete on all asics + subprocess.check_output(['TSA']).strip() return True else: if num_asics > 1: From b6c96140196b2d98f1bc40a55941b53bf4c4bb9b Mon Sep 17 00:00:00 2001 From: brholmes1 Date: Tue, 25 Feb 2025 17:01:05 -0700 Subject: [PATCH 44/47] [SNMP] Fix config template issue when setting snmpagentaddress (#20152) Related to PR#16187 Why I did it When you configure an SNMP agent address with a VRF, the snmpd service will fail to properly start after the configuration has been applied. The snmpd service shows a status of "FATAL." sudo config snmpagentaddress add 1.1.1.1 -p 161 -v mgmt docker exec -it snmp supervisorctl status | awk '{print $1, $2}' dependent-startup RUNNING rsyslogd RUNNING snmp-subagent STOPPED snmpd FATAL start EXITED supervisor-proc-exit-listener RUNNING Work item tracking Microsoft ADO (number only): How I did it Corrected syntax in the jinja template used to generate the snmpd.conf within the SNMP docker container. How to verify it sudo config snmpagentaddress add 1.1.1.1 -p 161 -v mgmt docker exec -it snmp supervisorctl status | awk '{print $1, $2}' dependent-startup EXITED rsyslogd RUNNING snmp-subagent RUNNING snmpd RUNNING start EXITED supervisor-proc-exit-listener RUNNING --- dockers/docker-snmp/snmpd.conf.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-snmp/snmpd.conf.j2 b/dockers/docker-snmp/snmpd.conf.j2 index 796b041c9cff..35f64b314da4 100644 --- a/dockers/docker-snmp/snmpd.conf.j2 +++ b/dockers/docker-snmp/snmpd.conf.j2 @@ -26,7 +26,7 @@ {% if SNMP_AGENT_ADDRESS_CONFIG %} {% for (agentip, port, vrf) in SNMP_AGENT_ADDRESS_CONFIG %} -agentAddress {{ protocol(agentip) }}:[{{ agentip }}]{% if port %}:{{ port }}{% endif %}{% if vrf %}%{{ vrf }}{% endif %}{{ "" }} +agentAddress {{ protocol(agentip) }}:[{{ agentip }}]{% if vrf %}@{{ vrf }}{% endif %}{% if port %}:{{ port }}{% endif %}{{ "" }} {% endfor %} {% else %} agentAddress udp:161 From dc291dad0b51d5e20981947ed9d49509882d34d4 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Thu, 27 Feb 2025 00:56:58 +0800 Subject: [PATCH 45/47] platform support M2-W6520-48C8QC (#21509) * platform support M2-W6520-48C8QC * trigger compilation * rebuild * triggle rebuild * triggle rebuild * Update wb_fpga_i2c_bus_device.c --- .../M2-W6520-48C8QC/hwsku.json | 172 ++ .../M2-W6520-48C8QC/port_config.ini | 57 + .../M2-W6520-48C8QC/sai.profile | 1 + .../td4-m2-w6520-48c8qc-48x100G-8x400G.yml | 695 +++++ .../x86_64-micas_m2-w6520-48c8qc-r0/cpu.cint | 82 + .../custom_led.bin | Bin 0 -> 352 bytes .../default_sku | 1 + .../x86_64-micas_m2-w6520-48c8qc-r0/dev.xml | 359 +++ .../x86_64-micas_m2-w6520-48c8qc-r0/fru.py | 961 +++++++ .../hwsku.json | 172 ++ .../installer.conf | 2 + .../media_settings.json | 1860 +++++++++++++ .../monitor.py | 402 +++ .../x86_64-micas_m2-w6520-48c8qc-r0/pcie.yaml | 486 ++++ .../platform.json | 1151 ++++++++ .../platform_asic | 1 + .../platform_components.json | 16 + .../platform_env.conf | 2 + .../plugins/sfputil.py | 322 +++ .../plugins/ssd_util.py | 318 +++ .../pmon_daemon_control.json | 3 + .../postinit_cmd_file.soc | 7 + .../system_health_monitoring_config.json | 0 platform/broadcom/one-image.mk | 3 +- platform/broadcom/platform-modules-micas.mk | 8 + .../s3ip_sysfs/switch_driver/wb_fpga_driver.c | 6 +- .../debian/control | 4 + ...form-modules-micas-m2-w6520-48c8qc.install | 1 + ...orm-modules-micas-m2-w6520-48c8qc.postinst | 10 + .../debian/rule.mk | 2 + .../m2-w6520-48c8qc/Makefile | 25 + .../x86_64_micas_m2_w6520_48c8qc_r0_config.py | 1079 ++++++++ ...64_micas_m2_w6520_48c8qc_r0_port_config.py | 7 + .../x86_64_micas_m2_w6520_48c8qc_r0_device.py | 1247 +++++++++ ...x86_64_micas_m2_w6520_48c8qc_r0_monitor.py | 207 ++ .../m2-w6520-48c8qc/modules/driver/Makefile | 10 + .../modules/driver/wb_fpga_i2c_bus_device.c | 2435 +++++++++++++++++ .../modules/driver/wb_fpga_pca954x_device.c | 137 + .../modules/driver/wb_i2c_dev_device.c | 160 ++ .../modules/driver/wb_io_dev_device.c | 158 ++ .../modules/driver/wb_lpc_drv_device.c | 150 + .../modules/driver/wb_pcie_dev_device.c | 113 + .../plat_sysfs_cfg/WB_PLAT_CPLD.cfg | 39 + .../plat_sysfs_cfg/WB_PLAT_FAN.cfg | 437 +++ .../plat_sysfs_cfg/WB_PLAT_PSU.cfg | 64 + .../plat_sysfs_cfg/WB_PLAT_SFF.cfg | 522 ++++ .../plat_sysfs_cfg/cfg_file_name | 4 + .../m2-w6520-48c8qc/setup.py | 39 + 48 files changed, 13931 insertions(+), 6 deletions(-) create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/hwsku.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/port_config.ini create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/sai.profile create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/td4-m2-w6520-48c8qc-48x100G-8x400G.yml create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/cpu.cint create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/custom_led.bin create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/default_sku create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/dev.xml create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/fru.py create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/hwsku.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/installer.conf create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/media_settings.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/monitor.py create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pcie.yaml create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_asic create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_components.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_env.conf create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/sfputil.py create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/ssd_util.py create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pmon_daemon_control.json create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/postinit_cmd_file.soc create mode 100644 device/micas/x86_64-micas_m2-w6520-48c8qc-r0/system_health_monitoring_config.json create mode 100644 platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.install create mode 100644 platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.postinst create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/Makefile create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_config.py create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_port_config.py create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_device.py create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_monitor.py create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/Makefile create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_i2c_bus_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_pca954x_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_i2c_dev_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_io_dev_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_lpc_drv_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_pcie_dev_device.c create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_CPLD.cfg create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_FAN.cfg create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_PSU.cfg create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_SFF.cfg create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/cfg_file_name create mode 100644 platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/setup.py diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/hwsku.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/hwsku.json new file mode 100644 index 000000000000..1535dc8ad4d4 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/hwsku.json @@ -0,0 +1,172 @@ +{ + "interfaces": { + "Ethernet1": { + "default_brkout_mode": "1x100G" + }, + "Ethernet2": { + "default_brkout_mode": "1x100G" + }, + "Ethernet3": { + "default_brkout_mode": "1x100G" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G" + }, + "Ethernet5": { + "default_brkout_mode": "1x100G" + }, + "Ethernet6": { + "default_brkout_mode": "1x100G" + }, + "Ethernet7": { + "default_brkout_mode": "1x100G" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G" + }, + "Ethernet9": { + "default_brkout_mode": "1x100G" + }, + "Ethernet10": { + "default_brkout_mode": "1x100G" + }, + "Ethernet11": { + "default_brkout_mode": "1x100G" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G" + }, + "Ethernet13": { + "default_brkout_mode": "1x100G" + }, + "Ethernet14": { + "default_brkout_mode": "1x100G" + }, + "Ethernet15": { + "default_brkout_mode": "1x100G" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G" + }, + "Ethernet17": { + "default_brkout_mode": "1x100G" + }, + "Ethernet18": { + "default_brkout_mode": "1x100G" + }, + "Ethernet19": { + "default_brkout_mode": "1x100G" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G" + }, + "Ethernet21": { + "default_brkout_mode": "1x100G" + }, + "Ethernet22": { + "default_brkout_mode": "1x100G" + }, + "Ethernet23": { + "default_brkout_mode": "1x100G" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G" + }, + "Ethernet25": { + "default_brkout_mode": "1x100G" + }, + "Ethernet26": { + "default_brkout_mode": "1x100G" + }, + "Ethernet27": { + "default_brkout_mode": "1x100G" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G" + }, + "Ethernet29": { + "default_brkout_mode": "1x100G" + }, + "Ethernet30": { + "default_brkout_mode": "1x100G" + }, + "Ethernet31": { + "default_brkout_mode": "1x100G" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G" + }, + "Ethernet33": { + "default_brkout_mode": "1x100G" + }, + "Ethernet34": { + "default_brkout_mode": "1x100G" + }, + "Ethernet35": { + "default_brkout_mode": "1x100G" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G" + }, + "Ethernet37": { + "default_brkout_mode": "1x100G" + }, + "Ethernet38": { + "default_brkout_mode": "1x100G" + }, + "Ethernet39": { + "default_brkout_mode": "1x100G" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G" + }, + "Ethernet41": { + "default_brkout_mode": "1x100G" + }, + "Ethernet42": { + "default_brkout_mode": "1x100G" + }, + "Ethernet43": { + "default_brkout_mode": "1x100G" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G" + }, + "Ethernet45": { + "default_brkout_mode": "1x100G" + }, + "Ethernet46": { + "default_brkout_mode": "1x100G" + }, + "Ethernet47": { + "default_brkout_mode": "1x100G" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G" + }, + "Ethernet49": { + "default_brkout_mode": "1x400G" + }, + "Ethernet57": { + "default_brkout_mode": "1x400G" + }, + "Ethernet65": { + "default_brkout_mode": "1x400G" + }, + "Ethernet73": { + "default_brkout_mode": "1x400G" + }, + "Ethernet81": { + "default_brkout_mode": "1x400G" + }, + "Ethernet89": { + "default_brkout_mode": "1x400G" + }, + "Ethernet97": { + "default_brkout_mode": "1x400G" + }, + "Ethernet105": { + "default_brkout_mode": "1x400G" + } + } +} \ No newline at end of file diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/port_config.ini b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/port_config.ini new file mode 100644 index 000000000000..ec85bf921d9b --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/port_config.ini @@ -0,0 +1,57 @@ +# name lanes alias index speed +Ethernet1 41,42 hundredGigE0/1 0 100000 +Ethernet2 43,44 hundredGigE0/2 1 100000 +Ethernet3 45,46 hundredGigE0/3 2 100000 +Ethernet4 47,48 hundredGigE0/4 3 100000 +Ethernet5 49,50 hundredGigE0/5 4 100000 +Ethernet6 51,52 hundredGigE0/6 5 100000 +Ethernet7 53,54 hundredGigE0/7 6 100000 +Ethernet8 55,56 hundredGigE0/8 7 100000 +Ethernet9 57,58 hundredGigE0/9 8 100000 +Ethernet10 59,60 hundredGigE0/10 9 100000 +Ethernet11 61,62 hundredGigE0/11 10 100000 +Ethernet12 63,64 hundredGigE0/12 11 100000 +Ethernet13 9,10 hundredGigE0/13 12 100000 +Ethernet14 11,12 hundredGigE0/14 13 100000 +Ethernet15 13,14 hundredGigE0/15 14 100000 +Ethernet16 15,16 hundredGigE0/16 15 100000 +Ethernet17 17,18 hundredGigE0/17 16 100000 +Ethernet18 19,20 hundredGigE0/18 17 100000 +Ethernet19 21,22 hundredGigE0/19 18 100000 +Ethernet20 23,24 hundredGigE0/20 19 100000 +Ethernet21 25,26 hundredGigE0/21 20 100000 +Ethernet22 27,28 hundredGigE0/22 21 100000 +Ethernet23 29,30 hundredGigE0/23 22 100000 +Ethernet24 31,32 hundredGigE0/24 23 100000 +Ethernet25 81,82 hundredGigE0/25 24 100000 +Ethernet26 83,84 hundredGigE0/26 25 100000 +Ethernet27 85,86 hundredGigE0/27 26 100000 +Ethernet28 87,88 hundredGigE0/28 27 100000 +Ethernet29 89,90 hundredGigE0/29 28 100000 +Ethernet30 91,92 hundredGigE0/30 29 100000 +Ethernet31 93,94 hundredGigE0/31 30 100000 +Ethernet32 95,96 hundredGigE0/32 31 100000 +Ethernet33 97,98 hundredGigE0/33 32 100000 +Ethernet34 99,100 hundredGigE0/34 33 100000 +Ethernet35 101,102 hundredGigE0/35 34 100000 +Ethernet36 103,104 hundredGigE0/36 35 100000 +Ethernet37 137,138 hundredGigE0/37 36 100000 +Ethernet38 139,140 hundredGigE0/38 37 100000 +Ethernet39 141,142 hundredGigE0/39 38 100000 +Ethernet40 143,144 hundredGigE0/40 39 100000 +Ethernet41 145,146 hundredGigE0/41 40 100000 +Ethernet42 147,148 hundredGigE0/42 41 100000 +Ethernet43 149,150 hundredGigE0/43 42 100000 +Ethernet44 151,152 hundredGigE0/44 43 100000 +Ethernet45 153,154 hundredGigE0/45 44 100000 +Ethernet46 155,156 hundredGigE0/46 45 100000 +Ethernet47 157,158 hundredGigE0/47 46 100000 +Ethernet48 159,160 hundredGigE0/48 47 100000 +Ethernet49 1,2,3,4,5,6,7,8 fourHundredGigE0/1 48 400000 +Ethernet57 33,34,35,36,37,38,39,40 fourHundredGigE0/2 49 400000 +Ethernet65 73,74,75,76,77,78,79,80 fourHundredGigE0/3 50 400000 +Ethernet73 65,66,67,68,69,70,71,72 fourHundredGigE0/4 51 400000 +Ethernet81 105,106,107,108,109,110,111,112 fourHundredGigE0/5 52 400000 +Ethernet89 113,114,115,116,117,118,119,120 fourHundredGigE0/6 53 400000 +Ethernet97 129,130,131,132,133,134,135,136 fourHundredGigE0/7 54 400000 +Ethernet105 121,122,123,124,125,126,127,128 fourHundredGigE0/8 55 400000 diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/sai.profile b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/sai.profile new file mode 100644 index 000000000000..59bfe0386f9d --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td4-m2-w6520-48c8qc-48x100G-8x400G.yml diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/td4-m2-w6520-48c8qc-48x100G-8x400G.yml b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/td4-m2-w6520-48c8qc-48x100G-8x400G.yml new file mode 100644 index 000000000000..f86594bcff18 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/M2-W6520-48C8QC/td4-m2-w6520-48c8qc-48x100G-8x400G.yml @@ -0,0 +1,695 @@ +--- +bcm_device: + 0: + global: + bcm_tunnel_term_compatible_mode: 1 + vlan_flooding_l2mc_num_reserved: 0 + shared_block_mask_section: uc_bc + l3_alpm_template: 1 + l3_alpm2_bnk_threshold: 100 + svi_my_station_optimization: 1 + sai_nbr_bcast_ifp_optimized: 2 + uft_mode: 1 + l3_enable: 1 + l2_hitbit_enable: 0 + pktio_mode: 1 + sai_optimized_mmu: 1 + sai_pfc_defaults_disable: 1 + warmboot_knet_shutdown_mode: 1 + sai_postinit_cmd_file: /usr/share/sonic/platform/postinit_cmd_file.soc +... + +--- +device: + 0: + FP_CONFIG: + #FP_ING_OPERMODE: PIPE_UNIQUE + FP_ING_OPERMODE: GLOBAL_PIPE_AWARE +... + +--- +bcm_device: + 0: + port: + "*": + encap_mode: IEEE + dport_map_enable: 1 + 20: + dport_map_port: 1 + 21: + dport_map_port: 2 + 22: + dport_map_port: 3 + 23: + dport_map_port: 4 + 24: + dport_map_port: 5 + 25: + dport_map_port: 6 + 26: + dport_map_port: 7 + 27: + dport_map_port: 8 + 28: + dport_map_port: 9 + 29: + dport_map_port: 10 + 30: + dport_map_port: 11 + 31: + dport_map_port: 12 + 3: + dport_map_port: 13 + 4: + dport_map_port: 14 + 5: + dport_map_port: 15 + 6: + dport_map_port: 16 + 7: + dport_map_port: 17 + 8: + dport_map_port: 18 + 9: + dport_map_port: 19 + 10: + dport_map_port: 20 + 11: + dport_map_port: 21 + 12: + dport_map_port: 22 + 13: + dport_map_port: 23 + 14: + dport_map_port: 24 + 40: + dport_map_port: 25 + 41: + dport_map_port: 26 + 42: + dport_map_port: 27 + 43: + dport_map_port: 28 + 44: + dport_map_port: 29 + 45: + dport_map_port: 30 + 46: + dport_map_port: 31 + 47: + dport_map_port: 32 + 48: + dport_map_port: 33 + 49: + dport_map_port: 34 + 50: + dport_map_port: 35 + 51: + dport_map_port: 36 + 64: + dport_map_port: 37 + 65: + dport_map_port: 38 + 66: + dport_map_port: 39 + 67: + dport_map_port: 40 + 68: + dport_map_port: 41 + 69: + dport_map_port: 42 + 70: + dport_map_port: 43 + 71: + dport_map_port: 44 + 72: + dport_map_port: 45 + 73: + dport_map_port: 46 + 74: + dport_map_port: 47 + 75: + dport_map_port: 48 + 1: + dport_map_port: 49 + 15: + dport_map_port: 50 + 34: + dport_map_port: 51 + 32: + dport_map_port: 52 + 52: + dport_map_port: 53 + 54: + dport_map_port: 54 + 62: + dport_map_port: 55 + 60: + dport_map_port: 56 +... + +--- +device: + 0: + DEVICE_CONFIG: + # CORE CLOCK FREQUENCY + CORE_CLK_FREQ: CLK_1350MHZ + # PP CLOCK FREQUENCY + PP_CLK_FREQ: CLK_1350MHZ +... + +--- +device: + 0: + PC_PM_CORE: + ? + PC_PM_ID: 1 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x37152604 + RX_LANE_MAP: 0x36174052 + TX_POLARITY_FLIP: 0xa + RX_POLARITY_FLIP: 0xb2 + ? + PC_PM_ID: 2 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x12537064 + RX_LANE_MAP: 0x07654213 + TX_POLARITY_FLIP: 0x8e + RX_POLARITY_FLIP: 0x41 + ? + PC_PM_ID: 3 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x01234576 + RX_LANE_MAP: 0x32017645 + TX_POLARITY_FLIP: 0x74 + RX_POLARITY_FLIP: 0xa9 + ? + PC_PM_ID: 4 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x01234576 + RX_LANE_MAP: 0x32017645 + TX_POLARITY_FLIP: 0x74 + RX_POLARITY_FLIP: 0xa9 + ? + PC_PM_ID: 5 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x24056371 + RX_LANE_MAP: 0x10452736 + TX_POLARITY_FLIP: 0xaf + RX_POLARITY_FLIP: 0xc0 + ? + PC_PM_ID: 6 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x67453201 + RX_LANE_MAP: 0x46750132 + TX_POLARITY_FLIP: 0xb7 + RX_POLARITY_FLIP: 0x95 + ? + PC_PM_ID: 7 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x67453201 + RX_LANE_MAP: 0x46750132 + TX_POLARITY_FLIP: 0xb7 + RX_POLARITY_FLIP: 0x95 + ? + PC_PM_ID: 8 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x67453201 + RX_LANE_MAP: 0x46750132 + TX_POLARITY_FLIP: 0xb7 + RX_POLARITY_FLIP: 0x95 + ? + PC_PM_ID: 9 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x37452106 + RX_LANE_MAP: 0x24053617 + TX_POLARITY_FLIP: 0x20 + RX_POLARITY_FLIP: 0xcf + ? + PC_PM_ID: 10 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x03162475 + RX_LANE_MAP: 0x53216740 + TX_POLARITY_FLIP: 0x63 + RX_POLARITY_FLIP: 0x2b + ? + PC_PM_ID: 11 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x67542310 + RX_LANE_MAP: 0x45760132 + TX_POLARITY_FLIP: 0xee + RX_POLARITY_FLIP: 0x0 + ? + PC_PM_ID: 12 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x12735064 + RX_LANE_MAP: 0x07654213 + TX_POLARITY_FLIP: 0x76 + RX_POLARITY_FLIP: 0x69 + ? + PC_PM_ID: 13 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x01324567 + RX_LANE_MAP: 0x32017546 + TX_POLARITY_FLIP: 0x8b + RX_POLARITY_FLIP: 0x56 + ? + PC_PM_ID: 14 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x03172465 + RX_LANE_MAP: 0x26147350 + TX_POLARITY_FLIP: 0xed + RX_POLARITY_FLIP: 0x21 + ? + PC_PM_ID: 15 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x06275341 + RX_LANE_MAP: 0x20574163 + TX_POLARITY_FLIP: 0xb5 + RX_POLARITY_FLIP: 0x7e + ? + PC_PM_ID: 16 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x61503247 + RX_LANE_MAP: 0x47103526 + TX_POLARITY_FLIP: 0x88 + RX_POLARITY_FLIP: 0x31 + ? + PC_PM_ID: 17 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x74615203 + RX_LANE_MAP: 0x14256073 + TX_POLARITY_FLIP: 0xa0 + RX_POLARITY_FLIP: 0x85 + ? + PC_PM_ID: 18 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x76452301 + RX_LANE_MAP: 0x45761320 + TX_POLARITY_FLIP: 0xb8 + RX_POLARITY_FLIP: 0x6f + ? + PC_PM_ID: 19 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x64705312 + RX_LANE_MAP: 0x57420136 + TX_POLARITY_FLIP: 0xcb + RX_POLARITY_FLIP: 0xec + ? + PC_PM_ID: 20 + CORE_INDEX: 0 + : + TX_LANE_MAP_AUTO: 0 + RX_LANE_MAP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_LANE_MAP: 0x10235467 + RX_LANE_MAP: 0x32017645 + TX_POLARITY_FLIP: 0xee + RX_POLARITY_FLIP: 0x0 +... + +--- +device: + 0: + PC_PORT_PHYS_MAP: + ? + # CPU port + PORT_ID: 0 + : + PC_PHYS_PORT_ID: 0 + ? + PORT_ID: 1 + : + PC_PHYS_PORT_ID: 1 + ? + PORT_ID: 3 + : + PC_PHYS_PORT_ID: 9 + ? + PORT_ID: 4 + : + PC_PHYS_PORT_ID: 11 + ? + PORT_ID: 5 + : + PC_PHYS_PORT_ID: 13 + ? + PORT_ID: 6 + : + PC_PHYS_PORT_ID: 15 + ? + PORT_ID: 7 + : + PC_PHYS_PORT_ID: 17 + ? + PORT_ID: 8 + : + PC_PHYS_PORT_ID: 19 + ? + PORT_ID: 9 + : + PC_PHYS_PORT_ID: 21 + ? + PORT_ID: 10 + : + PC_PHYS_PORT_ID: 23 + ? + PORT_ID: 11 + : + PC_PHYS_PORT_ID: 25 + ? + PORT_ID: 12 + : + PC_PHYS_PORT_ID: 27 + ? + PORT_ID: 13 + : + PC_PHYS_PORT_ID: 29 + ? + PORT_ID: 14 + : + PC_PHYS_PORT_ID: 31 + ? + PORT_ID: 15 + : + PC_PHYS_PORT_ID: 33 + ? + PORT_ID: 20 + : + PC_PHYS_PORT_ID: 41 + ? + PORT_ID: 21 + : + PC_PHYS_PORT_ID: 43 + ? + PORT_ID: 22 + : + PC_PHYS_PORT_ID: 45 + ? + PORT_ID: 23 + : + PC_PHYS_PORT_ID: 47 + ? + PORT_ID: 24 + : + PC_PHYS_PORT_ID: 49 + ? + PORT_ID: 25 + : + PC_PHYS_PORT_ID: 51 + ? + PORT_ID: 26 + : + PC_PHYS_PORT_ID: 53 + ? + PORT_ID: 27 + : + PC_PHYS_PORT_ID: 55 + ? + PORT_ID: 28 + : + PC_PHYS_PORT_ID: 57 + ? + PORT_ID: 29 + : + PC_PHYS_PORT_ID: 59 + ? + PORT_ID: 30 + : + PC_PHYS_PORT_ID: 61 + ? + PORT_ID: 31 + : + PC_PHYS_PORT_ID: 63 + ? + PORT_ID: 32 + : + PC_PHYS_PORT_ID: 65 + ? + PORT_ID: 34 + : + PC_PHYS_PORT_ID: 73 + ? + PORT_ID: 40 + : + PC_PHYS_PORT_ID: 81 + ? + PORT_ID: 41 + : + PC_PHYS_PORT_ID: 83 + ? + PORT_ID: 42 + : + PC_PHYS_PORT_ID: 85 + ? + PORT_ID: 43 + : + PC_PHYS_PORT_ID: 87 + ? + PORT_ID: 44 + : + PC_PHYS_PORT_ID: 89 + ? + PORT_ID: 45 + : + PC_PHYS_PORT_ID: 91 + ? + PORT_ID: 46 + : + PC_PHYS_PORT_ID: 93 + ? + PORT_ID: 47 + : + PC_PHYS_PORT_ID: 95 + ? + PORT_ID: 48 + : + PC_PHYS_PORT_ID: 97 + ? + PORT_ID: 49 + : + PC_PHYS_PORT_ID: 99 + ? + PORT_ID: 50 + : + PC_PHYS_PORT_ID: 101 + ? + PORT_ID: 51 + : + PC_PHYS_PORT_ID: 103 + ? + PORT_ID: 52 + : + PC_PHYS_PORT_ID: 105 + ? + PORT_ID: 54 + : + PC_PHYS_PORT_ID: 113 + ? + PORT_ID: 60 + : + PC_PHYS_PORT_ID: 121 + ? + PORT_ID: 62 + : + PC_PHYS_PORT_ID: 129 + ? + PORT_ID: 64 + : + PC_PHYS_PORT_ID: 137 + ? + PORT_ID: 65 + : + PC_PHYS_PORT_ID: 139 + ? + PORT_ID: 66 + : + PC_PHYS_PORT_ID: 141 + ? + PORT_ID: 67 + : + PC_PHYS_PORT_ID: 143 + ? + PORT_ID: 68 + : + PC_PHYS_PORT_ID: 145 + ? + PORT_ID: 69 + : + PC_PHYS_PORT_ID: 147 + ? + PORT_ID: 70 + : + PC_PHYS_PORT_ID: 149 + ? + PORT_ID: 71 + : + PC_PHYS_PORT_ID: 151 + ? + PORT_ID: 72 + : + PC_PHYS_PORT_ID: 153 + ? + PORT_ID: 73 + : + PC_PHYS_PORT_ID: 155 + ? + PORT_ID: 74 + : + PC_PHYS_PORT_ID: 157 + ? + PORT_ID: 75 + : + PC_PHYS_PORT_ID: 159 +... + +--- +device: + 0: + PC_PORT: + ? + PORT_ID: 0 + : + ENABLE: 1 + SPEED: 10000 + NUM_LANES: 1 + ? + PORT_ID: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75] + : + ENABLE: 0 + SPEED: 100000 + FEC_MODE: PC_FEC_RS544 + NUM_LANES: 2 + LINK_TRAINING: 0 + MAX_FRAME_SIZE: 9416 + ? + PORT_ID: [1, 15, 32, 34, 52, 54, 60, 62] + : + ENABLE: 0 + SPEED: 400000 + FEC_MODE: PC_FEC_RS544_2XN + NUM_LANES: 8 + LINK_TRAINING: 0 + MAX_FRAME_SIZE: 9416 +... + +--- +device: + 0: + PC_PMD_FIRMWARE: + ? + PORT_ID: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 1, 15, 32, 34, 52, 54, 60, 62] + : + MEDIUM_TYPE_AUTO: 0 + MEDIUM_TYPE: PC_PHY_MEDIUM_COPPER +... + +--- +device: + 0: + TM_SCHEDULER_CONFIG: + NUM_MC_Q: NUM_MC_Q_4 +... \ No newline at end of file diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/cpu.cint b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/cpu.cint new file mode 100644 index 000000000000..6c96e0ab095c --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/cpu.cint @@ -0,0 +1,82 @@ +cint_reset(); + +int cint_field_group_create(int unit, bcm_field_group_t grp) +{ + int rv; + + bcm_field_qset_t qset; + bcm_field_aset_t aset; + + BCM_FIELD_QSET_INIT(qset); + BCM_FIELD_QSET_ADD(qset,bcmFieldQualifyDstMac); + BCM_FIELD_QSET_ADD(qset, bcmFieldQualifyStageIngress); + + BCM_FIELD_ASET_INIT(aset); + BCM_FIELD_ASET_ADD(aset, bcmFieldActionCopyToCpu); + + rv = bcm_field_group_create_mode_id(unit, qset, 103, bcmFieldGroupModeAuto, grp); + if (rv != BCM_E_NONE) { + printf("bcm_field_group_create_mode_id failed, rv = %d\r\n", rv); + return -1; + } + printf("cint_field_group_create success!!!, rv = %d\r\n", rv); + + bcm_field_group_dump(unit,grp); + return 0; +} + +int cint_field_entry_create1(int unit, bcm_field_group_t grp,bcm_field_entry_t entry) +{ + int rv; + bcm_mac_t dst_mac = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + bcm_mac_t mac_mask = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + rv = bcm_field_entry_create_id(unit, grp, entry); + if (rv != BCM_E_NONE) { + printf("bcm_field_entry_create_id failed, rv = %d\r\n", rv); + return -1; + } + + + rv =bcm_field_qualify_DstMac(unit, entry, dst_mac, mac_mask); + if (rv != BCM_E_NONE) { + printf("bcm_field_qualify_DstMac failed,ret = %d\r\n", rv); + bcm_field_entry_destroy(unit, entry); + return -1; + } + + rv = bcm_field_action_add(unit, entry, bcmFieldActionCopyToCpu, 1, 0); + if (rv != BCM_E_NONE) { + printf("bcm_field_action_add failed, rv = %d \r\n", rv); + bcm_field_entry_destroy(unit, entry); + return -1; + } + + rv = bcm_field_action_add(unit, entry, bcmFieldActionDrop, 1, 0); + if (rv != BCM_E_NONE) { + printf("bcm_field_action_add failed, rv = %d \r\n", rv); + bcm_field_entry_destroy(unit, entry); + return -1; + } + + rv = bcm_field_entry_install(unit, entry); + if (rv != BCM_E_NONE) { + printf("bcm_field_entry_install failed,ret = %d\r\n", rv); + bcm_field_entry_destroy(unit, entry); + return -1; + } + + printf("********************* BEGIN ****************************\r\n"); + bcm_field_entry_dump(unit, entry); + printf("*********************** END ****************************\r\n"); + + return 0; +} + +cint_field_group_create(0,5); +cint_field_entry_create1(0,5,2048); + +//bcm_field_entry_destroy(0, 2048); +//bcm_field_group_destroy(0, 5); + + diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/custom_led.bin b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/custom_led.bin new file mode 100644 index 0000000000000000000000000000000000000000..58044f407eecc8b31be8128da4f836977fc08c9f GIT binary patch literal 352 zcmWm5O-Pe*9KiAKUzQJIz7Zv(M0CR;58>LwoUv@%BmRbXNE;&gq&Y_T1YRQ8@M7$u zl!%1n3-jgb)d#$YPN|c4a1w~(Wt}{D8H9T1qJHk5($yGqztE}`Qes3$%r7y^?2(zSYGZ-8{V$;c^G=(7aGJofR5<6X zq1o5gwEh46GxP7U=DEBm_uc=)!kC1jlV&FN_3qDgRfm3Eq~!OgD;ZBtB~{>$gMMA8 zQ{#QgICnJt>a4i4Et|3-rQK2ow4(EzHeO&5B*aU?bP}P0N~)-#jz>JE9yd>EppkwO q3^2$$EQa|&k`x~q;~O)~GRF_*`N<;7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/fru.py b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/fru.py new file mode 100644 index 000000000000..f95164e03601 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/fru.py @@ -0,0 +1,961 @@ +#!/usr/bin/python3 +import collections +from datetime import datetime, timedelta +from bitarray import bitarray + + +__DEBUG__ = "N" + + +class FruException(Exception): + def __init__(self, message='fruerror', code=-100): + err = 'errcode: {0} message:{1}'.format(code, message) + Exception.__init__(self, err) + self.code = code + self.message = message + + +def e_print(err): + print("ERROR: " + err) + + +def d_print(debug_info): + if __DEBUG__ == "Y": + print(debug_info) + + +class FruUtil(): + @staticmethod + def decodeLength(value): + a = bitarray(8) + a.setall(True) + a[0:1] = 0 + a[1:2] = 0 + x = ord(a.tobytes()) + return x & ord(value) + + @staticmethod + def minToData(): + starttime = datetime(1996, 1, 1, 0, 0, 0) + endtime = datetime.now() + seconds = (endtime - starttime).total_seconds() + mins = seconds // 60 + m = int(round(mins)) + return m + + @staticmethod + def getTimeFormat(): + return datetime.now().strftime('%Y-%m-%d') + + @staticmethod + def getTypeLength(value): + if value is None or len(value) == 0: + return 0 + a = bitarray(8) + a.setall(False) + a[0:1] = 1 + a[1:2] = 1 + x = ord(a.tobytes()) + return x | len(value) + + @staticmethod + def checksum(b): + result = 0 + for item in b: + result += ord(item) + return (0x100 - (result & 0xff)) & 0xff + + +class BaseArea(object): + SUGGESTED_SIZE_COMMON_HEADER = 8 + SUGGESTED_SIZE_INTERNAL_USE_AREA = 72 + SUGGESTED_SIZE_CHASSIS_INFO_AREA = 32 + SUGGESTED_SIZE_BOARD_INFO_AREA = 80 + SUGGESTED_SIZE_PRODUCT_INFO_AREA = 80 + + INITVALUE = b'\x00' + resultvalue = INITVALUE * 256 + COMMON_HEAD_VERSION = b'\x01' + __childList = None + + def __init__(self, name="", size=0, offset=0): + self.__childList = [] + self._offset = offset + self.name = name + self._size = size + self._isPresent = False + self._data = b'\x00' * size + + @property + def childList(self): + return self.__childList + + @childList.setter + def childList(self, value): + self.__childList = value + + @property + def offset(self): + return self._offset + + @offset.setter + def offset(self, value): + self._offset = value + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + self._size = value + + @property + def data(self): + return self._data + + @data.setter + def data(self, value): + self._data = value + + @property + def isPresent(self): + return self._isPresent + + @isPresent.setter + def isPresent(self, value): + self._isPresent = value + + +class InternalUseArea(BaseArea): + pass + + +class ChassisInfoArea(BaseArea): + pass + + +class BoardInfoArea(BaseArea): + _boardTime = None + _fields = None + _mfg_date = None + areaversion = None + _boardversion = None + _language = None + + def __str__(self): + formatstr = "version : %x\n" \ + "length : %d \n" \ + "language : %x \n" \ + "mfg_date : %s \n" \ + "boardManufacturer : %s \n" \ + "boardProductName : %s \n" \ + "boardSerialNumber : %s \n" \ + "boardPartNumber : %s \n" \ + "fruFileId : %s \n" + + tmpstr = formatstr % (ord(self.boardversion), self.size, + self.language, self.getMfgRealData(), + self.boardManufacturer, self.boardProductName, + self.boardSerialNumber, self.boardPartNumber, + self.fruFileId) + for i in range(1, 11): + valtmp = "boardextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + tmpstr += "boardextra%d : %s \n" % (i, valtmpval) + else: + break + + return tmpstr + + def todict(self): + dic = collections.OrderedDict() + dic["boardversion"] = ord(self.boardversion) + dic["boardlength"] = self.size + dic["boardlanguage"] = self.language + dic["boardmfg_date"] = self.getMfgRealData() + dic["boardManufacturer"] = self.boardManufacturer + dic["boardProductName"] = self.boardProductName + dic["boardSerialNumber"] = self.boardSerialNumber + dic["boardPartNumber"] = self.boardPartNumber + dic["boardfruFileId"] = self.fruFileId + for i in range(1, 11): + valtmp = "boardextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + dic[valtmp] = valtmpval + else: + break + return dic + + def decodedata(self): + index = 0 + self.areaversion = self.data[index] + index += 1 + d_print("decode length :%d class size:%d" % + ((ord(self.data[index]) * 8), self.size)) + index += 2 + + timetmp = self.data[index: index + 3] + self.mfg_date = ord(timetmp[0]) | ( + ord(timetmp[1]) << 8) | (ord(timetmp[2]) << 16) + d_print("decode getMfgRealData :%s" % self.getMfgRealData()) + index += 3 + + templen = FruUtil.decodeLength(self.data[index]) + self.boardManufacturer = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode boardManufacturer:%s" % self.boardManufacturer) + + templen = FruUtil.decodeLength(self.data[index]) + self.boardProductName = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode boardProductName:%s" % self.boardProductName) + + templen = FruUtil.decodeLength(self.data[index]) + self.boardSerialNumber = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode boardSerialNumber:%s" % self.boardSerialNumber) + + templen = FruUtil.decodeLength(self.data[index]) + self.boardPartNumber = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode boardPartNumber:%s" % self.boardPartNumber) + + templen = FruUtil.decodeLength(self.data[index]) + self.fruFileId = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode fruFileId:%s" % self.fruFileId) + + for i in range(1, 11): + valtmp = "boardextra%d" % i + if self.data[index] != chr(0xc1): + templen = FruUtil.decodeLength(self.data[index]) + tmpval = self.data[index + 1: index + templen + 1] + setattr(self, valtmp, tmpval) + index += templen + 1 + d_print("decode boardextra%d:%s" % (i, tmpval)) + else: + break + + def fruSetValue(self, field, value): + tmp_field = getattr(self, field, None) + if tmp_field is not None: + setattr(self, field, value) + + def recalcute(self): + d_print("boardInfoArea version:%x" % ord(self.boardversion)) + d_print("boardInfoArea length:%d" % self.size) + d_print("boardInfoArea language:%x" % self.language) + self.mfg_date = FruUtil.minToData() + d_print("boardInfoArea mfg_date:%x" % self.mfg_date) + + self.data = chr(ord(self.boardversion)) + \ + chr(self.size // 8) + chr(self.language) + + self.data += chr(self.mfg_date & 0xFF) + self.data += chr((self.mfg_date >> 8) & 0xFF) + self.data += chr((self.mfg_date >> 16) & 0xFF) + + d_print("boardInfoArea boardManufacturer:%s" % self.boardManufacturer) + typelength = FruUtil.getTypeLength(self.boardManufacturer) + self.data += chr(typelength) + self.data += self.boardManufacturer + + d_print("boardInfoArea boardProductName:%s" % self.boardProductName) + self.data += chr(FruUtil.getTypeLength(self.boardProductName)) + self.data += self.boardProductName + + d_print("boardInfoArea boardSerialNumber:%s" % self.boardSerialNumber) + self.data += chr(FruUtil.getTypeLength(self.boardSerialNumber)) + self.data += self.boardSerialNumber + + d_print("boardInfoArea boardPartNumber:%s" % self.boardPartNumber) + self.data += chr(FruUtil.getTypeLength(self.boardPartNumber)) + self.data += self.boardPartNumber + + d_print("boardInfoArea fruFileId:%s" % self.fruFileId) + self.data += chr(FruUtil.getTypeLength(self.fruFileId)) + self.data += self.fruFileId + + for i in range(1, 11): + valtmp = "boardextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + d_print("boardInfoArea boardextra%d:%s" % (i, valtmpval)) + self.data += chr(FruUtil.getTypeLength(valtmpval)) + if valtmpval is not None: + self.data += valtmpval + else: + break + + self.data += chr(0xc1) + + if len(self.data) > (self.size - 1): + incr = (len(self.data) - self.size) // 8 + 1 + self.size += incr * 8 + + self.data = self.data[0:1] + chr(self.size // 8) + self.data[2:] + d_print("self data:%d" % len(self.data)) + d_print("self size:%d" % self.size) + d_print("adjust size:%d" % (self.size - len(self.data) - 1)) + self.data = self.data.ljust((self.size - 1), chr(self.INITVALUE[0])) + + # checksum + checksum = FruUtil.checksum(self.data) + d_print("board info checksum:%x" % checksum) + self.data += chr(checksum) + + def getMfgRealData(self): + starttime = datetime(1996, 1, 1, 0, 0, 0) + mactime = starttime + timedelta(minutes=self.mfg_date) + return mactime + + @property + def language(self): + self._language = 25 + return self._language + + @property + def mfg_date(self): + return self._mfg_date + + @mfg_date.setter + def mfg_date(self, val): + self._mfg_date = val + + @property + def boardversion(self): + self._boardversion = self.COMMON_HEAD_VERSION + return self._boardversion + + @property + def fruFileId(self): + return self._FRUFileID + + @fruFileId.setter + def fruFileId(self, val): + self._FRUFileID = val + + @property + def boardPartNumber(self): + return self._boardPartNumber + + @boardPartNumber.setter + def boardPartNumber(self, val): + self._boardPartNumber = val + + @property + def boardSerialNumber(self): + return self._boardSerialNumber + + @boardSerialNumber.setter + def boardSerialNumber(self, val): + self._boardSerialNumber = val + + @property + def boardProductName(self): + return self._boradProductName + + @boardProductName.setter + def boardProductName(self, val): + self._boradProductName = val + + @property + def boardManufacturer(self): + return self._boardManufacturer + + @boardManufacturer.setter + def boardManufacturer(self, val): + self._boardManufacturer = val + + @property + def boardTime(self): + return self._boardTime + + @boardTime.setter + def boardTime(self, val): + self._boardTime = val + + @property + def fields(self): + return self._fields + + @fields.setter + def fields(self, val): + self._fields = val + + +class ProductInfoArea(BaseArea): + _productManufacturer = None + _productAssetTag = None + _FRUFileID = None + _language = None + + def __str__(self): + formatstr = "version : %x\n" \ + "length : %d \n" \ + "language : %x \n" \ + "productManufacturer : %s \n" \ + "productName : %s \n" \ + "productPartModelName: %s \n" \ + "productVersion : %s \n" \ + "productSerialNumber : %s \n" \ + "productAssetTag : %s \n" \ + "fruFileId : %s \n" + + tmpstr = formatstr % (ord(self.areaversion), self.size, + self.language, self.productManufacturer, + self.productName, self.productPartModelName, + self.productVersion, self.productSerialNumber, + self.productAssetTag, self.fruFileId) + + for i in range(1, 11): + valtmp = "productextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + tmpstr += "productextra%d : %s \n" % (i, valtmpval) + else: + break + + return tmpstr + + def todict(self): + dic = collections.OrderedDict() + dic["productversion"] = ord(self.areaversion) + dic["productlength"] = self.size + dic["productlanguage"] = self.language + dic["productManufacturer"] = self.productManufacturer + dic["productName"] = self.productName + dic["productPartModelName"] = self.productPartModelName + dic["productVersion"] = int(self.productVersion, 16) + dic["productSerialNumber"] = self.productSerialNumber + dic["productAssetTag"] = self.productAssetTag + dic["productfruFileId"] = self.fruFileId + for i in range(1, 11): + valtmp = "productextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + dic[valtmp] = valtmpval + else: + break + return dic + + def decodedata(self): + index = 0 + self.areaversion = self.data[index] # 0 + index += 1 + d_print("decode length %d" % (ord(self.data[index]) * 8)) + d_print("class size %d" % self.size) + index += 2 + + templen = FruUtil.decodeLength(self.data[index]) + self.productManufacturer = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productManufacturer:%s" % self.productManufacturer) + + templen = FruUtil.decodeLength(self.data[index]) + self.productName = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productName:%s" % self.productName) + + templen = FruUtil.decodeLength(self.data[index]) + self.productPartModelName = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productPartModelName:%s" % self.productPartModelName) + + templen = FruUtil.decodeLength(self.data[index]) + self.productVersion = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productVersion:%s" % self.productVersion) + + templen = FruUtil.decodeLength(self.data[index]) + self.productSerialNumber = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productSerialNumber:%s" % self.productSerialNumber) + + templen = FruUtil.decodeLength(self.data[index]) + self.productAssetTag = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode productAssetTag:%s" % self.productAssetTag) + + templen = FruUtil.decodeLength(self.data[index]) + self.fruFileId = self.data[index + 1: index + templen + 1] + index += templen + 1 + d_print("decode fruFileId:%s" % self.fruFileId) + + for i in range(1, 11): + valtmp = "productextra%d" % i + if self.data[index] != chr(0xc1) and index < self.size - 1: + templen = FruUtil.decodeLength(self.data[index]) + if templen == 0: + break + tmpval = self.data[index + 1: index + templen + 1] + d_print("decode boardextra%d:%s" % (i, tmpval)) + setattr(self, valtmp, tmpval) + index += templen + 1 + else: + break + + @property + def productVersion(self): + return self._productVersion + + @productVersion.setter + def productVersion(self, name): + self._productVersion = name + + @property + def areaversion(self): + self._areaversion = self.COMMON_HEAD_VERSION + return self._areaversion + + @areaversion.setter + def areaversion(self, name): + self._areaversion = name + + @property + def language(self): + self._language = 25 + return self._language + + @property + def productManufacturer(self): + return self._productManufacturer + + @productManufacturer.setter + def productManufacturer(self, name): + self._productManufacturer = name + + @property + def productName(self): + return self._productName + + @productName.setter + def productName(self, name): + self._productName = name + + @property + def productPartModelName(self): + return self._productPartModelName + + @productPartModelName.setter + def productPartModelName(self, name): + self._productPartModelName = name + + @property + def productSerialNumber(self): + return self._productSerialNumber + + @productSerialNumber.setter + def productSerialNumber(self, name): + self._productSerialNumber = name + + @property + def productAssetTag(self): + return self._productAssetTag + + @productAssetTag.setter + def productAssetTag(self, name): + self._productAssetTag = name + + @property + def fruFileId(self): + return self._FRUFileID + + @fruFileId.setter + def fruFileId(self, name): + self._FRUFileID = name + + def fruSetValue(self, field, value): + tmp_field = getattr(self, field, None) + if tmp_field is not None: + setattr(self, field, value) + + def recalcute(self): + d_print("product version:%x" % ord(self.areaversion)) + d_print("product length:%d" % self.size) + d_print("product language:%x" % self.language) + self.data = chr(ord(self.areaversion)) + \ + chr(self.size // 8) + chr(self.language) + + typelength = FruUtil.getTypeLength(self.productManufacturer) + self.data += chr(typelength) + self.data += self.productManufacturer + + self.data += chr(FruUtil.getTypeLength(self.productName)) + self.data += self.productName + + self.data += chr(FruUtil.getTypeLength(self.productPartModelName)) + self.data += self.productPartModelName + + self.data += chr(FruUtil.getTypeLength(self.productVersion)) + self.data += self.productVersion + + self.data += chr(FruUtil.getTypeLength(self.productSerialNumber)) + self.data += self.productSerialNumber + + self.data += chr(FruUtil.getTypeLength(self.productAssetTag)) + if self.productAssetTag is not None: + self.data += self.productAssetTag + + self.data += chr(FruUtil.getTypeLength(self.fruFileId)) + self.data += self.fruFileId + + for i in range(1, 11): + valtmp = "productextra%d" % i + if hasattr(self, valtmp): + valtmpval = getattr(self, valtmp) + d_print("boardInfoArea productextra%d:%s" % (i, valtmpval)) + self.data += chr(FruUtil.getTypeLength(valtmpval)) + if valtmpval is not None: + self.data += valtmpval + else: + break + + self.data += chr(0xc1) + if len(self.data) > (self.size - 1): + incr = (len(self.data) - self.size) // 8 + 1 + self.size += incr * 8 + d_print("self.data:%d" % len(self.data)) + d_print("self.size:%d" % self.size) + + self.data = self.data[0:1] + chr(self.size // 8) + self.data[2:] + self.data = self.data.ljust((self.size - 1), chr(self.INITVALUE[0])) + checksum = FruUtil.checksum(self.data) + d_print("board info checksum:%x" % checksum) + self.data += chr(checksum) + + +class MultiRecordArea(BaseArea): + pass + + +class Field(object): + + def __init__(self, fieldType="ASCII", fieldData=""): + self.fieldData = fieldData + self.fieldType = fieldType + + @property + def fieldType(self): + return self.fieldType + + @property + def fieldData(self): + return self.fieldData + + +class ipmifru(BaseArea): + _BoardInfoArea = None + _ProductInfoArea = None + _InternalUseArea = None + _ChassisInfoArea = None + _multiRecordArea = None + _productinfoAreaOffset = BaseArea.INITVALUE + _boardInfoAreaOffset = BaseArea.INITVALUE + _internalUserAreaOffset = BaseArea.INITVALUE + _chassicInfoAreaOffset = BaseArea.INITVALUE + _multiRecordAreaOffset = BaseArea.INITVALUE + _bindata = None + _bodybin = None + _version = BaseArea.COMMON_HEAD_VERSION + _zeroCheckSum = None + _frusize = 256 + + def __str__(self): + tmpstr = "" + if self.boardInfoArea.isPresent: + tmpstr += "\nboardinfoarea: \n" + tmpstr += self.boardInfoArea.__str__() + if self.productInfoArea.isPresent: + tmpstr += "\nproductinfoarea: \n" + tmpstr += self.productInfoArea.__str__() + return tmpstr + + def decodeBin(self, eeprom): + commonHead = eeprom[0:8] + d_print("decode version %x" % ord(commonHead[0])) + if ord(self.COMMON_HEAD_VERSION) != ord(commonHead[0]): + raise FruException("HEAD VERSION error,not Fru format!", -10) + if FruUtil.checksum(commonHead[0:7]) != ord(commonHead[7]): + strtemp = "check header checksum error [cal:%02x data:%02x]" % ( + FruUtil.checksum(commonHead[0:7]), ord(commonHead[7])) + raise FruException(strtemp, -3) + if ord(commonHead[1]) != ord(self.INITVALUE): + d_print("Internal Use Area is present") + self.internalUseArea = InternalUseArea( + name="Internal Use Area", size=self.SUGGESTED_SIZE_INTERNAL_USE_AREA) + self.internalUseArea.isPresent = True + self.internalUserAreaOffset = ord(commonHead[1]) + self.internalUseArea.data = eeprom[self.internalUserAreaOffset * 8: ( + self.internalUserAreaOffset * 8 + self.internalUseArea.size)] + if ord(commonHead[2]) != ord(self.INITVALUE): + d_print("Chassis Info Area is present") + self.chassisInfoArea = ChassisInfoArea( + name="Chassis Info Area", size=self.SUGGESTED_SIZE_CHASSIS_INFO_AREA) + self.chassisInfoArea.isPresent = True + self.chassicInfoAreaOffset = ord(commonHead[2]) + self.chassisInfoArea.data = eeprom[self.chassicInfoAreaOffset * 8: ( + self.chassicInfoAreaOffset * 8 + self.chassisInfoArea.size)] + if ord(commonHead[3]) != ord(self.INITVALUE): + self.boardInfoArea = BoardInfoArea( + name="Board Info Area", size=self.SUGGESTED_SIZE_BOARD_INFO_AREA) + self.boardInfoArea.isPresent = True + self.boardInfoAreaOffset = ord(commonHead[3]) + self.boardInfoArea.size = ord( + eeprom[self.boardInfoAreaOffset * 8 + 1]) * 8 + d_print("Board Info Area is present size:%d" % + (self.boardInfoArea.size)) + self.boardInfoArea.data = eeprom[self.boardInfoAreaOffset * 8: ( + self.boardInfoAreaOffset * 8 + self.boardInfoArea.size)] + if FruUtil.checksum(self.boardInfoArea.data[:-1]) != ord(self.boardInfoArea.data[-1:]): + strtmp = "check boardInfoArea checksum error[cal:%02x data:%02x]" % \ + (FruUtil.checksum( + self.boardInfoArea.data[:-1]), ord(self.boardInfoArea.data[-1:])) + raise FruException(strtmp, -3) + self.boardInfoArea.decodedata() + if ord(commonHead[4]) != ord(self.INITVALUE): + d_print("Product Info Area is present") + self.productInfoArea = ProductInfoArea( + name="Product Info Area ", size=self.SUGGESTED_SIZE_PRODUCT_INFO_AREA) + self.productInfoArea.isPresent = True + self.productinfoAreaOffset = ord(commonHead[4]) + d_print("length offset value: %02x" % + ord(eeprom[self.productinfoAreaOffset * 8 + 1])) + self.productInfoArea.size = ord( + eeprom[self.productinfoAreaOffset * 8 + 1]) * 8 + d_print("Product Info Area is present size:%d" % + (self.productInfoArea.size)) + + self.productInfoArea.data = eeprom[self.productinfoAreaOffset * 8: ( + self.productinfoAreaOffset * 8 + self.productInfoArea.size)] + if FruUtil.checksum(self.productInfoArea.data[:-1]) != ord(self.productInfoArea.data[-1:]): + strtmp = "check productInfoArea checksum error [cal:%02x data:%02x]" % ( + FruUtil.checksum(self.productInfoArea.data[:-1]), ord(self.productInfoArea.data[-1:])) + raise FruException(strtmp, -3) + self.productInfoArea.decodedata() + if ord(commonHead[5]) != ord(self.INITVALUE): + self.multiRecordArea = MultiRecordArea( + name="MultiRecord record Area ") + d_print("MultiRecord record present") + self.multiRecordArea.isPresent = True + self.multiRecordAreaOffset = ord(commonHead[5]) + self.multiRecordArea.data = eeprom[self.multiRecordAreaOffset * 8: ( + self.multiRecordAreaOffset * 8 + self.multiRecordArea.size)] + + def initDefault(self): + self.version = self.COMMON_HEAD_VERSION + self.internalUserAreaOffset = self.INITVALUE + self.chassicInfoAreaOffset = self.INITVALUE + self.boardInfoAreaOffset = self.INITVALUE + self.productinfoAreaOffset = self.INITVALUE + self.multiRecordAreaOffset = self.INITVALUE + self.zeroCheckSum = self.INITVALUE + self.offset = self.SUGGESTED_SIZE_COMMON_HEADER + self.productInfoArea = None + self.internalUseArea = None + self.boardInfoArea = None + self.chassisInfoArea = None + self.multiRecordArea = None + # self.recalcute() + + @property + def version(self): + return self._version + + @version.setter + def version(self, name): + self._version = name + + @property + def internalUserAreaOffset(self): + return self._internalUserAreaOffset + + @internalUserAreaOffset.setter + def internalUserAreaOffset(self, obj): + self._internalUserAreaOffset = obj + + @property + def chassicInfoAreaOffset(self): + return self._chassicInfoAreaOffset + + @chassicInfoAreaOffset.setter + def chassicInfoAreaOffset(self, obj): + self._chassicInfoAreaOffset = obj + + @property + def productinfoAreaOffset(self): + return self._productinfoAreaOffset + + @productinfoAreaOffset.setter + def productinfoAreaOffset(self, obj): + self._productinfoAreaOffset = obj + + @property + def boardInfoAreaOffset(self): + return self._boardInfoAreaOffset + + @boardInfoAreaOffset.setter + def boardInfoAreaOffset(self, obj): + self._boardInfoAreaOffset = obj + + @property + def multiRecordAreaOffset(self): + return self._multiRecordAreaOffset + + @multiRecordAreaOffset.setter + def multiRecordAreaOffset(self, obj): + self._multiRecordAreaOffset = obj + + @property + def zeroCheckSum(self): + return self._zeroCheckSum + + @zeroCheckSum.setter + def zeroCheckSum(self, obj): + self._zeroCheckSum = obj + + @property + def productInfoArea(self): + return self._ProductInfoArea + + @productInfoArea.setter + def productInfoArea(self, obj): + self._ProductInfoArea = obj + + @property + def internalUseArea(self): + return self._InternalUseArea + + @internalUseArea.setter + def internalUseArea(self, obj): + self.internalUseArea = obj + + @property + def boardInfoArea(self): + return self._BoardInfoArea + + @boardInfoArea.setter + def boardInfoArea(self, obj): + self._BoardInfoArea = obj + + @property + def chassisInfoArea(self): + return self._ChassisInfoArea + + @chassisInfoArea.setter + def chassisInfoArea(self, obj): + self._ChassisInfoArea = obj + + @property + def multiRecordArea(self): + return self._multiRecordArea + + @multiRecordArea.setter + def multiRecordArea(self, obj): + self._multiRecordArea = obj + + @property + def bindata(self): + return self._bindata + + @bindata.setter + def bindata(self, obj): + self._bindata = obj + + @property + def bodybin(self): + return self._bodybin + + @bodybin.setter + def bodybin(self, obj): + self._bodybin = obj + + def recalcuteCommonHead(self): + self.bindata = "" + self.offset = self.SUGGESTED_SIZE_COMMON_HEADER + d_print("common Header %d" % self.offset) + d_print("fru eeprom size %d" % self._frusize) + if self.internalUseArea is not None and self.internalUseArea.isPresent: + self.internalUserAreaOffset = self.offset // 8 + self.offset += self.internalUseArea.size + d_print("internalUseArea is present offset:%d" % self.offset) + + if self.chassisInfoArea is not None and self.chassisInfoArea.isPresent: + self.chassicInfoAreaOffset = self.offset // 8 + self.offset += self.chassisInfoArea.size + d_print("chassisInfoArea is present offset:%d" % self.offset) + + if self.boardInfoArea is not None and self.boardInfoArea.isPresent: + self.boardInfoAreaOffset = self.offset // 8 + self.offset += self.boardInfoArea.size + d_print("boardInfoArea is present offset:%d" % self.offset) + d_print("boardInfoArea is present size:%d" % + self.boardInfoArea.size) + + if self.productInfoArea is not None and self.productInfoArea.isPresent: + self.productinfoAreaOffset = self.offset // 8 + self.offset += self.productInfoArea.size + d_print("productInfoArea is present offset:%d" % self.offset) + + if self.multiRecordArea is not None and self.multiRecordArea.isPresent: + self.multiRecordAreaOffset = self.offset // 8 + d_print("multiRecordArea is present offset:%d" % self.offset) + + if self.internalUserAreaOffset == self.INITVALUE: + self.internalUserAreaOffset = 0 + if self.productinfoAreaOffset == self.INITVALUE: + self.productinfoAreaOffset = 0 + if self.chassicInfoAreaOffset == self.INITVALUE: + self.chassicInfoAreaOffset = 0 + if self.boardInfoAreaOffset == self.INITVALUE: + self.boardInfoAreaOffset = 0 + if self.multiRecordAreaOffset == self.INITVALUE: + self.multiRecordAreaOffset = 0 + + self.zeroCheckSum = (0x100 - ord(self.version) - self.internalUserAreaOffset - self.chassicInfoAreaOffset - self.productinfoAreaOffset + - self.boardInfoAreaOffset - self.multiRecordAreaOffset) & 0xff + d_print("zerochecksum:%x" % self.zeroCheckSum) + self.data = "" + self.data += chr(self.version[0]) + chr(self.internalUserAreaOffset) + chr(self.chassicInfoAreaOffset) + chr( + self.boardInfoAreaOffset) + chr(self.productinfoAreaOffset) + chr(self.multiRecordAreaOffset) + chr(self.INITVALUE[0]) + chr(self.zeroCheckSum) + + self.bindata = self.data + self.bodybin + totallen = len(self.bindata) + d_print("totallen %d" % totallen) + if totallen < self._frusize: + self.bindata = self.bindata.ljust(self._frusize, chr(self.INITVALUE[0])) + else: + raise FruException('bin data more than %d' % self._frusize, -2) + + def recalcutebin(self): + self.bodybin = "" + if self.internalUseArea is not None and self.internalUseArea.isPresent: + d_print("internalUseArea present") + self.bodybin += self.internalUseArea.data + if self.chassisInfoArea is not None and self.chassisInfoArea.isPresent: + d_print("chassisInfoArea present") + self.bodybin += self.chassisInfoArea.data + if self.boardInfoArea is not None and self.boardInfoArea.isPresent: + d_print("boardInfoArea present") + self.boardInfoArea.recalcute() + self.bodybin += self.boardInfoArea.data + if self.productInfoArea is not None and self.productInfoArea.isPresent: + d_print("productInfoAreapresent") + self.productInfoArea.recalcute() + self.bodybin += self.productInfoArea.data + if self.multiRecordArea is not None and self.multiRecordArea.isPresent: + d_print("multiRecordArea present") + self.bodybin += self.productInfoArea.data + + def recalcute(self, fru_eeprom_size=256): + self._frusize = fru_eeprom_size + self.recalcutebin() + self.recalcuteCommonHead() + + def setValue(self, area, field, value): + tmp_area = getattr(self, area, None) + if tmp_area is not None: + tmp_area.fruSetValue(field, value) diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/hwsku.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/hwsku.json new file mode 100644 index 000000000000..1535dc8ad4d4 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/hwsku.json @@ -0,0 +1,172 @@ +{ + "interfaces": { + "Ethernet1": { + "default_brkout_mode": "1x100G" + }, + "Ethernet2": { + "default_brkout_mode": "1x100G" + }, + "Ethernet3": { + "default_brkout_mode": "1x100G" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G" + }, + "Ethernet5": { + "default_brkout_mode": "1x100G" + }, + "Ethernet6": { + "default_brkout_mode": "1x100G" + }, + "Ethernet7": { + "default_brkout_mode": "1x100G" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G" + }, + "Ethernet9": { + "default_brkout_mode": "1x100G" + }, + "Ethernet10": { + "default_brkout_mode": "1x100G" + }, + "Ethernet11": { + "default_brkout_mode": "1x100G" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G" + }, + "Ethernet13": { + "default_brkout_mode": "1x100G" + }, + "Ethernet14": { + "default_brkout_mode": "1x100G" + }, + "Ethernet15": { + "default_brkout_mode": "1x100G" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G" + }, + "Ethernet17": { + "default_brkout_mode": "1x100G" + }, + "Ethernet18": { + "default_brkout_mode": "1x100G" + }, + "Ethernet19": { + "default_brkout_mode": "1x100G" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G" + }, + "Ethernet21": { + "default_brkout_mode": "1x100G" + }, + "Ethernet22": { + "default_brkout_mode": "1x100G" + }, + "Ethernet23": { + "default_brkout_mode": "1x100G" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G" + }, + "Ethernet25": { + "default_brkout_mode": "1x100G" + }, + "Ethernet26": { + "default_brkout_mode": "1x100G" + }, + "Ethernet27": { + "default_brkout_mode": "1x100G" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G" + }, + "Ethernet29": { + "default_brkout_mode": "1x100G" + }, + "Ethernet30": { + "default_brkout_mode": "1x100G" + }, + "Ethernet31": { + "default_brkout_mode": "1x100G" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G" + }, + "Ethernet33": { + "default_brkout_mode": "1x100G" + }, + "Ethernet34": { + "default_brkout_mode": "1x100G" + }, + "Ethernet35": { + "default_brkout_mode": "1x100G" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G" + }, + "Ethernet37": { + "default_brkout_mode": "1x100G" + }, + "Ethernet38": { + "default_brkout_mode": "1x100G" + }, + "Ethernet39": { + "default_brkout_mode": "1x100G" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G" + }, + "Ethernet41": { + "default_brkout_mode": "1x100G" + }, + "Ethernet42": { + "default_brkout_mode": "1x100G" + }, + "Ethernet43": { + "default_brkout_mode": "1x100G" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G" + }, + "Ethernet45": { + "default_brkout_mode": "1x100G" + }, + "Ethernet46": { + "default_brkout_mode": "1x100G" + }, + "Ethernet47": { + "default_brkout_mode": "1x100G" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G" + }, + "Ethernet49": { + "default_brkout_mode": "1x400G" + }, + "Ethernet57": { + "default_brkout_mode": "1x400G" + }, + "Ethernet65": { + "default_brkout_mode": "1x400G" + }, + "Ethernet73": { + "default_brkout_mode": "1x400G" + }, + "Ethernet81": { + "default_brkout_mode": "1x400G" + }, + "Ethernet89": { + "default_brkout_mode": "1x400G" + }, + "Ethernet97": { + "default_brkout_mode": "1x400G" + }, + "Ethernet105": { + "default_brkout_mode": "1x400G" + } + } +} \ No newline at end of file diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/installer.conf b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/installer.conf new file mode 100644 index 000000000000..7a9fec8cc99c --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/installer.conf @@ -0,0 +1,2 @@ +CONSOLE_SPEED=115200 +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="intel_idle.max_cstate=0 idle=poll" \ No newline at end of file diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/media_settings.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/media_settings.json new file mode 100644 index 000000000000..7ada042c4504 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/media_settings.json @@ -0,0 +1,1860 @@ +{ + "PORT_MEDIA_SETTINGS": { + "0": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "1": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x0000008C", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "2": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "3": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "4": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "5": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "6": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "7": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "8": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "9": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff8" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "10": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "11": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "12": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "13": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "14": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x0000008C", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "15": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff8" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "16": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffff8" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "17": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "18": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffff8", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "19": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "20": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "21": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "22": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "23": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "24": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "25": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000088", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "26": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "27": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "28": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "29": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "30": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "31": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "32": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "33": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "34": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "35": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "36": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "37": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "38": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffff8", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "39": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000090" + }, + "post1": { + "lane0": "0xfffffff8", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "40": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000088" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "41": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "42": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "43": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "44": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffec" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x0000008C" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "45": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000094", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffffc", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "46": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x0000008C", + "lane1": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "47": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000006" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xffffffe4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000080" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffffc" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000" + } + } + }, + "48": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff0", + "lane1": "0xfffffff0", + "lane2": "0xfffffff0", + "lane3": "0xfffffff0", + "lane4": "0xfffffff4", + "lane5": "0xfffffff0", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "main": { + "lane0": "0x0000008A", + "lane1": "0x0000008A", + "lane2": "0x0000008A", + "lane3": "0x0000008A", + "lane4": "0x00000090", + "lane5": "0x0000008A", + "lane6": "0x00000090", + "lane7": "0x00000090" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "49": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff0", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "main": { + "lane0": "0x0000008E", + "lane1": "0x00000088", + "lane2": "0x00000090", + "lane3": "0x00000088", + "lane4": "0x00000088", + "lane5": "0x00000088", + "lane6": "0x00000088", + "lane7": "0x00000088" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff0", + "lane4": "0xfffffff0", + "lane5": "0xfffffff0", + "lane6": "0xfffffff0", + "lane7": "0xfffffff0" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "50": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff2", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "main": { + "lane0": "0x00000088", + "lane1": "0x0000008C", + "lane2": "0x00000088", + "lane3": "0x00000088", + "lane4": "0x00000084", + "lane5": "0x00000084", + "lane6": "0x00000088", + "lane7": "0x00000088" + }, + "post1": { + "lane0": "0xffffffec", + "lane1": "0xfffffff0", + "lane2": "0xffffffec", + "lane3": "0xffffffec", + "lane4": "0xffffffe8", + "lane5": "0xffffffe8", + "lane6": "0xffffffec", + "lane7": "0xffffffec" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "51": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff0", + "lane1": "0xfffffff0", + "lane2": "0xfffffff0", + "lane3": "0xfffffff0", + "lane4": "0xfffffff0", + "lane5": "0xfffffff0", + "lane6": "0xfffffff0", + "lane7": "0xfffffff0" + }, + "main": { + "lane0": "0x0000008A", + "lane1": "0x0000008A", + "lane2": "0x0000008A", + "lane3": "0x0000008A", + "lane4": "0x00000088", + "lane5": "0x00000084", + "lane6": "0x00000084", + "lane7": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff0", + "lane5": "0xfffffff0", + "lane6": "0xfffffff0", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "52": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000090", + "lane2": "0x0000008E", + "lane3": "0x0000008E", + "lane4": "0x00000090", + "lane5": "0x00000090", + "lane6": "0x0000008E", + "lane7": "0x00000090" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff8", + "lane2": "0xfffffff8", + "lane3": "0xfffffff8", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "53": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff0", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff0", + "lane7": "0xfffffff4" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000084", + "lane2": "0x00000090", + "lane3": "0x00000090", + "lane4": "0x00000090", + "lane5": "0x00000090", + "lane6": "0x00000084", + "lane7": "0x00000090" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "54": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff0", + "lane3": "0xfffffff0", + "lane4": "0xfffffff4", + "lane5": "0xfffffff0", + "lane6": "0xfffffff4", + "lane7": "0xfffffff0" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000090", + "lane2": "0x00000084", + "lane3": "0x00000084", + "lane4": "0x00000090", + "lane5": "0x00000084", + "lane6": "0x00000090", + "lane7": "0x00000084" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff4", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xfffffff4", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + }, + "55": { + "Default": { + "pre2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "pre1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff2", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff0", + "lane5": "0xffffffee", + "lane6": "0xfffffff0", + "lane7": "0xfffffff0" + }, + "main": { + "lane0": "0x00000090", + "lane1": "0x00000086", + "lane2": "0x00000090", + "lane3": "0x00000090", + "lane4": "0x00000084", + "lane5": "0x00000084", + "lane6": "0x00000084", + "lane7": "0x00000088" + }, + "post1": { + "lane0": "0xfffffff4", + "lane1": "0xfffffff0", + "lane2": "0xfffffff4", + "lane3": "0xfffffff4", + "lane4": "0xfffffff4", + "lane5": "0xffffffec", + "lane6": "0xfffffff4", + "lane7": "0xfffffff4" + }, + "post2": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + }, + "post3": { + "lane0": "0x00000000", + "lane1": "0x00000000", + "lane2": "0x00000000", + "lane3": "0x00000000", + "lane4": "0x00000000", + "lane5": "0x00000000", + "lane6": "0x00000000", + "lane7": "0x00000000" + } + } + } + } +} \ No newline at end of file diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/monitor.py b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/monitor.py new file mode 100644 index 000000000000..5fc287892e50 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/monitor.py @@ -0,0 +1,402 @@ +#!/usr/bin/python3 +# * onboard temperature sensors +# * FAN trays +# * PSU +# +import os +from lxml import etree as ET +import glob +import json +from decimal import Decimal +from fru import ipmifru + + +MAILBOX_DIR = "/sys/bus/i2c/devices/" +BOARD_ID_PATH = "/sys/module/platform_common/parameters/dfd_my_type" +BOARD_AIRFLOW_PATH = "/etc/sonic/.airflow" + + +CONFIG_NAME = "dev.xml" + + +def byteTostr(val): + strtmp = '' + for value in val: + strtmp += chr(value) + return strtmp + + +def typeTostr(val): + if isinstance(val, bytes): + strtmp = byteTostr(val) + return strtmp + return val + + +def get_board_id(): + if not os.path.exists(BOARD_ID_PATH): + return "NA" + with open(BOARD_ID_PATH) as fd: + id_str = fd.read().strip() + return "0x%x" % (int(id_str, 10)) + + +def getboardairflow(): + if not os.path.exists(BOARD_AIRFLOW_PATH): + return "NA" + with open(BOARD_AIRFLOW_PATH) as fd: + airflow_str = fd.read().strip() + data = json.loads(airflow_str) + airflow = data.get("board", "NA") + return airflow + + +boardid = get_board_id() +boardairflow = getboardairflow() + + +DEV_XML_FILE_LIST = [ + "dev_" + boardid + "_" + boardairflow + ".xml", + "dev_" + boardid + ".xml", + "dev_" + boardairflow + ".xml", +] + + +def dev_file_read(path, offset, read_len): + retval = "ERR" + val_list = [] + msg = "" + ret = "" + fd = -1 + + if not os.path.exists(path): + return False, "%s %s not found" % (retval, path) + + try: + fd = os.open(path, os.O_RDONLY) + os.lseek(fd, offset, os.SEEK_SET) + ret = os.read(fd, read_len) + for item in ret: + val_list.append(item) + except Exception as e: + msg = str(e) + return False, "%s %s" % (retval, msg) + finally: + if fd > 0: + os.close(fd) + return True, val_list + + +def getPMCreg(location): + retval = 'ERR' + if not os.path.isfile(location): + return "%s %s notfound" % (retval, location) + try: + with open(location, 'r') as fd: + retval = fd.read() + except Exception as error: + return "ERR %s" % str(error) + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + + +# Get a mailbox register +def get_pmc_register(reg_name): + retval = 'ERR' + mb_reg_file = reg_name + filepath = glob.glob(mb_reg_file) + if len(filepath) == 0: + return "%s %s notfound" % (retval, mb_reg_file) + mb_reg_file = filepath[0] + if not os.path.isfile(mb_reg_file): + # print mb_reg_file, 'not found !' + return "%s %s notfound" % (retval, mb_reg_file) + try: + with open(mb_reg_file, 'rb') as fd: + retval = fd.read() + retval = typeTostr(retval) + except Exception as error: + retval = "%s %s read failed, msg: %s" % (retval, mb_reg_file, str(error)) + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + + +class checktype(): + def __init__(self, test1): + self.test1 = test1 + + @staticmethod + def getValue(location, bit, data_type, coefficient=1, addend=0): + try: + value_t = get_pmc_register(location) + if value_t.startswith("ERR") or value_t.startswith("NA"): + return value_t + if data_type == 1: + return float('%.1f' % ((float(value_t) / 1000) + addend)) + if data_type == 2: + return float('%.1f' % (float(value_t) / 100)) + if data_type == 3: + psu_status = int(value_t, 16) + return (psu_status & (1 << bit)) >> bit + if data_type == 4: + return int(value_t, 10) + if data_type == 5: + return float('%.1f' % (float(value_t) / 1000 / 1000)) + if data_type == 6: + return Decimal(float(value_t) * coefficient / 1000).quantize(Decimal('0.000')) + return value_t + except Exception as e: + value_t = "ERR %s" % str(e) + return value_t + + # fanFRU + @staticmethod + def decodeBinByValue(retval): + fru = ipmifru() + fru.decodeBin(retval) + return fru + + @staticmethod + def getfruValue(prob_t, root, val): + try: + ret, binval_bytes = dev_file_read(val, 0, 256) + if ret is False: + return binval_bytes + binval = byteTostr(binval_bytes) + fanpro = {} + ret = checktype.decodeBinByValue(binval) + fanpro['fan_type'] = ret.productInfoArea.productName + fanpro['hw_version'] = ret.productInfoArea.productVersion + fanpro['sn'] = ret.productInfoArea.productSerialNumber + fan_display_name_dict = status.getDecodValue(root, "fan_display_name") + fan_name = fanpro['fan_type'].strip() + if len(fan_display_name_dict) == 0: + return fanpro + if fan_name not in fan_display_name_dict: + prob_t['errcode'] = -1 + prob_t['errmsg'] = '%s' % ("ERR fan name: %s not support" % fan_name) + else: + fanpro['fan_type'] = fan_display_name_dict[fan_name] + return fanpro + except Exception as error: + return "ERR " + str(error) + + @staticmethod + def getslotfruValue(val): + try: + binval = checktype.getValue(val, 0, 0) + if binval.startswith("ERR"): + return binval + slotpro = {} + ret = checktype.decodeBinByValue(binval) + slotpro['slot_type'] = ret.boardInfoArea.boardProductName + slotpro['hw_version'] = ret.boardInfoArea.boardextra1 + slotpro['sn'] = ret.boardInfoArea.boardSerialNumber + return slotpro + except Exception as error: + return "ERR " + str(error) + + @staticmethod + def getpsufruValue(prob_t, root, val): + try: + psu_match = False + binval = checktype.getValue(val, 0, 0) + if binval.startswith("ERR"): + return binval + psupro = {} + ret = checktype.decodeBinByValue(binval) + psupro['type1'] = ret.productInfoArea.productPartModelName + psupro['sn'] = ret.productInfoArea.productSerialNumber + psupro['hw_version'] = ret.productInfoArea.productVersion + psu_dict = status.getDecodValue(root, "psutype") + psupro['type1'] = psupro['type1'].strip() + if len(psu_dict) == 0: + return psupro + for psu_name, display_name in psu_dict.items(): + if psu_name.strip() == psupro['type1']: + psupro['type1'] = display_name + psu_match = True + break + if psu_match is not True: + prob_t['errcode'] = -1 + prob_t['errmsg'] = '%s' % ("ERR psu name: %s not support" % psupro['type1']) + return psupro + except Exception as error: + return "ERR " + str(error) + + +class status(): + def __init__(self, productname): + self.productname = productname + + @staticmethod + def getETroot(filename): + tree = ET.parse(filename) + root = tree.getroot() + return root + + @staticmethod + def getDecodValue(collection, decode): + decodes = collection.find('decode') + testdecode = decodes.find(decode) + test = {} + if testdecode is None: + return test + for neighbor in testdecode.iter('code'): + test[neighbor.attrib["key"]] = neighbor.attrib["value"] + return test + + @staticmethod + def getfileValue(location): + return checktype.getValue(location, " ", " ") + + @staticmethod + def getETValue(a, filename, tagname): + root = status.getETroot(filename) + for neighbor in root.iter(tagname): + prob_t = {} + prob_t.update(neighbor.attrib) + prob_t['errcode'] = 0 + prob_t['errmsg'] = '' + for pros in neighbor.iter("property"): + ret = dict(list(neighbor.attrib.items()) + list(pros.attrib.items())) + if ret.get('e2type') == 'fru' and ret.get("name") == "fru": + fruval = checktype.getfruValue(prob_t, root, ret["location"]) + if isinstance(fruval, str) and fruval.startswith("ERR"): + prob_t['errcode'] = -1 + prob_t['errmsg'] = fruval + break + prob_t.update(fruval) + continue + + if ret.get("name") == "psu" and ret.get('e2type') == 'fru': + psuval = checktype.getpsufruValue(prob_t, root, ret["location"]) + if isinstance(psuval, str) and psuval.startswith("ERR"): + prob_t['errcode'] = -1 + prob_t['errmsg'] = psuval + break + prob_t.update(psuval) + continue + + if ret.get("gettype") == "config": + prob_t[ret["name"]] = ret["value"] + continue + + if 'type' not in ret.keys(): + val = "0" + else: + val = ret["type"] + if 'bit' not in ret.keys(): + bit = "0" + else: + bit = ret["bit"] + if 'coefficient' not in ret.keys(): + coefficient = 1 + else: + coefficient = float(ret["coefficient"]) + if 'addend' not in ret.keys(): + addend = 0 + else: + addend = float(ret["addend"]) + + s = checktype.getValue(ret["location"], int(bit), int(val), coefficient, addend) + if isinstance(s, str) and s.startswith("ERR"): + prob_t['errcode'] = -1 + prob_t['errmsg'] = s + break + if 'default' in ret.keys(): + rt = status.getDecodValue(root, ret['decode']) + prob_t['errmsg'] = rt[str(s)] + if str(s) != ret["default"]: + prob_t['errcode'] = -1 + break + else: + if 'decode' in ret.keys(): + rt = status.getDecodValue(root, ret['decode']) + if (ret['decode'] == "psutype" and s.replace("\x00", "").rstrip() not in rt): + prob_t['errcode'] = -1 + prob_t['errmsg'] = '%s' % ("ERR psu name: %s not support" % + (s.replace("\x00", "").rstrip())) + else: + s = rt[str(s).replace("\x00", "").rstrip()] + name = ret["name"] + prob_t[name] = str(s) + a.append(prob_t) + + @staticmethod + def getCPUValue(a, filename, tagname): + root = status.getETroot(filename) + for neighbor in root.iter(tagname): + location = neighbor.attrib["location"] + L = [] + for dirpath, dirnames, filenames in os.walk(location): + for file in filenames: + if file.endswith("input"): + L.append(os.path.join(dirpath, file)) + L = sorted(L, reverse=False) + for i in range(len(L)): + prob_t = {} + prob_t["name"] = getPMCreg("%s/temp%d_label" % (location, i + 1)) + prob_t["temp"] = float(getPMCreg("%s/temp%d_input" % (location, i + 1))) / 1000 + prob_t["alarm"] = float(getPMCreg("%s/temp%d_crit_alarm" % (location, i + 1))) / 1000 + prob_t["crit"] = float(getPMCreg("%s/temp%d_crit" % (location, i + 1))) / 1000 + prob_t["max"] = float(getPMCreg("%s/temp%d_max" % (location, i + 1))) / 1000 + a.append(prob_t) + + @staticmethod + def getFileName(): + fpath = os.path.dirname(os.path.realpath(__file__)) + for file in DEV_XML_FILE_LIST: + xml = fpath + "/" + file + if os.path.exists(xml): + return xml + return fpath + "/" + CONFIG_NAME + + @staticmethod + def checkFan(ret): + _filename = status.getFileName() + # _filename = "/usr/local/bin/" + status.getFileName() + _tagname = "fan" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getTemp(ret): + _filename = status.getFileName() + # _filename = "/usr/local/bin/" + status.getFileName() + _tagname = "temp" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getPsu(ret): + _filename = status.getFileName() + # _filename = "/usr/local/bin/" + status.getFileName() + _tagname = "psu" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getcputemp(ret): + _filename = status.getFileName() + _tagname = "cpus" + status.getCPUValue(ret, _filename, _tagname) + + @staticmethod + def getDcdc(ret): + _filename = status.getFileName() + _tagname = "dcdc" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getmactemp(ret): + _filename = status.getFileName() + _tagname = "mactemp" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getmacpower(ret): + _filename = status.getFileName() + _tagname = "macpower" + status.getETValue(ret, _filename, _tagname) diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pcie.yaml b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pcie.yaml new file mode 100644 index 000000000000..0395ae1622f0 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pcie.yaml @@ -0,0 +1,486 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: 'Host bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 + (rev 05)' +- bus: '00' + dev: '01' + fn: '0' + id: 6f02 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 1 (rev 05)' +- bus: '00' + dev: '01' + fn: '1' + id: 6f03 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 1 (rev 05)' +- bus: '00' + dev: '02' + fn: '0' + id: 6f04 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '2' + id: 6f06 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '3' + id: 6f07 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 2 (rev 05)' +- bus: '00' + dev: '03' + fn: '0' + id: 6f08 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '1' + id: 6f09 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '2' + id: 6f0a + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '3' + id: 6f0b + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '0' + id: 6f20 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 0 (rev 05)' +- bus: '00' + dev: '04' + fn: '1' + id: 6f21 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 1 (rev 05)' +- bus: '00' + dev: '04' + fn: '2' + id: 6f22 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 2 (rev 05)' +- bus: '00' + dev: '04' + fn: '3' + id: 6f23 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '4' + id: 6f24 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 4 (rev 05)' +- bus: '00' + dev: '04' + fn: '5' + id: 6f25 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 5 (rev 05)' +- bus: '00' + dev: '04' + fn: '6' + id: 6f26 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 6 (rev 05)' +- bus: '00' + dev: '04' + fn: '7' + id: 6f27 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Crystal Beach DMA Channel 7 (rev 05)' +- bus: '00' + dev: '05' + fn: '0' + id: 6f28 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Map/VTd_Misc/System Management (rev 05)' +- bus: '00' + dev: '05' + fn: '1' + id: 6f29 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D IIO Hot Plug (rev 05)' +- bus: '00' + dev: '05' + fn: '2' + id: 6f2a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D IIO RAS/Control Status/Global Errors (rev 05)' +- bus: '00' + dev: '05' + fn: '4' + id: 6f2c + name: 'PIC: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev + 05)' +- bus: '00' + dev: '14' + fn: '0' + id: 8c31 + name: 'USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB + xHCI (rev 05)' +- bus: '00' + dev: '16' + fn: '0' + id: 8c3a + name: 'Communication controller: Intel Corporation 8 Series/C220 Series Chipset + Family MEI Controller #1 (rev 04)' +- bus: '00' + dev: '16' + fn: '1' + id: 8c3b + name: 'Communication controller: Intel Corporation 8 Series/C220 Series Chipset + Family MEI Controller #2 (rev 04)' +- bus: '00' + dev: 1d + fn: '0' + id: 8c26 + name: 'USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB + EHCI #1 (rev 05)' +- bus: '00' + dev: 1f + fn: '0' + id: 8c54 + name: 'ISA bridge: Intel Corporation C224 Series Chipset Family Server Standard + SKU LPC Controller (rev 05)' +- bus: '00' + dev: 1f + fn: '2' + id: 8c02 + name: 'SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port + SATA Controller 1 [AHCI mode] (rev 05)' +- bus: '00' + dev: 1f + fn: '3' + id: 8c22 + name: 'SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller + (rev 05)' +- bus: '04' + dev: '00' + fn: '0' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '04' + dev: '00' + fn: '1' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '05' + dev: '00' + fn: '0' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '05' + dev: '00' + fn: '1' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '06' + dev: '00' + fn: '0' + id: b780 + name: 'Ethernet controller: Broadcom Inc. and subsidiaries Device b780 (rev 01)' +- bus: '07' + dev: '00' + fn: '0' + id: '1533' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev + 03)' +- bus: 08 + dev: '00' + fn: '0' + id: '7011' + name: 'Memory controller: Xilinx Corporation 7-Series FPGA Hard PCIe block (AXI/debug)' +- bus: ff + dev: 0b + fn: '0' + id: 6f81 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 05)' +- bus: ff + dev: 0b + fn: '1' + id: 6f36 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 05)' +- bus: ff + dev: 0b + fn: '2' + id: 6f37 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 05)' +- bus: ff + dev: 0b + fn: '3' + id: 6f76 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link Debug (rev 05)' +- bus: ff + dev: 0c + fn: '0' + id: 6fe0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0c + fn: '1' + id: 6fe1 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0c + fn: '2' + id: 6fe2 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0c + fn: '3' + id: 6fe3 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0f + fn: '0' + id: 6ff8 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0f + fn: '4' + id: 6ffc + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0f + fn: '5' + id: 6ffd + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: 0f + fn: '6' + id: 6ffe + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 05)' +- bus: ff + dev: '10' + fn: '0' + id: 6f1d + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R2PCIe Agent (rev 05)' +- bus: ff + dev: '10' + fn: '1' + id: 6f34 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R2PCIe Agent (rev 05)' +- bus: ff + dev: '10' + fn: '5' + id: 6f1e + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 05)' +- bus: ff + dev: '10' + fn: '6' + id: 6f7d + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 05)' +- bus: ff + dev: '10' + fn: '7' + id: 6f1f + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 05)' +- bus: ff + dev: '12' + fn: '0' + id: 6fa0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Home Agent 0 (rev 05)' +- bus: ff + dev: '12' + fn: '1' + id: 6f30 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Home Agent 0 (rev 05)' +- bus: ff + dev: '13' + fn: '0' + id: 6fa8 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: ff + dev: '13' + fn: '1' + id: 6f71 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: ff + dev: '13' + fn: '2' + id: 6faa + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: ff + dev: '13' + fn: '3' + id: 6fab + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: ff + dev: '13' + fn: '4' + id: 6fac + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: ff + dev: '13' + fn: '5' + id: 6fad + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: ff + dev: '13' + fn: '6' + id: 6fae + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Broadcast (rev 05)' +- bus: ff + dev: '13' + fn: '7' + id: 6faf + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Global Broadcast (rev 05)' +- bus: ff + dev: '14' + fn: '0' + id: 6fb0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 0 Thermal Control (rev 05)' +- bus: ff + dev: '14' + fn: '1' + id: 6fb1 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 1 Thermal Control (rev 05)' +- bus: ff + dev: '14' + fn: '2' + id: 6fb2 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 0 Error (rev 05)' +- bus: ff + dev: '14' + fn: '3' + id: 6fb3 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 1 Error (rev 05)' +- bus: ff + dev: '14' + fn: '4' + id: 6fbc + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 05)' +- bus: ff + dev: '14' + fn: '5' + id: 6fbd + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 05)' +- bus: ff + dev: '14' + fn: '6' + id: 6fbe + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 05)' +- bus: ff + dev: '14' + fn: '7' + id: 6fbf + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 05)' +- bus: ff + dev: '15' + fn: '0' + id: 6fb4 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 2 Thermal Control (rev 05)' +- bus: ff + dev: '15' + fn: '1' + id: 6fb5 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 3 Thermal Control (rev 05)' +- bus: ff + dev: '15' + fn: '2' + id: 6fb6 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 2 Error (rev 05)' +- bus: ff + dev: '15' + fn: '3' + id: 6fb7 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 3 Error (rev 05)' +- bus: ff + dev: 1e + fn: '0' + id: 6f98 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1e + fn: '1' + id: 6f99 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1e + fn: '2' + id: 6f9a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1e + fn: '3' + id: 6fc0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1e + fn: '4' + id: 6f9c + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1f + fn: '0' + id: 6f88 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' +- bus: ff + dev: 1f + fn: '2' + id: 6f8a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 05)' diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform.json new file mode 100644 index 000000000000..5741f32ad453 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform.json @@ -0,0 +1,1151 @@ +{ + "chassis": { + "name": "M2-W6520-48C8QC", + "thermal_manager": false, + "status_led": { + "controllable": false, + "colors": [ + "green", + "blinking_green", + "amber", + "blinking_amber" + ] + }, + "components": [ + { + "name": "CPU_CPLD" + }, + { + "name": "CONNECT_BOARD_CPLD" + }, + { + "name": "MAC_CPLDA" + }, + { + "name": "MAC_CPLDB" + }, + { + "name": "FAN_CPLD" + }, + { + "name": "FPGA" + }, + { + "name": "BIOS" + }, + { + "name": "MAC_CPLDC" + } + ], + "fans": [ + { + "name": "Fantray1_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray1_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray2_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray2_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray3_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray3_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray4_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray4_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray5_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray5_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray6_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + }, + { + "name": "Fantray6_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false, + "colors": [ + "off", + "red", + "amber", + "green" + ] + } + } + ], + "fan_drawers": [ + { + "name": "Fantray1", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray1_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray1_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Fantray2", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray2_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray2_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Fantray3", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray3_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray3_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Fantray4", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray4_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray4_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Fantray5", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray5_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray5_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Fantray6", + "num_fans": 2, + "status_led": { + "controllable": false, + "colors": [ + "amber", + "green", + "off" + ] + }, + "fans": [ + { + "name": "Fantray6_1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + }, + { + "name": "Fantray6_2", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + } + ], + "psus": [ + { + "name": "Psu1", + "voltage": true, + "current": true, + "power": true, + "max_power": false, + "voltage_high_threshold": true, + "voltage_low_threshold": true, + "temperature": true, + "fans_target_speed": true, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "PSU1_FAN1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + }, + { + "name": "Psu2", + "voltage": true, + "current": true, + "power": true, + "max_power": false, + "voltage_high_threshold": true, + "voltage_low_threshold": true, + "temperature": true, + "fans_target_speed": true, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "PSU2_FAN1", + "speed": { + "controllable": true, + "minimum": 50, + "maximum": 100 + }, + "status_led": { + "available": false + } + } + ] + } + ], + "thermals": [ + { + "name": "BOARD_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "CPU_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "INLET_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "OUTLET_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "ASIC_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "PSU1_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + }, + { + "name": "PSU2_TEMP", + "controllable": false, + "low-crit-threshold": true, + "high-crit-threshold": true, + "low-threshold": true, + "high-threshold": true, + "minimum-recorded": true, + "maximum-recorded": true + } + ], + "modules": [], + "sfps": [] + }, + "interfaces": { + "Ethernet1": { + "index": "0,0", + "lanes": "41,42", + "breakout_modes": { + "1x100G": [ + "Eth1" + ] + } + }, + "Ethernet2": { + "index": "1,1", + "lanes": "43,44", + "breakout_modes": { + "1x100G": [ + "Eth2" + ] + } + }, + "Ethernet3": { + "index": "2,2", + "lanes": "45,46", + "breakout_modes": { + "1x100G": [ + "Eth3" + ] + } + }, + "Ethernet4": { + "index": "3,3", + "lanes": "47,48", + "breakout_modes": { + "1x100G": [ + "Eth4" + ] + } + }, + "Ethernet5": { + "index": "4,4", + "lanes": "49,50", + "breakout_modes": { + "1x100G": [ + "Eth5" + ] + } + }, + "Ethernet6": { + "index": "5,5", + "lanes": "51,52", + "breakout_modes": { + "1x100G": [ + "Eth6" + ] + } + }, + "Ethernet7": { + "index": "6,6", + "lanes": "53,54", + "breakout_modes": { + "1x100G": [ + "Eth7" + ] + } + }, + "Ethernet8": { + "index": "7,7", + "lanes": "55,56", + "breakout_modes": { + "1x100G": [ + "Eth8" + ] + } + }, + "Ethernet9": { + "index": "8,8", + "lanes": "57,58", + "breakout_modes": { + "1x100G": [ + "Eth9" + ] + } + }, + "Ethernet10": { + "index": "9,9", + "lanes": "59,60", + "breakout_modes": { + "1x100G": [ + "Eth10" + ] + } + }, + "Ethernet11": { + "index": "10,10", + "lanes": "61,62", + "breakout_modes": { + "1x100G": [ + "Eth11" + ] + } + }, + "Ethernet12": { + "index": "11,11", + "lanes": "63,64", + "breakout_modes": { + "1x100G": [ + "Eth12" + ] + } + }, + "Ethernet13": { + "index": "12,12", + "lanes": "9,10", + "breakout_modes": { + "1x100G": [ + "Eth13" + ] + } + }, + "Ethernet14": { + "index": "13,13", + "lanes": "11,12", + "breakout_modes": { + "1x100G": [ + "Eth14" + ] + } + }, + "Ethernet15": { + "index": "14,14", + "lanes": "13,14", + "breakout_modes": { + "1x100G": [ + "Eth15" + ] + } + }, + "Ethernet16": { + "index": "15,15", + "lanes": "15,16", + "breakout_modes": { + "1x100G": [ + "Eth16" + ] + } + }, + "Ethernet17": { + "index": "16,16", + "lanes": "17,18", + "breakout_modes": { + "1x100G": [ + "Eth17" + ] + } + }, + "Ethernet18": { + "index": "17,17", + "lanes": "19,20", + "breakout_modes": { + "1x100G": [ + "Eth18" + ] + } + }, + "Ethernet19": { + "index": "18,18", + "lanes": "21,22", + "breakout_modes": { + "1x100G": [ + "Eth19" + ] + } + }, + "Ethernet20": { + "index": "19,19", + "lanes": "23,24", + "breakout_modes": { + "1x100G": [ + "Eth20" + ] + } + }, + "Ethernet21": { + "index": "20,20", + "lanes": "25,26", + "breakout_modes": { + "1x100G": [ + "Eth21" + ] + } + }, + "Ethernet22": { + "index": "21,21", + "lanes": "27,28", + "breakout_modes": { + "1x100G": [ + "Eth22" + ] + } + }, + "Ethernet23": { + "index": "22,22", + "lanes": "29,30", + "breakout_modes": { + "1x100G": [ + "Eth23" + ] + } + }, + "Ethernet24": { + "index": "23,23", + "lanes": "31,32", + "breakout_modes": { + "1x100G": [ + "Eth24" + ] + } + }, + "Ethernet25": { + "index": "24,24", + "lanes": "81,82", + "breakout_modes": { + "1x100G": [ + "Eth25" + ] + } + }, + "Ethernet26": { + "index": "25,25", + "lanes": "83,84", + "breakout_modes": { + "1x100G": [ + "Eth26" + ] + } + }, + "Ethernet27": { + "index": "26,26", + "lanes": "85,86", + "breakout_modes": { + "1x100G": [ + "Eth27" + ] + } + }, + "Ethernet28": { + "index": "27,27", + "lanes": "87,88", + "breakout_modes": { + "1x100G": [ + "Eth28" + ] + } + }, + "Ethernet29": { + "index": "28,28", + "lanes": "89,90", + "breakout_modes": { + "1x100G": [ + "Eth29" + ] + } + }, + "Ethernet30": { + "index": "29,29", + "lanes": "91,92", + "breakout_modes": { + "1x100G": [ + "Eth30" + ] + } + }, + "Ethernet31": { + "index": "30,30", + "lanes": "93,94", + "breakout_modes": { + "1x100G": [ + "Eth31" + ] + } + }, + "Ethernet32": { + "index": "31,31", + "lanes": "95,96", + "breakout_modes": { + "1x100G": [ + "Eth32" + ] + } + }, + "Ethernet33": { + "index": "32,32", + "lanes": "97,98", + "breakout_modes": { + "1x100G": [ + "Eth33" + ] + } + }, + "Ethernet34": { + "index": "33,33", + "lanes": "99,100", + "breakout_modes": { + "1x100G": [ + "Eth34" + ] + } + }, + "Ethernet35": { + "index": "34,34", + "lanes": "101,102", + "breakout_modes": { + "1x100G": [ + "Eth35" + ] + } + }, + "Ethernet36": { + "index": "35,35", + "lanes": "103,104", + "breakout_modes": { + "1x100G": [ + "Eth36" + ] + } + }, + "Ethernet37": { + "index": "36,36", + "lanes": "137,138", + "breakout_modes": { + "1x100G": [ + "Eth37" + ] + } + }, + "Ethernet38": { + "index": "37,37", + "lanes": "139,140", + "breakout_modes": { + "1x100G": [ + "Eth38" + ] + } + }, + "Ethernet39": { + "index": "38,38", + "lanes": "141,142", + "breakout_modes": { + "1x100G": [ + "Eth39" + ] + } + }, + "Ethernet40": { + "index": "39,39", + "lanes": "143,144", + "breakout_modes": { + "1x100G": [ + "Eth40" + ] + } + }, + "Ethernet41": { + "index": "40,40", + "lanes": "145,146", + "breakout_modes": { + "1x100G": [ + "Eth41" + ] + } + }, + "Ethernet42": { + "index": "41,41", + "lanes": "147,148", + "breakout_modes": { + "1x100G": [ + "Eth42" + ] + } + }, + "Ethernet43": { + "index": "42,42", + "lanes": "149,150", + "breakout_modes": { + "1x100G": [ + "Eth43" + ] + } + }, + "Ethernet44": { + "index": "43,43", + "lanes": "151,152", + "breakout_modes": { + "1x100G": [ + "Eth44" + ] + } + }, + "Ethernet45": { + "index": "44,44", + "lanes": "153,154", + "breakout_modes": { + "1x100G": [ + "Eth45" + ] + } + }, + "Ethernet46": { + "index": "45,45", + "lanes": "155,156", + "breakout_modes": { + "1x100G": [ + "Eth46" + ] + } + }, + "Ethernet47": { + "index": "46,46", + "lanes": "157,158", + "breakout_modes": { + "1x100G": [ + "Eth47" + ] + } + }, + "Ethernet48": { + "index": "47,47", + "lanes": "159,160", + "breakout_modes": { + "1x100G": [ + "Eth48" + ] + } + }, + "Ethernet49": { + "index": "48,48,48,48,48,48,48,48", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "4x100G": [ + "Eth49/1", + "Eth49/2", + "Eth49/3", + "Eth49/4" + ], + "2x200G": [ + "Eth49/1", + "Eth49/2" + ], + "1x400G": [ + "Eth49" + ] + } + }, + "Ethernet57": { + "index": "49,49,49,49,49,49,49,49", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "4x100G": [ + "Eth50/1", + "Eth50/2", + "Eth50/3", + "Eth50/4" + ], + "2x200G": [ + "Eth50/1", + "Eth50/2" + ], + "1x400G": [ + "Eth50" + ] + } + }, + "Ethernet65": { + "index": "50,50,50,50,50,50,50,50", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "4x100G": [ + "Eth51/1", + "Eth51/2", + "Eth51/3", + "Eth51/4" + ], + "2x200G": [ + "Eth51/1", + "Eth51/2" + ], + "1x400G": [ + "Eth51" + ] + } + }, + "Ethernet73": { + "index": "51,51,51,51,51,51,51,51", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "4x100G": [ + "Eth52/1", + "Eth52/2", + "Eth52/3", + "Eth52/4" + ], + "2x200G": [ + "Eth52/1", + "Eth52/2" + ], + "1x400G": [ + "Eth52" + ] + } + }, + "Ethernet81": { + "index": "52,52,52,52,52,52,52,52", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "4x100G": [ + "Eth53/1", + "Eth53/2", + "Eth53/3", + "Eth53/4" + ], + "2x200G": [ + "Eth53/1", + "Eth53/2" + ], + "1x400G": [ + "Eth53" + ] + } + }, + "Ethernet89": { + "index": "53,53,53,53,53,53,53,53", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G": [ + "Eth54" + ] + } + }, + "Ethernet97": { + "index": "54,54,54,54,54,54,54,54", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G": [ + "Eth55" + ] + } + }, + "Ethernet105": { + "index": "55,55,55,55,55,55,55,55", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G": [ + "Eth56" + ] + } + } + } +} diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_asic b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_asic new file mode 100644 index 000000000000..960467652765 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_asic @@ -0,0 +1 @@ +broadcom diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_components.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_components.json new file mode 100644 index 000000000000..c31dce1d671d --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_components.json @@ -0,0 +1,16 @@ +{ + "chassis": { + "M2-W6520-48C8QC": { + "component": { + "CPU_CPLD": { }, + "CONNECT_BOARD_CPLD": { }, + "FAN_CPLD": { }, + "MAC_CPLDA": { }, + "MAC_CPLDB": { }, + "FPGA": { }, + "BIOS": { }, + "MAC_CPLDC": { } + } + } + } +} diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_env.conf b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_env.conf new file mode 100644 index 000000000000..fc119184d5c1 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/platform_env.conf @@ -0,0 +1,2 @@ +is_ltsw_chip=1 +SYNCD_SHM_SIZE=1g diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/sfputil.py b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/sfputil.py new file mode 100644 index 000000000000..457e844557fc --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/sfputil.py @@ -0,0 +1,322 @@ +# sfputil.py +# +# Platform-specific SFP transceiver interface for SONiC +# + +try: + import time + import subprocess + import re + import os + import threading + import traceback + from sonic_sfp.sfputilbase import SfpUtilBase +except ImportError as e: + raise ImportError("%s - required module not found" % str(e)) + +class SfpUtil(SfpUtilBase): + """Platform-specific SfpUtil class""" + + PORT_START = 0 + PORT_END = 55 + PORTS_IN_BLOCK = 56 + + EEPROM_OFFSET = 6 + SFP_DEVICE_TYPE = "optoe2" + QSFP_DEVICE_TYPE = "optoe1" + OSFP_DEVICE_TYPE = "optoe3" + I2C_MAX_ATTEMPT = 3 + + OPTOE_TYPE1 = 1 + OPTOE_TYPE2 = 2 + OPTOE_TYPE3 = 3 + + SFP_STATUS_INSERTED = '1' + SFP_STATUS_REMOVED = '0' + + _port_to_eeprom_mapping = {} + port_to_i2cbus_mapping ={} + port_dict = {} + + qsfp_ports_list = [] + osfp_ports_list = range(48, PORTS_IN_BLOCK) + + @property + def port_start(self): + return self.PORT_START + + @property + def port_end(self): + return self.PORT_END + + @property + def qsfp_ports(self): + return self.qsfp_ports_list + + @property + def osfp_ports(self): + return self.osfp_ports_list + + @property + def port_to_eeprom_mapping(self): + return self._port_to_eeprom_mapping + + def __init__(self): + for x in range(self.PORT_START, self.PORTS_IN_BLOCK): + self.port_to_i2cbus_mapping[x] = (x + self.EEPROM_OFFSET) + + if self.get_presence(x): + self.port_dict[x] = self.SFP_STATUS_INSERTED + else: + self.port_dict[x] = self.SFP_STATUS_REMOVED + + # if (x < 48): + # self.osfp_ports_list.append(x) + # self.check_optoe_type(x, self.OPTOE_TYPE3) + # continue + + # if (self.check_is_qsfpdd(x)): + # self.osfp_ports_list.append(x) + # self.check_optoe_type(x, self.OPTOE_TYPE3) + # else: + # self.qsfp_ports_list.append(x) + # self.check_optoe_type(x, self.OPTOE_TYPE1) + SfpUtilBase.__init__(self) + + def _sfp_read_file_path(self, file_path, offset, num_bytes): + attempts = 0 + while attempts < self.I2C_MAX_ATTEMPT: + try: + file_path.seek(offset) + read_buf = file_path.read(num_bytes) + except: + attempts += 1 + time.sleep(0.05) + else: + return True, read_buf + return False, None + + def _sfp_eeprom_present(self, sysfs_sfp_i2c_client_eeprompath, offset): + """Tries to read the eeprom file to determine if the + device/sfp is present or not. If sfp present, the read returns + valid bytes. If not, read returns error 'Connection timed out""" + + if not os.path.exists(sysfs_sfp_i2c_client_eeprompath): + return False + else: + with open(sysfs_sfp_i2c_client_eeprompath, "rb", buffering=0) as sysfsfile: + rv, buf = self._sfp_read_file_path(sysfsfile, offset, 1) + return rv + + def _add_new_sfp_device(self, sysfs_sfp_i2c_adapter_path, devaddr, devtype): + try: + sysfs_nd_path = "%s/new_device" % sysfs_sfp_i2c_adapter_path + + # Write device address to new_device file + nd_file = open(sysfs_nd_path, "w") + nd_str = "%s %s" % (devtype, hex(devaddr)) + nd_file.write(nd_str) + nd_file.close() + + except Exception as err: + print("Error writing to new device file: %s" % str(err)) + return 1 + else: + return 0 + + def _get_port_eeprom_path(self, port_num, devid): + sysfs_i2c_adapter_base_path = "/sys/class/i2c-adapter" + + if port_num in self.port_to_eeprom_mapping.keys(): + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom_mapping[port_num] + else: + sysfs_i2c_adapter_base_path = "/sys/class/i2c-adapter" + + i2c_adapter_id = self._get_port_i2c_adapter_id(port_num) + if i2c_adapter_id is None: + print("Error getting i2c bus num") + return None + + # Get i2c virtual bus path for the sfp + sysfs_sfp_i2c_adapter_path = "%s/i2c-%s" % (sysfs_i2c_adapter_base_path, + str(i2c_adapter_id)) + + # If i2c bus for port does not exist + if not os.path.exists(sysfs_sfp_i2c_adapter_path): + print("Could not find i2c bus %s. Driver not loaded?" % sysfs_sfp_i2c_adapter_path) + return None + + sysfs_sfp_i2c_client_path = "%s/%s-00%s" % (sysfs_sfp_i2c_adapter_path, + str(i2c_adapter_id), + hex(devid)[-2:]) + + # If sfp device is not present on bus, Add it + if not os.path.exists(sysfs_sfp_i2c_client_path): + if port_num in self.osfp_ports: + ret = self._add_new_sfp_device( + sysfs_sfp_i2c_adapter_path, devid, self.OSFP_DEVICE_TYPE) + elif port_num in self.qsfp_ports: + ret = self._add_new_sfp_device( + sysfs_sfp_i2c_adapter_path, devid, self.QSFP_DEVICE_TYPE) + else: + ret = self._add_new_sfp_device( + sysfs_sfp_i2c_adapter_path, devid, self.SFP_DEVICE_TYPE) + if ret != 0: + print("Error adding sfp device") + return None + + sysfs_sfp_i2c_client_eeprom_path = "%s/eeprom" % sysfs_sfp_i2c_client_path + + return sysfs_sfp_i2c_client_eeprom_path + + def _read_eeprom_specific_bytes(self, sysfsfile_eeprom, offset, num_bytes): + eeprom_raw = [] + for i in range(0, num_bytes): + eeprom_raw.append("0x00") + + rv, raw = self._sfp_read_file_path(sysfsfile_eeprom, offset, num_bytes) + if rv == False: + return None + + try: + for n in range(0, num_bytes): + eeprom_raw[n] = hex(raw[n])[2:].zfill(2) + except: + return None + + return eeprom_raw + + def get_eeprom_dom_raw(self, port_num): + if port_num in self.qsfp_ports: + # QSFP DOM EEPROM is also at addr 0x50 and thus also stored in eeprom_ifraw + return None + else: + # Read dom eeprom at addr 0x51 + return self._read_eeprom_devid(port_num, self.IDENTITY_EEPROM_ADDR, 256) + + def get_presence(self, port_num): + # Check for invalid port_num + if port_num < self.port_start or port_num > self.port_end: + return False + + cmd = "cat /sys/wb_plat/sff/sff{}/present".format(str(port_num+1)) + ret, output = subprocess.getstatusoutput(cmd) + if ret != 0: + return False + if output == "1": + return True + return False + + def check_is_qsfpdd(self, port_num): + try: + if self.get_presence(port_num) == False: + return False + + eeprom_path = self._get_port_eeprom_path(port_num, 0x50) + with open(eeprom_path, mode="rb", buffering=0) as eeprom: + eeprom_raw = self._read_eeprom_specific_bytes(eeprom, 0, 1) + # according to sff-8024 A0h Byte 0 is '1e' or '18' means the transceiver is qsfpdd + if (eeprom_raw[0] == '1e' or eeprom_raw[0] == '18'): + return True + except Exception as e: + print(traceback.format_exc()) + + return False + + def check_optoe_type(self, port_num, optoe_type): + if self.get_presence(port_num) == False: + return True + try: + eeprom_path = self._get_port_eeprom_path(port_num, 0x50) + dev_class_path = '/sys/bus/i2c/devices/i2c-{0}/{0}-0050/dev_class' + i2c_path = dev_class_path.format(str(self.port_to_i2cbus_mapping[port_num])) + cmd = "cat " + i2c_path + ret, output = subprocess.getstatusoutput(cmd) + if ret != 0: + print("cmd: %s execution fail, output:%s" % (cmd, output)) + return False + if int(output) != optoe_type: + cmd = "echo " + str(optoe_type) + " > " + i2c_path + ret, output = subprocess.getstatusoutput(cmd) + if ret != 0: + print("cmd: %s execution fail, output:%s" % (cmd, output)) + return False + return True + + except Exception as e: + print(traceback.format_exc()) + return False + + def get_low_power_mode(self, port_num): + # Check for invalid port_num + + return True + + def set_low_power_mode(self, port_num, lpmode): + # Check for invalid port_num + + return True + + def reset(self, port_num): + # Check for invalid port_num + if port_num < self.port_start or port_num > self.port_end: + return False + + return True + + def get_transceiver_change_event(self): + return False, {} + + def get_highest_temperature(self): + offset = 0 + hightest_temperature = -9999 + + presence_flag = False + read_eeprom_flag = False + temperature_valid_flag = False + + for port in range(self.PORT_START, self.PORTS_IN_BLOCK): + if self.get_presence(port) == False: + continue + + presence_flag = True + + if port in self.osfp_ports: + offset = 14 + elif port in self.qsfp_ports: + offset = 22 + else: + offset = 96 + + eeprom_path = self._get_port_eeprom_path(port, 0x50) + try: + with open(eeprom_path, mode="rb", buffering=0) as eeprom: + read_eeprom_flag = True + eeprom_raw = self._read_eeprom_specific_bytes(eeprom, offset, 2) + msb = int(eeprom_raw[0], 16) + lsb = int(eeprom_raw[1], 16) + + result = (msb << 8) | (lsb & 0xff) + result = float(result / 256.0) + if -50 <= result <= 200: + temperature_valid_flag = True + if hightest_temperature < result: + hightest_temperature = result + except Exception as e: + print(traceback.format_exc()) + + # all port not presence + if presence_flag == False: + hightest_temperature = -10000 + + # all port read eeprom fail + elif read_eeprom_flag == False: + hightest_temperature = -9999 + + # all port temperature invalid + elif read_eeprom_flag == True and temperature_valid_flag == False: + hightest_temperature = -10000 + + hightest_temperature = round(hightest_temperature, 2) + + return hightest_temperature diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/ssd_util.py b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/ssd_util.py new file mode 100644 index 000000000000..9bb285361f44 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/plugins/ssd_util.py @@ -0,0 +1,318 @@ +# +# ssd_util.py +# +# Generic implementation of the SSD health API +# SSD models supported: +# - InnoDisk +# - StorFly +# - Virtium + +try: + import re + import os + import subprocess + from sonic_platform_base.sonic_storage.storage_base import StorageBase +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + +SMARTCTL = "smartctl {} -a" +INNODISK = "iSmart -d {}" +VIRTIUM = "SmartCmd -m {}" +DISK_LIST_CMD = "fdisk -l -o Device" +DISK_FREE_CMD = "df -h" +MOUNT_CMD = "mount" + +NOT_AVAILABLE = "N/A" +PE_CYCLE = 3000 +FAIL_PERCENT = 95 + +# Set Vendor Specific IDs +INNODISK_HEALTH_ID = 169 +INNODISK_TEMPERATURE_ID = 194 + +class SsdUtil(StorageBase): + """ + Generic implementation of the SSD health API + """ + model = NOT_AVAILABLE + serial = NOT_AVAILABLE + firmware = NOT_AVAILABLE + temperature = NOT_AVAILABLE + health = NOT_AVAILABLE + remaining_life = NOT_AVAILABLE + sata_rate = NOT_AVAILABLE + ssd_info = NOT_AVAILABLE + vendor_ssd_info = NOT_AVAILABLE + + def __init__(self, diskdev): + self.vendor_ssd_utility = { + "Generic" : { "utility" : SMARTCTL, "parser" : self.parse_generic_ssd_info }, + "InnoDisk" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info }, + "M.2" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info }, + "StorFly" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info }, + "Virtium" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info } + } + + """ + The dict model_attr keys relate the vendors + LITEON : "ER2-GD","AF2MA31DTDLT" + Intel : "SSDSCKKB" + SMI : "SM619GXC" + samsung: "MZNLH" + ADATA : "IM2S3134N" + """ + self.model_attr = { + "ER2-GD" : { "temperature" : "\n190\s+(.+?)\n", "remainingLife" : "\n202\s+(.+?)\n" }, + "AF2MA31DTDLT" : { "temperature" : "\n194\s+(.+?)\n", "remainingLife" : "\n202\s+(.+?)\n" }, + "SSDSCK" : { "temperature" : "\n194\s+(.+?)\n", "remainingLife" : "\n233\s+(.+?)\n" }, + "SM619GXC" : { "temperature" : "\n194\s+(.+?)\n", "remainingLife" : "\n169\s+(.+?)\n" }, + "MZNLH" : { "temperature" : "\n190\s+(.+?)\n", "remainingLife" : "\n245\s+(.+?)\n" }, + "IM2S3134N" : { "temperature" : "\n194\s+(.+?)\n", "remainingLife" : "\n231\s+(.+?)\n" }, + "MTFDDAV240TCB-1AR1ZABAA" : { "temperature" : "\n194\s+(.+?)\n", "remainingLife" : "\n202\s+(.+?)\n" } + } + + self.key_list = list(self.model_attr.keys()) + self.attr_info_rule = "[\s\S]*SMART Attributes Data Structure revision number: 1|SMART Error Log Version[\s\S]*" + self.dev = diskdev + # Generic part + self.fetch_generic_ssd_info(diskdev) + self.parse_generic_ssd_info() + self.fetch_vendor_ssd_info(diskdev, "Generic") + + # Known vendor part + if self.model: + model_short = self.model.split()[0] + if model_short in self.vendor_ssd_utility: + self.fetch_vendor_ssd_info(diskdev, model_short) + self.parse_vendor_ssd_info(model_short) + else: + # No handler registered for this disk model + pass + else: + # Failed to get disk model + self.model = "Unknown" + + def _execute_shell(self, cmd): + process = subprocess.Popen(cmd.split(), universal_newlines=True, stdout=subprocess.PIPE) + output, error = process.communicate() + exit_code = process.returncode + if exit_code: + return None + return output + + def _parse_re(self, pattern, buffer): + res_list = re.findall(pattern, str(buffer)) + return res_list[0] if res_list else NOT_AVAILABLE + + def fetch_generic_ssd_info(self, diskdev): + self.ssd_info = self._execute_shell(self.vendor_ssd_utility["Generic"]["utility"].format(diskdev)) + + # Health and temperature values may be overwritten with vendor specific data + def parse_generic_ssd_info(self): + if "nvme" in self.dev: + self.model = self._parse_re('Model Number:\s*(.+?)\n', self.ssd_info) + + health_raw = self._parse_re('Percentage Used\s*(.+?)\n', self.ssd_info) + if health_raw == NOT_AVAILABLE: + self.health = NOT_AVAILABLE + else: + health_raw = health_raw.split()[-1] + self.health = 100 - float(health_raw.strip('%')) + + temp_raw = self._parse_re('Temperature\s*(.+?)\n', self.ssd_info) + if temp_raw == NOT_AVAILABLE: + self.temperature = NOT_AVAILABLE + else: + temp_raw = temp_raw.split()[-2] + self.temperature = float(temp_raw) + else: + self.model = self._parse_re('Device Model:\s*(.+?)\n', self.ssd_info) + model_key = "" + for key in self.key_list: + if re.search(key, self.model): + model_key = key + break + if model_key != "": + self.remaining_life = self._parse_re(self.model_attr[model_key]["remainingLife"], re.sub(self.attr_info_rule,"",self.ssd_info)).split()[2] + self.temperature = self._parse_re(self.model_attr[model_key]["temperature"], re.sub(self.attr_info_rule,"",self.ssd_info)).split()[8] + self.health = self.remaining_life + # Get the LITEON ssd health value by (PE CYCLE - AVG ERASE CYCLE )/(PE CYCLE) + if model_key in ["ER2-GD", "AF2MA31DTDLT"]: + avg_erase = int(self._parse_re('\n173\s+(.+?)\n' ,re.sub(self.attr_info_rule,"",self.ssd_info)).split()[-1]) + self.health = int(round((PE_CYCLE - avg_erase)/PE_CYCLE*100,0)) + if self.remaining_life != NOT_AVAILABLE and int(self.remaining_life) < FAIL_PERCENT: + self.remaining_life = "Fail" + self.sata_rate = self._parse_re('SATA Version is:.*current: (.+?)\)\n', self.ssd_info) + self.serial = self._parse_re('Serial Number:\s*(.+?)\n', self.ssd_info) + self.firmware = self._parse_re('Firmware Version:\s*(.+?)\n', self.ssd_info) + + def parse_innodisk_info(self): + if self.vendor_ssd_info: + self.health = self._parse_re('Health:\s*(.+?)%', self.vendor_ssd_info) + self.temperature = self._parse_re('Temperature\s*\[\s*(.+?)\]', self.vendor_ssd_info) + else: + if self.health == NOT_AVAILABLE: + health_raw = self.parse_id_number(INNODISK_HEALTH_ID) + self.health = health_raw.split()[-1] + if self.temperature == NOT_AVAILABLE: + temp_raw = self.parse_id_number(INNODISK_TEMPERATURE_ID) + self.temperature = temp_raw.split()[-6] + + def parse_virtium_info(self): + if self.vendor_ssd_info: + self.temperature = self._parse_re('Temperature_Celsius\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info) + nand_endurance = self._parse_re('NAND_Endurance\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info) + avg_erase_count = self._parse_re('Average_Erase_Count\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info) + try: + self.health = 100 - (float(avg_erase_count) * 100 / float(nand_endurance)) + except (ValueError, ZeroDivisionError): + # Invalid avg_erase_count or nand_endurance. + pass + + def fetch_vendor_ssd_info(self, diskdev, model): + self.vendor_ssd_info = self._execute_shell(self.vendor_ssd_utility[model]["utility"].format(diskdev)) + + def parse_vendor_ssd_info(self, model): + self.vendor_ssd_utility[model]["parser"]() + + def check_readonly2(self, partition, filesystem): + # parse mount cmd output info + mount_info = self._execute_shell(MOUNT_CMD) + for line in mount_info.split('\n'): + column_list = line.split() + if line == '': + continue + if column_list[0] == partition and column_list[2] == filesystem: + if column_list[5].split(',')[0][1:] == "ro": + return partition + else: + return NOT_AVAILABLE + return NOT_AVAILABLE + + def check_readonly(self, partition, filesystem): + ret = os.access(filesystem, os.W_OK) + if ret == False: + return partition + else: + return NOT_AVAILABLE + + def get_health(self): + """ + Retrieves current disk health in percentages + + Returns: + A float number of current ssd health + e.g. 83.5 + """ + if self.health == 'N/A': + return "NA" + else: + return float(self.health) + + def get_temperature(self): + """ + Retrieves current disk temperature in Celsius + + Returns: + A float number of current temperature in Celsius + e.g. 40.1 + """ + if self.temperature == 'N/A': + return 'NA' + else: + return float(self.temperature) + + def get_model(self): + """ + Retrieves model for the given disk device + + Returns: + A string holding disk model as provided by the manufacturer + """ + return self.model + + def get_firmware(self): + """ + Retrieves firmware version for the given disk device + + Returns: + A string holding disk firmware version as provided by the manufacturer + """ + return self.firmware + + def get_serial(self): + """ + Retrieves serial number for the given disk device + + Returns: + A string holding disk serial number as provided by the manufacturer + """ + return self.serial + def get_sata_rate(self): + """ + Retrieves SATA rate for the given disk device + Returns: + A string holding current SATA rate as provided by the manufacturer + """ + return self.sata_rate + def get_remaining_life(self): + """ + Retrieves remaining life for the given disk device + Returns: + A string holding disk remaining life as provided by the manufacturer + """ + return self.remaining_life + def get_vendor_output(self): + """ + Retrieves vendor specific data for the given disk device + + Returns: + A string holding some vendor specific disk information + """ + return self.vendor_ssd_info + + def parse_id_number(self, id): + return self._parse_re('{}\s*(.+?)\n'.format(id), self.ssd_info) + + def get_readonly_partition(self): + """ + Check the partition mount filesystem is readonly status,then output the result. + Returns: + The readonly partition list + """ + + ro_partition_list = [] + partition_list = [] + + # parse fdisk cmd output info + disk_info = self._execute_shell(DISK_LIST_CMD) + begin_flag = False + for line in disk_info.split('\n'): + if line == "Device": + begin_flag = True + continue + if begin_flag: + if line != "": + partition_list.append(line) + else: + break + + # parse df cmd output info + disk_free = self._execute_shell(DISK_FREE_CMD) + disk_dict = {} + line_num = 0 + for line in disk_free.split('\n'): + line_num = line_num + 1 + if line_num == 1 or line == "": + continue + column_list = line.split() + disk_dict[column_list[0]] = column_list[5] + + # get partition which is readonly + for partition in partition_list: + if partition in disk_dict: + ret = self.check_readonly(partition, disk_dict[partition]) + if (ret != NOT_AVAILABLE): + ro_partition_list.append(ret) + + return ro_partition_list diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pmon_daemon_control.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..94592fa8cebc --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/pmon_daemon_control.json @@ -0,0 +1,3 @@ +{ + "skip_ledd": true +} diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/postinit_cmd_file.soc b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/postinit_cmd_file.soc new file mode 100644 index 000000000000..6167c3d68f33 --- /dev/null +++ b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/postinit_cmd_file.soc @@ -0,0 +1,7 @@ +led load /usr/share/sonic/platform/custom_led.bin + +led auto on + +led start + +linkscan SwPortBitMap=xe,ce,cd diff --git a/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/system_health_monitoring_config.json b/device/micas/x86_64-micas_m2-w6520-48c8qc-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/platform/broadcom/one-image.mk b/platform/broadcom/one-image.mk index 8b7f159ba23c..1af454dbc3a7 100755 --- a/platform/broadcom/one-image.mk +++ b/platform/broadcom/one-image.mk @@ -105,7 +105,8 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \ $(MICAS_M2_W6930_64QC_PLATFORM_MODULE) \ $(MICAS_M2_W6940_64OC_PLATFORM_MODULE) \ $(MICAS_M2_W6920_32QC2X_PLATFORM_MODULE) \ - $(MICAS_M2_W6510_32C_PLATFORM_MODULE) + $(MICAS_M2_W6510_32C_PLATFORM_MODULE) \ + $(MICAS_M2_W6520_48C8QC_PLATFORM_MODULE) $(SONIC_ONE_IMAGE)_LAZY_BUILD_INSTALLS = $(BRCM_OPENNSL_KERNEL) $(BRCM_DNX_OPENNSL_KERNEL) ifeq ($(INSTALL_DEBUG_TOOLS),y) diff --git a/platform/broadcom/platform-modules-micas.mk b/platform/broadcom/platform-modules-micas.mk index 7e70b5c670dc..220b9a6ac08a 100644 --- a/platform/broadcom/platform-modules-micas.mk +++ b/platform/broadcom/platform-modules-micas.mk @@ -64,3 +64,11 @@ export MICAS_M2_W6510_32C_PLATFORM_MODULE_VERSION MICAS_M2_W6510_32C_PLATFORM_MODULE = platform-modules-micas-m2-w6510-32c_$(MICAS_M2_W6510_32C_PLATFORM_MODULE_VERSION)_amd64.deb $(MICAS_M2_W6510_32C_PLATFORM_MODULE)_PLATFORM = x86_64-micas_m2-w6510-32c-r0 $(eval $(call add_extra_package,$(MICAS_M2_W6510_48V8C_PLATFORM_MODULE),$(MICAS_M2_W6510_32C_PLATFORM_MODULE))) + +## M2-W6520-48C8QC +MICAS_M2_W6520_48C8QC_PLATFORM_MODULE_VERSION = 1.0 +export MICAS_M2_W6520_48C8QC_PLATFORM_MODULE_VERSION + +MICAS_M2_W6520_48C8QC_PLATFORM_MODULE = platform-modules-micas-m2-w6520-48c8qc_$(MICAS_M2_W6520_48C8QC_PLATFORM_MODULE_VERSION)_amd64.deb +$(MICAS_M2_W6520_48C8QC_PLATFORM_MODULE)_PLATFORM = x86_64-micas_m2-w6520-48c8qc-r0 +$(eval $(call add_extra_package,$(MICAS_M2_W6510_48V8C_PLATFORM_MODULE),$(MICAS_M2_W6520_48C8QC_PLATFORM_MODULE))) diff --git a/platform/broadcom/sonic-platform-modules-micas/common/modules/s3ip_sysfs/switch_driver/wb_fpga_driver.c b/platform/broadcom/sonic-platform-modules-micas/common/modules/s3ip_sysfs/switch_driver/wb_fpga_driver.c index e5c326df0eb0..d0991c60882f 100644 --- a/platform/broadcom/sonic-platform-modules-micas/common/modules/s3ip_sysfs/switch_driver/wb_fpga_driver.c +++ b/platform/broadcom/sonic-platform-modules-micas/common/modules/s3ip_sysfs/switch_driver/wb_fpga_driver.c @@ -256,11 +256,7 @@ int dfd_set_fpga_testreg(uint8_t main_dev_id, unsigned int fpga_index, unsigned main_dev_id, fpga_index, key_to_name(DFD_CFG_ITEM_FPGA_TEST_REG)); return -DFD_RV_DEV_NOTSUPPORT; } - if (info_ctrl->fpath == NULL) { - DBG_FPGA_DEBUG(DBG_VERBOSE, "main_dev_id: %u, fpga%u get fpath failed\n", main_dev_id, - fpga_index); - return -DFD_RV_INVALID_VALUE; - } + if (info_ctrl->len > FPGA_REG_WIDTH_MAX) { DBG_FPGA_DEBUG(DBG_ERROR, "main_dev_id: %u, fpga%u info_ctrl len: %d, unsupport\n", main_dev_id, fpga_index, info_ctrl->len); diff --git a/platform/broadcom/sonic-platform-modules-micas/debian/control b/platform/broadcom/sonic-platform-modules-micas/debian/control index 3df20d5b4be0..e272778df0ae 100644 --- a/platform/broadcom/sonic-platform-modules-micas/debian/control +++ b/platform/broadcom/sonic-platform-modules-micas/debian/control @@ -35,3 +35,7 @@ Description: kernel modules for platform devices such as fan, led, sfp Package: platform-modules-micas-m2-w6510-32c Architecture: amd64 Description: kernel modules for platform devices such as fan, led, sfp + +Package: platform-modules-micas-m2-w6520-48c8qc +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.install b/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.install new file mode 100644 index 000000000000..c64ce0881f0f --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.install @@ -0,0 +1 @@ +m2-w6520-48c8qc/modules/sonic_platform-1.0-py3-none-any.whl /usr/share/sonic/device/x86_64-micas_m2-w6520-48c8qc-r0 diff --git a/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.postinst b/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.postinst new file mode 100644 index 000000000000..a8132f4f65a9 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/debian/platform-modules-micas-m2-w6520-48c8qc.postinst @@ -0,0 +1,10 @@ +#!/bin/sh +# postinst + +kernel_version=$(uname -r) + +if [ -e /boot/System.map-${kernel_version} ]; then + depmod -a -F /boot/System.map-${kernel_version} ${kernel_version} || true +fi + +#DEBHELPER# diff --git a/platform/broadcom/sonic-platform-modules-micas/debian/rule.mk b/platform/broadcom/sonic-platform-modules-micas/debian/rule.mk index 66e05fe8104c..fbcd72290ac0 100644 --- a/platform/broadcom/sonic-platform-modules-micas/debian/rule.mk +++ b/platform/broadcom/sonic-platform-modules-micas/debian/rule.mk @@ -8,5 +8,7 @@ MODULE_DIRS += m2-w6930-64qc MODULE_DIRS += m2-w6940-64oc MODULE_DIRS += m2-w6920-32qc2x MODULE_DIRS += m2-w6510-32c +MODULE_DIRS += m2-w6520-48c8qc + export MODULE_DIRS diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/Makefile b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/Makefile new file mode 100644 index 000000000000..052a5a6a0773 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/Makefile @@ -0,0 +1,25 @@ +PWD = $(shell pwd) +DIR_KERNEL_SRC = $(PWD)/modules/driver +EXTRA_CFLAGS:= -I$(M)/include +EXTRA_CFLAGS+= -Wall +SUB_BUILD_DIR = $(PWD)/build +INSTALL_DIR = $(SUB_BUILD_DIR)/$(KERNEL_SRC)/$(INSTALL_MOD_DIR) +INSTALL_SCRIPT_DIR = $(SUB_BUILD_DIR)/usr/local/bin +INSTALL_LIB_DIR = $(SUB_BUILD_DIR)/usr/lib/python3/dist-packages +INSTALL_SYSFS_CFG_DIR = $(SUB_BUILD_DIR)/etc/plat_sysfs_cfg + +all: + $(MAKE) -C $(KBUILD_OUTPUT) M=$(DIR_KERNEL_SRC) modules + @if [ ! -d ${INSTALL_DIR} ]; then mkdir -p ${INSTALL_DIR} ;fi + cp -r $(DIR_KERNEL_SRC)/*.ko $(INSTALL_DIR) + @if [ ! -d ${INSTALL_SCRIPT_DIR} ]; then mkdir -p ${INSTALL_SCRIPT_DIR} ;fi + cp -r $(PWD)/config/* $(INSTALL_SCRIPT_DIR) + @if [ ! -d ${INSTALL_LIB_DIR} ]; then mkdir -p ${INSTALL_LIB_DIR} ;fi + @if [ -d $(PWD)/hal-config/ ]; then cp -r $(PWD)/hal-config/* ${INSTALL_LIB_DIR} ;fi + @if [ ! -d ${INSTALL_SYSFS_CFG_DIR} ]; then mkdir -p ${INSTALL_SYSFS_CFG_DIR} ;fi + @if [ -d $(PWD)/plat_sysfs_cfg/ ]; then cp -r $(PWD)/plat_sysfs_cfg/* ${INSTALL_SYSFS_CFG_DIR} ;fi +clean: + rm -f ${DIR_KERNEL_SRC}/*.o ${DIR_KERNEL_SRC}/*.ko ${DIR_KERNEL_SRC}/*.mod.c ${DIR_KERNEL_SRC}/.*.cmd + rm -f ${DIR_KERNEL_SRC}/Module.markers ${DIR_KERNEL_SRC}/Module.symvers ${DIR_KERNEL_SRC}/modules.order + rm -rf ${DIR_KERNEL_SRC}/.tmp_versions + rm -rf $(SUB_BUILD_DIR) diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_config.py b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_config.py new file mode 100644 index 000000000000..45419f40e068 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_config.py @@ -0,0 +1,1079 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +from platform_common import * + +STARTMODULE = { + "hal_fanctrl": 1, + "hal_ledctrl": 1, + "avscontrol": 0, + "dev_monitor": 1, + "tty_console": 0, + "reboot_cause": 1, + "pmon_syslog": 1, + "sff_temp_polling": 1, + "generate_airflow": 0, +} + +DEV_MONITOR_PARAM = { + "polling_time": 10, + "psus": [ + { + "name": "psu1", + "present": {"gettype": "i2c", "bus": 2, "loc": 0x1d, "offset": 0x34, "presentbit": 0, "okval": 0}, + "device": [ + {"id": "psu1pmbus", "name": "wb_fsp1200", "bus": 81, "loc": 0x58, "attr": "hwmon"}, + {"id": "psu1frue2", "name": "24c02", "bus": 81, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "psu2", + "present": {"gettype": "i2c", "bus": 2, "loc": 0x1d, "offset": 0x34, "presentbit": 4, "okval": 0}, + "device": [ + {"id": "psu2pmbus", "name": "wb_fsp1200", "bus": 82, "loc": 0x58, "attr": "hwmon"}, + {"id": "psu2frue2", "name": "24c02", "bus": 82, "loc": 0x50, "attr": "eeprom"}, + ], + }, + ], + "fans": [ + { + "name": "fan1", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 5, "okval": 0}, + "device": [ + {"id": "fan1frue2", "name": "24c64", "bus": 75, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "fan2", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 4, "okval": 0}, + "device": [ + {"id": "fan2frue2", "name": "24c64", "bus": 74, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "fan3", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 3, "okval": 0}, + "device": [ + {"id": "fan3frue2", "name": "24c64", "bus": 73, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "fan4", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 2, "okval": 0}, + "device": [ + {"id": "fan4frue2", "name": "24c64", "bus": 72, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "fan5", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 1, "okval": 0}, + "device": [ + {"id": "fan5frue2", "name": "24c64", "bus": 71, "loc": 0x50, "attr": "eeprom"}, + ], + }, + { + "name": "fan6", + "present": {"gettype": "i2c", "bus": 4, "loc": 0x3d, "offset": 0x37, "presentbit": 0, "okval": 0}, + "device": [ + {"id": "fan6frue2", "name": "24c64", "bus": 70, "loc": 0x50, "attr": "eeprom"}, + ], + }, + ], + "others": [ + { + "name": "eeprom", + "device": [ + {"id": "eeprom_1", "name": "24c02", "bus": 1, "loc": 0x56, "attr": "eeprom"}, + ], + }, + { + "name": "lm75", + "device": [ + {"id": "lm75_1", "name": "lm75", "bus": 76, "loc": 0x48, "attr": "hwmon"}, + {"id": "lm75_2", "name": "lm75", "bus": 76, "loc": 0x49, "attr": "hwmon"}, + {"id": "lm75_3", "name": "lm75", "bus": 79, "loc": 0x4b, "attr": "hwmon"}, + {"id": "lm75_4", "name": "lm75", "bus": 80, "loc": 0x4e, "attr": "hwmon"}, + {"id": "lm75_5", "name": "lm75", "bus": 80, "loc": 0x4f, "attr": "hwmon"}, + ], + }, + { + "name": "mac_bsc", + "device": [ + {"id": "mac_bsc_1", "name": "wb_mac_bsc_td4", "bus": 84, "loc": 0x44, "attr": "hwmon"}, + ], + }, + { + "name":"tmp411", + "device":[ + {"id":"tmp411_1", "name":"tmp411","bus":79, "loc":0x4c, "attr":"hwmon"}, + {"id":"tmp411_2", "name":"tmp411","bus":80, "loc":0x4c, "attr":"hwmon"}, + ], + }, + { + "name": "ina3221", + "device": [ + {"id": "ina3221_1", "name": "ina3221", "bus": 65, "loc": 0x43, "attr": "hwmon"}, + ], + }, + { + "name": "tps53622", + "device": [ + {"id": "tps53622_1", "name": "tps53688", "bus": 65, "loc": 0x67, "attr": "hwmon"}, + {"id": "tps53622_2", "name": "tps53688", "bus": 65, "loc": 0x6c, "attr": "hwmon"}, + ], + }, + { + "name": "ucd90160", + "device": [ + {"id": "ucd90160_1", "name": "ucd90160", "bus": 64, "loc": 0x5b, "attr": "hwmon"}, + {"id": "ucd90160_2", "name": "ucd90160", "bus": 85, "loc": 0x5b, "attr": "hwmon"}, + ], + }, + ], +} + +MANUINFO_CONF = { + "bios": { + "key": "BIOS", + "head": True, + "next": "onie" + }, + "bios_vendor": { + "parent": "bios", + "key": "Vendor", + "cmd": "dmidecode -t 0 |grep Vendor", + "pattern": r".*Vendor", + "separator": ":", + "arrt_index": 1, + }, + "bios_version": { + "parent": "bios", + "key": "Version", + "cmd": "dmidecode -t 0 |grep Version", + "pattern": r".*Version", + "separator": ":", + "arrt_index": 2, + }, + "bios_date": { + "parent": "bios", + "key": "Release Date", + "cmd": "dmidecode -t 0 |grep Release", + "pattern": r".*Release Date", + "separator": ":", + "arrt_index": 3, + }, + "onie": { + "key": "ONIE", + "next": "cpu" + }, + "onie_date": { + "parent": "onie", + "key": "Build Date", + "file": "/host/machine.conf", + "pattern": r"^onie_build_date", + "separator": "=", + "arrt_index": 1, + }, + "onie_version": { + "parent": "onie", + "key": "Version", + "file": "/host/machine.conf", + "pattern": r"^onie_version", + "separator": "=", + "arrt_index": 2, + }, + + "cpu": { + "key": "CPU", + "next": "ssd" + }, + "cpu_vendor": { + "parent": "cpu", + "key": "Vendor", + "cmd": "dmidecode --type processor |grep Manufacturer", + "pattern": r".*Manufacturer", + "separator": ":", + "arrt_index": 1, + }, + "cpu_model": { + "parent": "cpu", + "key": "Device Model", + "cmd": "dmidecode --type processor | grep Version", + "pattern": r".*Version", + "separator": ":", + "arrt_index": 2, + }, + "cpu_core": { + "parent": "cpu", + "key": "Core Count", + "cmd": "dmidecode --type processor | grep \"Core Count\"", + "pattern": r".*Core Count", + "separator": ":", + "arrt_index": 3, + }, + "cpu_thread": { + "parent": "cpu", + "key": "Thread Count", + "cmd": "dmidecode --type processor | grep \"Thread Count\"", + "pattern": r".*Thread Count", + "separator": ":", + "arrt_index": 4, + }, + "ssd": { + "key": "SSD", + "next": "cpld" + }, + "ssd_model": { + "parent": "ssd", + "key": "Device Model", + "cmd": "smartctl -i /dev/sda |grep \"Device Model\"", + "pattern": r".*Device Model", + "separator": ":", + "arrt_index": 1, + }, + "ssd_fw": { + "parent": "ssd", + "key": "Firmware Version", + "cmd": "smartctl -i /dev/sda |grep \"Firmware Version\"", + "pattern": r".*Firmware Version", + "separator": ":", + "arrt_index": 2, + }, + "ssd_user_cap": { + "parent": "ssd", + "key": "User Capacity", + "cmd": "smartctl -i /dev/sda |grep \"User Capacity\"", + "pattern": r".*User Capacity", + "separator": ":", + "arrt_index": 3, + }, + + "cpld": { + "key": "CPLD", + "next": "psu" + }, + + "cpld1": { + "key": "CPLD1", + "parent": "cpld", + "arrt_index": 1, + }, + "cpld1_model": { + "key": "Device Model", + "parent": "cpld1", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld1_vender": { + "key": "Vendor", + "parent": "cpld1", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld1_desc": { + "key": "Description", + "parent": "cpld1", + "config": "CPU_CPLD", + "arrt_index": 3, + }, + "cpld1_version": { + "key": "Firmware Version", + "parent": "cpld1", + "reg": { + "loc": "/dev/port", + "offset": 0x700, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "cpld2": { + "key": "CPLD2", + "parent": "cpld", + "arrt_index": 2, + }, + "cpld2_model": { + "key": "Device Model", + "parent": "cpld2", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld2_vender": { + "key": "Vendor", + "parent": "cpld2", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld2_desc": { + "key": "Description", + "parent": "cpld2", + "config": "CONNECT_BOARD_CPLD", + "arrt_index": 3, + }, + "cpld2_version": { + "key": "Firmware Version", + "parent": "cpld2", + "reg": { + "loc": "/dev/port", + "offset": 0x900, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "cpld3": { + "key": "CPLD3", + "parent": "cpld", + "arrt_index": 3, + }, + "cpld3_model": { + "key": "Device Model", + "parent": "cpld3", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld3_vender": { + "key": "Vendor", + "parent": "cpld3", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld3_desc": { + "key": "Description", + "parent": "cpld3", + "config": "FAN_CPLD", + "arrt_index": 3, + }, + "cpld3_version": { + "key": "Firmware Version", + "parent": "cpld3", + "i2c": { + "bus": "4", + "loc": "0x3d", + "offset": 0, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "cpld4": { + "key": "CPLD4", + "parent": "cpld", + "arrt_index": 4, + }, + "cpld4_model": { + "key": "Device Model", + "parent": "cpld4", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld4_vender": { + "key": "Vendor", + "parent": "cpld4", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld4_desc": { + "key": "Description", + "parent": "cpld4", + "config": "MAC_CPLDA", + "arrt_index": 3, + }, + "cpld4_version": { + "key": "Firmware Version", + "parent": "cpld4", + "i2c": { + "bus": "2", + "loc": "0x2d", + "offset": 0, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "cpld5": { + "key": "CPLD5", + "parent": "cpld", + "arrt_index": 5, + }, + "cpld5_model": { + "key": "Device Model", + "parent": "cpld5", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld5_vender": { + "key": "Vendor", + "parent": "cpld5", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld5_desc": { + "key": "Description", + "parent": "cpld5", + "config": "MAC_CPLDB", + "arrt_index": 3, + }, + "cpld5_version": { + "key": "Firmware Version", + "parent": "cpld5", + "i2c": { + "bus": "2", + "loc": "0x2d", + "offset": 0, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "cpld6": { + "key": "CPLD6", + "parent": "cpld", + "arrt_index": 6, + }, + "cpld6_model": { + "key": "Device Model", + "parent": "cpld6", + "config": "LCMXO3LF-2100C-5BG256C", + "arrt_index": 1, + }, + "cpld6_vender": { + "key": "Vendor", + "parent": "cpld6", + "config": "LATTICE", + "arrt_index": 2, + }, + "cpld6_desc": { + "key": "Description", + "parent": "cpld6", + "config": "MAC_CPLDC", + "arrt_index": 3, + }, + "cpld6_version": { + "key": "Firmware Version", + "parent": "cpld6", + "i2c": { + "bus": "2", + "loc": "0x3d", + "offset": 0, + "size": 4 + }, + "callback": "cpld_format", + "arrt_index": 4, + }, + + "psu": { + "key": "PSU", + "next": "fan" + }, + + "psu1": { + "parent": "psu", + "key": "PSU1", + "arrt_index": 1, + }, + "psu1_hw_version": { + "key": "Hardware Version", + "parent": "psu1", + "extra": { + "funcname": "getPsu", + "id": "psu1", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "psu1_fw_version": { + "key": "Firmware Version", + "parent": "psu1", + "config": "NA", + "arrt_index": 2, + }, + + "psu2": { + "parent": "psu", + "key": "PSU2", + "arrt_index": 2, + }, + "psu2_hw_version": { + "key": "Hardware Version", + "parent": "psu2", + "extra": { + "funcname": "getPsu", + "id": "psu2", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "psu2_fw_version": { + "key": "Firmware Version", + "parent": "psu2", + "config": "NA", + "arrt_index": 2, + }, + + "fan": { + "key": "FAN", + "next": "i210" + }, + + "fan1": { + "key": "FAN1", + "parent": "fan", + "arrt_index": 1, + }, + "fan1_hw_version": { + "key": "Hardware Version", + "parent": "fan1", + "extra": { + "funcname": "checkFan", + "id": "fan1", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan1_fw_version": { + "key": "Firmware Version", + "parent": "fan1", + "config": "NA", + "arrt_index": 2, + }, + + "fan2": { + "key": "FAN2", + "parent": "fan", + "arrt_index": 2, + }, + "fan2_hw_version": { + "key": "Hardware Version", + "parent": "fan2", + "extra": { + "funcname": "checkFan", + "id": "fan2", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan2_fw_version": { + "key": "Firmware Version", + "parent": "fan2", + "config": "NA", + "arrt_index": 2, + }, + + "fan3": { + "key": "FAN3", + "parent": "fan", + "arrt_index": 3, + }, + "fan3_hw_version": { + "key": "Hardware Version", + "parent": "fan3", + "extra": { + "funcname": "checkFan", + "id": "fan3", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan3_fw_version": { + "key": "Firmware Version", + "parent": "fan3", + "config": "NA", + "arrt_index": 2, + }, + + "fan4": { + "key": "FAN4", + "parent": "fan", + "arrt_index": 4, + }, + "fan4_hw_version": { + "key": "Hardware Version", + "parent": "fan4", + "extra": { + "funcname": "checkFan", + "id": "fan4", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan4_fw_version": { + "key": "Firmware Version", + "parent": "fan4", + "config": "NA", + "arrt_index": 2, + }, + + "fan5": { + "key": "FAN5", + "parent": "fan", + "arrt_index": 5, + }, + "fan5_hw_version": { + "key": "Hardware Version", + "parent": "fan5", + "extra": { + "funcname": "checkFan", + "id": "fan5", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan5_fw_version": { + "key": "Firmware Version", + "parent": "fan5", + "config": "NA", + "arrt_index": 2, + }, + + "fan6": { + "key": "FAN6", + "parent": "fan", + "arrt_index": 6, + }, + "fan6_hw_version": { + "key": "Hardware Version", + "parent": "fan6", + "extra": { + "funcname": "checkFan", + "id": "fan6", + "key": "hw_version" + }, + "arrt_index": 1, + }, + "fan6_fw_version": { + "key": "Firmware Version", + "parent": "fan6", + "config": "NA", + "arrt_index": 2, + }, + + "i210": { + "key": "NIC", + "next": "fpga" + }, + "i210_model": { + "parent": "i210", + "config": "NA", + "key": "Device Model", + "arrt_index": 1, + }, + "i210_vendor": { + "parent": "i210", + "config": "INTEL", + "key": "Vendor", + "arrt_index": 2, + }, + "i210_version": { + "parent": "i210", + "cmd": "ethtool -i eth0", + "pattern": r"firmware-version", + "separator": ":", + "key": "Firmware Version", + "arrt_index": 3, + }, + + "fpga": { + "key": "FPGA", + }, + "fpga_model": { + "parent": "fpga", + "config": "XC7A100T-2FGG484C", + "key": "Device Model", + "arrt_index": 1, + }, + "fpga_vendor": { + "parent": "fpga", + "config": "XILINX", + "key": "Vendor", + "arrt_index": 2, + }, + "fpga_desc": { + "parent": "fpga", + "config": "NA", + "key": "Description", + "arrt_index": 3, + }, + "fpga_hw_version": { + "parent": "fpga", + "config": "NA", + "key": "Hardware Version", + "arrt_index": 4, + }, + "fpga_fw_version": { + "parent": "fpga", + "pci": { + "bus": 8, + "slot": 0, + "fn": 0, + "bar": 0, + "offset": 0 + }, + "key": "Firmware Version", + "arrt_index": 5, + }, + "fpga_date": { + "parent": "fpga", + "pci": { + "bus": 8, + "slot": 0, + "fn": 0, + "bar": 0, + "offset": 4 + }, + "key": "Build Date", + "arrt_index": 6, + }, +} + +PMON_SYSLOG_STATUS = { + "polling_time": 3, + "sffs": { + "present": {"path": ["/sys/wb_plat/sff/*/present"], "ABSENT": 0}, + "nochangedmsgflag": 0, + "nochangedmsgtime": 60, + "noprintfirsttimeflag": 1, + "alias": { + "sff1": "Ethernet1", + "sff2": "Ethernet2", + "sff3": "Ethernet3", + "sff4": "Ethernet4", + "sff5": "Ethernet5", + "sff6": "Ethernet6", + "sff7": "Ethernet7", + "sff8": "Ethernet8", + "sff9": "Ethernet9", + "sff10": "Ethernet10", + "sff11": "Ethernet11", + "sff12": "Ethernet12", + "sff13": "Ethernet13", + "sff14": "Ethernet14", + "sff15": "Ethernet15", + "sff16": "Ethernet16", + "sff17": "Ethernet17", + "sff18": "Ethernet18", + "sff19": "Ethernet19", + "sff20": "Ethernet20", + "sff21": "Ethernet21", + "sff22": "Ethernet22", + "sff23": "Ethernet23", + "sff24": "Ethernet24", + "sff25": "Ethernet25", + "sff26": "Ethernet26", + "sff27": "Ethernet27", + "sff28": "Ethernet28", + "sff29": "Ethernet29", + "sff30": "Ethernet30", + "sff31": "Ethernet31", + "sff32": "Ethernet32", + "sff33": "Ethernet33", + "sff34": "Ethernet34", + "sff35": "Ethernet35", + "sff36": "Ethernet36", + "sff37": "Ethernet37", + "sff38": "Ethernet38", + "sff39": "Ethernet39", + "sff40": "Ethernet40", + "sff41": "Ethernet41", + "sff42": "Ethernet42", + "sff43": "Ethernet43", + "sff44": "Ethernet44", + "sff45": "Ethernet45", + "sff46": "Ethernet46", + "sff47": "Ethernet47", + "sff48": "Ethernet48", + "sff49": "Ethernet49", + "sff50": "Ethernet50", + "sff51": "Ethernet51", + "sff52": "Ethernet52", + "sff53": "Ethernet53", + "sff54": "Ethernet54", + "sff55": "Ethernet55", + "sff56": "Ethernet56", + } + }, + "fans": { + "present": {"path": ["/sys/wb_plat/fan/*/present"], "ABSENT": 0}, + "status": [ + {"path": "/sys/wb_plat/fan/%s/motor0/status", 'okval': 1}, + {"path": "/sys/wb_plat/fan/%s/motor1/status", 'okval': 1}, + ], + "nochangedmsgflag": 1, + "nochangedmsgtime": 60, + "noprintfirsttimeflag": 0, + "alias": { + "fan1": "FAN1", + "fan2": "FAN2", + "fan3": "FAN3", + "fan4": "FAN4", + "fan5": "FAN5", + "fan6": "FAN6" + } + }, + "psus": { + "present": {"path": ["/sys/wb_plat/psu/*/present"], "ABSENT": 0}, + "status": [ + {"path": "/sys/wb_plat/psu/%s/output", "okval": 1}, + {"path": "/sys/wb_plat/psu/%s/alert", "okval": 0}, + ], + "nochangedmsgflag": 1, + "nochangedmsgtime": 60, + "noprintfirsttimeflag": 0, + "alias": { + "psu1": "PSU1", + "psu2": "PSU2" + } + } +} + +##################### MAC Voltage adjust#################################### +MAC_DEFAULT_PARAM = [ + { + "name": "mac_core", # AVS name + "type": 1, # 1: used default value, if rov value not in range. 0: do nothing, if rov value not in range + "default": 0x82, # default value, if rov value not in range + "sdkreg": "TOP_AVS_SEL_REG", # SDK register name + "sdktype": 0, # 0: No shift operation required, 1: shift operation required + "macregloc": 24, # Shift right 24 bits + "mask": 0xff, # Use with macregloc + "rov_source": 0, # 0: get rov value from cpld, 1: get rov value from SDK + "cpld_avs": {"bus":2, "loc":0x2d, "offset":0x3f, "gettype":"i2c"}, + "set_avs": { + "loc": "/sys/bus/i2c/devices/83-005b/avs_vout", + "gettype": "sysfs", "formula": "int((%f)*1000000)" + }, + "mac_avs_param": { + 0x72:0.90000, + 0x73:0.89375, + 0x74:0.88750, + 0x75:0.88125, + 0x76:0.87500, + 0x77:0.86875, + 0x78:0.86250, + 0x79:0.85625, + 0x7a:0.85000, + 0x7b:0.84375, + 0x7c:0.83750, + 0x7d:0.83125, + 0x7e:0.82500, + 0x7f:0.81875, + 0x80:0.81250, + 0x81:0.80625, + 0x82:0.80000, + 0x83:0.79375, + 0x84:0.78750, + 0x85:0.78125, + 0x86:0.77500, + 0x87:0.76875, + 0x88:0.76250, + 0x89:0.75625, + 0x8A:0.75000, + 0x8B:0.74375, + 0x8C:0.73750, + 0x8D:0.73125, + 0x8E:0.72500, + } + } +] + +BLACKLIST_DRIVERS = [ + {"name": "i2c_i801", "delay": 0}, +] + +DRIVERLISTS = [ + {"name": "i2c_i801", "delay": 1}, + {"name": "wb_gpio_d1500", "delay": 0}, + {"name": "i2c_dev", "delay": 0}, + {"name": "i2c_algo_bit", "delay": 0}, + {"name": "i2c_gpio", "delay": 0}, + {"name": "i2c_mux", "delay": 0}, + {"name": "wb_gpio_device", "delay": 0}, + {"name": "wb_i2c_gpio_device gpio_sda=17 gpio_scl=1 gpio_udelay=2", "delay": 0}, + {"name": "platform_common dfd_my_type=0x4101", "delay": 0}, + {"name": "wb_fpga_pcie", "delay": 0}, + {"name": "wb_pcie_dev", "delay": 0}, + {"name": "wb_pcie_dev_device", "delay": 0}, + {"name": "wb_lpc_drv", "delay": 0}, + {"name": "wb_lpc_drv_device", "delay": 0}, + {"name": "wb_io_dev", "delay": 0}, + {"name": "wb_io_dev_device", "delay": 0}, + {"name": "wb_spi_dev", "delay": 0}, + {"name": "wb_i2c_dev", "delay": 0}, + {"name": "wb_fpga_i2c_bus_drv", "delay": 0}, + {"name": "wb_fpga_i2c_bus_device", "delay": 0}, + {"name": "wb_i2c_dev_device", "delay": 0}, + {"name": "wb_fpga_pca954x_drv", "delay": 0}, + {"name": "wb_fpga_pca954x_device", "delay": 0}, + {"name": "wb_wdt", "delay": 0}, + {"name": "lm75", "delay": 0}, + {"name": "tmp401", "delay": 0}, + {"name": "optoe", "delay": 0}, + {"name": "at24", "delay": 0}, + {"name": "wb_mac_bsc", "delay": 0}, + {"name": "pmbus_core", "delay": 0}, + {"name": "wb_csu550", "delay": 0}, + {"name": "ina3221", "delay": 0}, + {"name": "tps53679", "delay": 0}, + {"name": "ucd9000", "delay": 0}, + {"name": "wb_xdpe132g5c", "delay": 0}, + {"name": "plat_dfd", "delay": 0}, + {"name": "plat_switch", "delay": 0}, + {"name": "plat_fan", "delay": 0}, + {"name": "plat_psu", "delay": 0}, + {"name": "plat_sff", "delay": 0}, + {"name": "hw_test", "delay": 0}, +] + +DEVICE = [ + {"name": "24c02", "bus": 1, "loc": 0x56}, + {"name": "wb_mac_bsc_td4", "bus": 84, "loc": 0x44}, + # fan + {"name": "24c64", "bus": 70, "loc": 0x50}, + {"name": "24c64", "bus": 71, "loc": 0x50}, + {"name": "24c64", "bus": 72, "loc": 0x50}, + {"name": "24c64", "bus": 73, "loc": 0x50}, + {"name": "24c64", "bus": 74, "loc": 0x50}, + {"name": "24c64", "bus": 75, "loc": 0x50}, + # psu + {"name": "24c02", "bus": 81, "loc": 0x50}, + {"name": "wb_fsp1200", "bus": 81, "loc": 0x58}, + {"name": "24c02", "bus": 82, "loc": 0x50}, + {"name": "wb_fsp1200", "bus": 82, "loc": 0x58}, + # temp + {"name": "lm75", "bus": 76, "loc": 0x48}, + {"name": "lm75", "bus": 76, "loc": 0x49}, + {"name": "lm75", "bus": 79, "loc": 0x4b}, + {"name": "tmp411", "bus": 79, "loc": 0x4c}, + {"name": "tmp411", "bus": 80, "loc": 0x4c}, + {"name": "lm75", "bus": 80, "loc": 0x4e}, + {"name": "lm75", "bus": 80, "loc": 0x4f}, + # dcdc + {"name": "ucd90160", "bus": 64, "loc": 0x5b}, + {"name": "ucd90160", "bus": 85, "loc": 0x5b}, + {"name": "ina3221", "bus": 65, "loc": 0x43}, + {"name": "tps53688", "bus": 65, "loc": 0x67}, + {"name": "tps53688", "bus": 65, "loc": 0x6c}, + #avs + {"name": "wb_xdpe132g5c", "bus": 83, "loc": 0x5b}, +] + +OPTOE = [ + {"name": "optoe3", "startbus": 6, "endbus": 61}, +] + +REBOOT_CTRL_PARAM = { + "cpu": {"io_addr": 0x920, "rst_val": 0xfe, "rst_delay": 0, "gettype": "io"}, + "mac": {"bus": 2, "loc": 0x1d, "offset": 0x20, "rst_val": 0xfd, "rst_delay": 0, "gettype": "i2c"}, +} + +# INIT_PARAM_PRE = [ +# {"loc": "43-005b/avs_vout_max", "value": "900000"}, +# {"loc": "43-005b/avs_vout_min", "value": "725000"}, +# ] + +INIT_PARAM = [] + +INIT_COMMAND_PRE = [] + +INIT_COMMAND = [ + # sfp power enable + "i2cset -f -y 2 0x2d 0x4c 0xff", + "i2cset -f -y 2 0x2d 0x4d 0xff", + "i2cset -f -y 2 0x2d 0x35 0xff", + "i2cset -f -y 2 0x2d 0x36 0xff", + "i2cset -f -y 2 0x1d 0x39 0xff", + "i2cset -f -y 2 0x1d 0x3a 0xff", + "i2cset -f -y 2 0x1d 0x3b 0xff", + "i2cset -f -y 2 0x3d 0x38 0xff", + "i2cset -f -y 2 0x3d 0x39 0xff", + "i2cset -f -y 2 0x3d 0x3a 0xff", + "i2cset -f -y 2 0x3d 0x3b 0xff", + # led enable + "i2cset -f -y 2 0x2d 0x3a 0xff", + "i2cset -f -y 2 0x1d 0x3c 0xff" + "i2cset -f -y 2 0x3d 0x3c 0xff" +] + +WARM_UPGRADE_PARAM = {} + +REBOOT_CAUSE_PARA = { + "reboot_cause_list": [ + { + "name": "cold_reboot", + "monitor_point": {"gettype": "io", "io_addr": 0x988, "okval": 0}, + "record": [ + {"record_type": "file", "mode": "cover", "log": "Power Loss, ", + "path": "/etc/sonic/.reboot/.previous-reboot-cause.txt"}, + {"record_type": "file", "mode": "add", "log": "Power Loss, ", + "path": "/etc/sonic/.reboot/.history-reboot-cause.txt", "file_max_size": 1 * 1024 * 1024} + ] + }, + { + "name": "wdt_reboot", + "monitor_point": {"gettype": "io", "io_addr": 0x987, "okval": 1}, + "record": [ + {"record_type": "file", "mode": "cover", "log": "Watchdog, ", + "path": "/etc/sonic/.reboot/.previous-reboot-cause.txt"}, + {"record_type": "file", "mode": "add", "log": "Watchdog, ", + "path": "/etc/sonic/.reboot/.history-reboot-cause.txt", "file_max_size":1*1024*1024} + ], + "finish_operation": [ + {"gettype": "io", "io_addr": 0x986, "value": 0x01}, + ] + }, + { + "name": "otp_switch_reboot", + "monitor_point": {"gettype": "file_exist", "judge_file": "/etc/.otp_switch_reboot_flag", "okval": True}, + "record": [ + {"record_type": "file", "mode": "cover", "log": "Thermal Overload: ASIC, ", + "path": "/etc/sonic/.reboot/.previous-reboot-cause.txt"}, + {"record_type": "file", "mode": "add", "log": "Thermal Overload: ASIC, ", + "path": "/etc/sonic/.reboot/.history-reboot-cause.txt", "file_max_size": 1 * 1024 * 1024} + ], + "finish_operation": [ + {"gettype": "cmd", "cmd": "rm -rf /etc/.otp_switch_reboot_flag"}, + ] + }, + { + "name": "otp_other_reboot", + "monitor_point": {"gettype": "file_exist", "judge_file": "/etc/.otp_other_reboot_flag", "okval": True}, + "record": [ + {"record_type": "file", "mode": "cover", "log": "Thermal Overload: Other, ", + "path": "/etc/sonic/.reboot/.previous-reboot-cause.txt"}, + {"record_type": "file", "mode": "add", "log": "Thermal Overload: Other, ", + "path": "/etc/sonic/.reboot/.history-reboot-cause.txt", "file_max_size": 1 * 1024 * 1024} + ], + "finish_operation": [ + {"gettype": "cmd", "cmd": "rm -rf /etc/.otp_other_reboot_flag"}, + ] + }, + ], + "other_reboot_cause_record": [ + {"record_type": "file", "mode": "cover", "log": "Other, ", "path": "/etc/sonic/.reboot/.previous-reboot-cause.txt"}, + {"record_type": "file", "mode": "add", "log": "Other, ", "path": "/etc/sonic/.reboot/.history-reboot-cause.txt"} + ], +} + +UPGRADE_SUMMARY = {} + +PLATFORM_E2_CONF = { + "fan": [ + {"name": "fan1", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/75-0050/eeprom"}, + {"name": "fan2", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/74-0050/eeprom"}, + {"name": "fan3", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/73-0050/eeprom"}, + {"name": "fan4", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/72-0050/eeprom"}, + {"name": "fan5", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/71-0050/eeprom"}, + {"name": "fan6", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/70-0050/eeprom"}, + ], + "psu": [ + {"name": "psu1", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/81-0050/eeprom"}, + {"name": "psu2", "e2_type": "fru", "e2_path": "/sys/bus/i2c/devices/82-0050/eeprom"}, + ], + "syseeprom": [ + {"name": "syseeprom", "e2_type": "onie_tlv", "e2_path": "/sys/bus/i2c/devices/1-0056/eeprom"}, + ], +} diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_port_config.py b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_port_config.py new file mode 100644 index 000000000000..20c461234c16 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/config/x86_64_micas_m2_w6520_48c8qc_r0_port_config.py @@ -0,0 +1,7 @@ +#!/usr/bin/python3 +# -*- coding: UTF-8 -*- + +PLATFORM_INTF_OPTOE = { + "port_num": 56, + "optoe_start_bus": 6, +} diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_device.py b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_device.py new file mode 100644 index 000000000000..d244516cacd3 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_device.py @@ -0,0 +1,1247 @@ +#!/usr/bin/python3 + +psu_fan_airflow = { + "intake": ['DPS-1300AB-6 S', 'GW-CRPS1300D'], + "exhaust": [] +} + +fanairflow = { + "intake": ['M1HFAN II-F'], + "exhaust": [], +} + +psu_display_name = { + "PA1300I-F": ['GW-CRPS1300D', 'DPS-1300AB-6 S'], +} + +psutypedecode = { + 0x00: 'N/A', + 0x01: 'AC', + 0x02: 'DC', +} + +class Unit: + Temperature = "C" + Voltage = "V" + Current = "A" + Power = "W" + Speed = "RPM" + +class threshold: + PSU_TEMP_MIN = -10 * 1000 + PSU_TEMP_MAX = 60 * 1000 + + PSU_FAN_SPEED_MIN = 2000 + PSU_FAN_SPEED_MAX = 28000 + + PSU_OUTPUT_VOLTAGE_MIN = 11 * 1000 + PSU_OUTPUT_VOLTAGE_MAX = 14 * 1000 + + PSU_AC_INPUT_VOLTAGE_MIN = 200 * 1000 + PSU_AC_INPUT_VOLTAGE_MAX = 240 * 1000 + + PSU_DC_INPUT_VOLTAGE_MIN = 190 * 1000 + PSU_DC_INPUT_VOLTAGE_MAX = 290 * 1000 + + ERR_VALUE = -9999999 + + PSU_OUTPUT_POWER_MIN = 10 * 1000 * 1000 + PSU_OUTPUT_POWER_MAX = 1300 * 1000 * 1000 + + PSU_INPUT_POWER_MIN = 10 * 1000 * 1000 + PSU_INPUT_POWER_MAX = 1444 * 1000 * 1000 + + PSU_OUTPUT_CURRENT_MIN = 2 * 1000 + PSU_OUTPUT_CURRENT_MAX = 107 * 1000 + + PSU_INPUT_CURRENT_MIN = 0.2 * 1000 + PSU_INPUT_CURRENT_MAX = 7 * 1000 + + FRONT_FAN_SPEED_MAX = 25000 + REAR_FAN_SPEED_MAX = 22000 + FAN_SPEED_MIN = 2000 + +devices = { + "onie_e2": [ + { + "name": "ONIE_E2", + "e2loc": {"loc": "/sys/bus/i2c/devices/1-0056/eeprom", "way": "sysfs"}, + "airflow": "intake" + }, + ], + "psus": [ + { + "e2loc": {"loc": "/sys/bus/i2c/devices/81-0050/eeprom", "way": "sysfs"}, + "pmbusloc": {"bus": 81, "addr": 0x58, "way": "i2c"}, + "present": {"loc": "/sys/wb_plat/psu/psu1/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "name": "PSU1", + "psu_display_name": psu_display_name, + "airflow": psu_fan_airflow, + "TempStatus": {"bus": 81, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x0004}, + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": threshold.PSU_TEMP_MIN, + "Max": threshold.PSU_TEMP_MAX, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + }, + "FanStatus": {"bus": 81, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x0400}, + "FanSpeed": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/fan1_input", "way": "sysfs"}, + "Min": threshold.PSU_FAN_SPEED_MIN, + "Max": threshold.PSU_FAN_SPEED_MAX, + "Unit": Unit.Speed + }, + "psu_fan_tolerance": 40, + "InputsStatus": {"bus": 81, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x2000}, + "InputsType": {"bus": 81, "addr": 0x58, "offset": 0x80, "way": "i2c", 'psutypedecode': psutypedecode}, + "InputsVoltage": { + 'AC': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.PSU_AC_INPUT_VOLTAGE_MIN, + "Max": threshold.PSU_AC_INPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + + }, + 'DC': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.PSU_DC_INPUT_VOLTAGE_MIN, + "Max": threshold.PSU_DC_INPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + }, + 'other': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.ERR_VALUE, + "Max": threshold.ERR_VALUE, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + } + }, + "InputsCurrent": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/curr1_input", "way": "sysfs"}, + "Min": threshold.PSU_INPUT_CURRENT_MIN, + "Max": threshold.PSU_INPUT_CURRENT_MAX, + "Unit": Unit.Current, + "format": "float(float(%s)/1000)" + }, + "InputsPower": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/power1_input", "way": "sysfs"}, + "Min": threshold.PSU_INPUT_POWER_MIN, + "Max": threshold.PSU_INPUT_POWER_MAX, + "Unit": Unit.Power, + "format": "float(float(%s)/1000000)" + }, + "OutputsStatus": {"bus": 81, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x8800}, + "OutputsVoltage": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/in2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_VOLTAGE_MIN, + "Max": threshold.PSU_OUTPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + }, + "OutputsCurrent": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/curr2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_CURRENT_MIN, + "Max": threshold.PSU_OUTPUT_CURRENT_MAX, + "Unit": Unit.Current, + "format": "float(float(%s)/1000)" + }, + "OutputsPower": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/power2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_POWER_MIN, + "Max": threshold.PSU_OUTPUT_POWER_MAX, + "Unit": Unit.Power, + "format": "float(float(%s)/1000000)" + }, + }, + { + "e2loc": {"loc": "/sys/bus/i2c/devices/82-0050/eeprom", "way": "sysfs"}, + "pmbusloc": {"bus": 82, "addr": 0x58, "way": "i2c"}, + "present": {"loc": "/sys/wb_plat/psu/psu2/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "name": "PSU2", + "psu_display_name": psu_display_name, + "airflow": psu_fan_airflow, + "TempStatus": {"bus": 82, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x0004}, + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": threshold.PSU_TEMP_MIN, + "Max": threshold.PSU_TEMP_MAX, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + }, + "FanStatus": {"bus": 82, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x0400}, + "FanSpeed": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/fan1_input", "way": "sysfs"}, + "Min": threshold.PSU_FAN_SPEED_MIN, + "Max": threshold.PSU_FAN_SPEED_MAX, + "Unit": Unit.Speed + }, + "psu_fan_tolerance": 40, + "InputsStatus": {"bus": 82, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x2000}, + "InputsType": {"bus": 82, "addr": 0x58, "offset": 0x80, "way": "i2c", 'psutypedecode': psutypedecode}, + "InputsVoltage": { + 'AC': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.PSU_AC_INPUT_VOLTAGE_MIN, + "Max": threshold.PSU_AC_INPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + + }, + 'DC': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.PSU_DC_INPUT_VOLTAGE_MIN, + "Max": threshold.PSU_DC_INPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + }, + 'other': { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/in1_input", "way": "sysfs"}, + "Min": threshold.ERR_VALUE, + "Max": threshold.ERR_VALUE, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + } + }, + "InputsCurrent": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/curr1_input", "way": "sysfs"}, + "Min": threshold.PSU_INPUT_CURRENT_MIN, + "Max": threshold.PSU_INPUT_CURRENT_MAX, + "Unit": Unit.Current, + "format": "float(float(%s)/1000)" + }, + "InputsPower": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/power1_input", "way": "sysfs"}, + "Min": threshold.PSU_INPUT_POWER_MIN, + "Max": threshold.PSU_INPUT_POWER_MAX, + "Unit": Unit.Power, + "format": "float(float(%s)/1000000)" + }, + "OutputsStatus": {"bus": 82, "addr": 0x58, "offset": 0x79, "way": "i2cword", "mask": 0x8800}, + "OutputsVoltage": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/in2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_VOLTAGE_MIN, + "Max": threshold.PSU_OUTPUT_VOLTAGE_MAX, + "Unit": Unit.Voltage, + "format": "float(float(%s)/1000)" + }, + "OutputsCurrent": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/curr2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_CURRENT_MIN, + "Max": threshold.PSU_OUTPUT_CURRENT_MAX, + "Unit": Unit.Current, + "format": "float(float(%s)/1000)" + }, + "OutputsPower": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/power2_input", "way": "sysfs"}, + "Min": threshold.PSU_OUTPUT_POWER_MIN, + "Max": threshold.PSU_OUTPUT_POWER_MAX, + "Unit": Unit.Power, + "format": "float(float(%s)/1000000)" + }, + } + ], + "temps": [ + { + "name": "BOARD_TEMP", + "temp_id": "TEMP1", + "api_name": "Board", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/80-004e/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": -10000, + "Low": 0, + "High": 70000, + "Max": 80000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "CPU_TEMP", + "temp_id": "TEMP2", + "api_name": "CPU", + "Temperature": { + "value": {"loc": "/sys/bus/platform/devices/coretemp.0/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": 2000, + "Low": 10000, + "High": 100000, + "Max": 104000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "INLET_TEMP", + "temp_id": "TEMP3", + "api_name": "Inlet", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/80-004f/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": -10000, + "Low": 0, + "High": 40000, + "Max": 50000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "OUTLET_TEMP", + "temp_id": "TEMP4", + "api_name": "Outlet", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/76-0048/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": -10000, + "Low": 0, + "High": 70000, + "Max": 80000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "SWITCH_TEMP", + "temp_id": "TEMP5", + "api_name": "ASIC_TEMP", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/84-0044/hwmon/hwmon*/temp99_input", "way": "sysfs"}, + "Min": 2000, + "Low": 10000, + "High": 100000, + "Max": 105000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "PSU1_TEMP", + "temp_id": "TEMP6", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-81/81-0058/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": -10000, + "Low": 0, + "High": 55000, + "Max": 60000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "PSU2_TEMP", + "temp_id": "TEMP7", + "Temperature": { + "value": {"loc": "/sys/bus/i2c/devices/i2c-82/82-0058/hwmon/hwmon*/temp1_input", "way": "sysfs"}, + "Min": -10000, + "Low": 0, + "High": 55000, + "Max": 60000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + } + }, + { + "name": "SFF_TEMP", + "Temperature": { + "value": {"loc": "/tmp/highest_sff_temp", "way": "sysfs", "flock_path": "/tmp/highest_sff_temp"}, + "Min": -15000, + "Low": 0, + "High": 80000, + "Max": 100000, + "Unit": Unit.Temperature, + "format": "float(float(%s)/1000)" + }, + "invalid": -10000, + "error": -9999, + } + ], + "leds": [ + { + "name": "FRONT_SYS_LED", + "led_type": "SYS_LED", + "led": {"bus": 2, "addr": 0x2d, "offset": 0x47, "way": "i2c"}, + "led_attrs": { + "green": 0x04, "red": 0x02, "amber": 0x06, "default": 0x04, + "flash": 0xff, "light": 0xff, "off": 0, "mask": 0xff + }, + }, + { + "name": "FRONT_PSU_LED", + "led_type": "PSU_LED", + "led": {"bus": 2, "addr": 0x2d, "offset": 0x4a, "way": "i2c"}, + "led_attrs": { + "green": 0x04, "red": 0x02, "amber": 0x06, "default": 0x04, + "flash": 0xff, "light": 0xff, "off": 0, "mask": 0xff + }, + }, + { + "name": "FRONT_FAN_LED", + "led_type": "FAN_LED", + "led": {"bus": 2, "addr": 0x2d, "offset": 0x49, "way": "i2c"}, + "led_attrs": { + "green": 0x04, "red": 0x02, "amber": 0x06, "default": 0x04, + "flash": 0xff, "light": 0xff, "off": 0, "mask": 0xff + }, + }, + ], + "fans": [ + { + "name": "FAN1", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-75/75-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan1/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x41, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x65, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan1/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan1/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan1/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x65, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan1/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan1/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan1/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + { + "name": "FAN2", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-74/74-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan2/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x40, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x64, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan2/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan2/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan2/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x64, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan2/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan2/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan2/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + { + "name": "FAN3", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-73/73-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan3/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x3f, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x63, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan3/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan3/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan3/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x63, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan3/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan3/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan3/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + { + "name": "FAN4", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-72/72-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan4/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x3e, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x62, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan4/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan4/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan4/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x62, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan4/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan4/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan4/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + { + "name": "FAN5", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-71/71-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan5/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x3d, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x61, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan5/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan5/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan5/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x61, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan5/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan5/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan5/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + { + "name": "FAN6", + "airflow": fanairflow, + "e2loc": {'loc': '/sys/bus/i2c/devices/i2c-70/70-0050/eeprom', 'way': 'sysfs'}, + "present": {"loc": "/sys/wb_plat/fan/fan6/present", "way": "sysfs", "mask": 0x01, "okval": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "led": {"bus": 4, "addr": 0x3d, "offset": 0x3c, "way": "i2c"}, + "led_attrs": { + "off": 0x0, "red_flash": 0x01, "red": 0x02, + "green_flash": 0x03, "green": 0x04, "amber_flash": 0x05, + "amber": 0x06, "mask": 0x07 + }, + "PowerMax": 38.16, + "Rotor": { + "Rotor1_config": { + "name": "Rotor1", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x60, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan6/motor0/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan6/motor0/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.FRONT_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan6/motor0/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.FRONT_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + "Rotor2_config": { + "name": "Rotor2", + "Set_speed": {"bus": 4, "addr": 0x3d, "offset": 0x60, "way": "i2c"}, + "Running": {"loc": "/sys/wb_plat/fan/fan6/motor1/status", "way": "sysfs", "mask": 0x01, "is_runing": 1}, + "HwAlarm": {"loc": "/sys/wb_plat/fan/fan6/motor1/status", "way": "sysfs", "mask": 0x01, "no_alarm": 1}, + "SpeedMin": threshold.FAN_SPEED_MIN, + "SpeedMax": threshold.REAR_FAN_SPEED_MAX, + "Speed": { + "value": {"loc": "/sys/wb_plat/fan/fan6/motor1/speed", "way": "sysfs"}, + "Min": threshold.FAN_SPEED_MIN, + "Max": threshold.REAR_FAN_SPEED_MAX, + "Unit": Unit.Speed, + }, + }, + }, + }, + ], + "cplds": [ + { + "name": "CPU_CPLD", + "cpld_id": "CPLD1", + "VersionFile": {"loc": "/dev/cpld0", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for system power", + "slot": 0, + "warm": 1, + }, + { + "name": "CONNECT_BOARD_CPLD", + "cpld_id": "CPLD2", + "VersionFile": {"loc": "/dev/cpld1", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for base functions", + "slot": 0, + "warm": 1, + }, + { + "name": "MAC_CPLDA", + "cpld_id": "CPLD3", + "VersionFile": {"loc": "/dev/cpld4", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for sff modules", + "slot": 0, + "warm": 1, + }, + { + "name": "MAC_CPLDB", + "cpld_id": "CPLD4", + "VersionFile": {"loc": "/dev/cpld5", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for sff modules", + "slot": 0, + "warm": 1, + }, + { + "name": "MAC_CPLDC", + "cpld_id": "CPLD8", + "VersionFile": {"loc": "/dev/cpld7", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for sff modules", + "slot": 0, + }, + { + "name": "FAN_CPLD", + "cpld_id": "CPLD5", + "VersionFile": {"loc": "/dev/cpld6", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for fan modules", + "slot": 0, + "warm": 1, + }, + { + "name": "FPGA", + "cpld_id": "CPLD6", + "VersionFile": {"loc": "/dev/fpga0", "offset": 0, "len": 4, "way": "devfile_ascii"}, + "desc": "Used for base functions", + "slot": 0, + "format": "little_endian", + "warm": 1, + }, + { + "name": "BIOS", + "cpld_id": "CPLD7", + "VersionFile": {"cmd": "dmidecode -s bios-version", "way": "cmd"}, + "desc": "Performs initialization of hardware components during booting", + "slot": 0, + "type": "str", + "warm": 0, + }, + ], + "dcdc": [ + { + "name": "VDD5V_CLK_MCU", + "dcdc_id": "DCDC1", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in1_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 4250, + "Low": 4500, + "High": 5500, + "Max": 5750, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD3.3_CLK", + "dcdc_id": "DCDC2", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in2_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD1.0V", + "dcdc_id": "DCDC3", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in3_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 850, + "Low": 900, + "High": 1100, + "Max": 1150, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD1.8V", + "dcdc_id": "DCDC4", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in4_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1530, + "Low": 1620, + "High": 1980, + "Max": 2070, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD3.3V_A", + "dcdc_id": "DCDC5", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in5_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD1.2V", + "dcdc_id": "DCDC6", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in6_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1020, + "Low": 1080, + "High": 1320, + "Max": 1380, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD_CORE", + "dcdc_id": "DCDC7", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in7_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 600, + "Low": 650, + "High": 990, + "Max": 1100, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "ANALOG0.75V", + "dcdc_id": "DCDC8", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in8_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 615, + "Low": 640, + "High": 907, + "Max": 1000, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "MAC_VDD1.2V", + "dcdc_id": "DCDC9", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in9_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1020, + "Low": 1080, + "High": 1320, + "Max": 1380, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDDO1.8V", + "dcdc_id": "DCDC10", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in10_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1530, + "Low": 1620, + "High": 1980, + "Max": 2070, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "MAC_ANA1.2V", + "dcdc_id": "DCDC11", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in11_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1020, + "Low": 1080, + "High": 1320, + "Max": 1380, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "MAC_ANA1.8V", + "dcdc_id": "DCDC12", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in12_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1530, + "Low": 1620, + "High": 1980, + "Max": 2070, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "QSFP56_VDD3.3V_A", + "dcdc_id": "DCDC13", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in13_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "QSFP56_VDD3.3V_B", + "dcdc_id": "DCDC14", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in14_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "QSFPDD_VDD3.3V_A", + "dcdc_id": "DCDC15", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in15_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "QSFPDD_VDD3.3V_B", + "dcdc_id": "DCDC16", + "value": { + "loc": "/sys/bus/i2c/devices/85-005b/hwmon/*/in16_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD5.0V", + "dcdc_id": "DCDC17", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in1_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 4250, + "Low": 4500, + "High": 5500, + "Max": 5750, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "SW_VDD1.2V", + "dcdc_id": "DCDC18", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in2_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1020, + "Low": 1080, + "High": 1320, + "Max": 1380, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD2.5V", + "dcdc_id": "DCDC19", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in3_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2125, + "Low": 2250, + "High": 2750, + "Max": 2875, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD3.3V_B", + "dcdc_id": "DCDC20", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in4_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD12V", + "dcdc_id": "DCDC21", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in6_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 10200, + "Low": 10800, + "High": 13200, + "Max": 13800, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VDD3.3_STBY", + "dcdc_id": "DCDC22", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in7_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "SSD_VDD3.3V", + "dcdc_id": "DCDC23", + "value": { + "loc": "/sys/bus/i2c/devices/64-005b/hwmon/*/in8_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2805, + "Low": 2970, + "High": 3630, + "Max": 3795, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VCCIN_V", + "dcdc_id": "DCDC24", + "value": { + "loc": "/sys/bus/i2c/devices/65-0067/hwmon/*/in2_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1368, + "Low": 1444, + "High": 2142, + "Max": 2244, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "P1V05_V", + "dcdc_id": "DCDC25", + "value": { + "loc": "/sys/bus/i2c/devices/65-0067/hwmon/*/in3_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 882, + "Low": 931, + "High": 1176, + "Max": 1232, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VCCD_V", + "dcdc_id": "DCDC26", + "value": { + "loc": "/sys/bus/i2c/devices/65-006c/hwmon/*/in2_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 990, + "Low": 1045, + "High": 1386, + "Max": 1452, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "VCCSCSUS_V", + "dcdc_id": "DCDC27", + "value": { + "loc": "/sys/bus/i2c/devices/65-006c/hwmon/*/in3_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 855, + "Low": 903, + "High": 1208, + "Max": 1265, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "P5V_AUX_V", + "dcdc_id": "DCDC28", + "value": { + "loc": "/sys/bus/i2c/devices/65-0043/hwmon/*/in1_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 3852, + "Low": 4066, + "High": 6059, + "Max": 6347, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "P3V3_STBY_V", + "dcdc_id": "DCDC29", + "value": { + "loc": "/sys/bus/i2c/devices/65-0043/hwmon/*/in2_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 2682, + "Low": 2831, + "High": 3822, + "Max": 4004, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + { + "name": "P1V7_VCCSCFUSESUS_V", + "dcdc_id": "DCDC30", + "value": { + "loc": "/sys/bus/i2c/devices/65-0043/hwmon/*/in3_input", + "way": "sysfs", + }, + "read_times": 1, + "Min": 1377, + "Low": 1454, + "High": 1964, + "Max": 2057, + "Unit": "V", + "format": "float(float(%s)/1000)", + }, + ], + "cpu": [ + { + "name": "cpu", + "CpuResetCntReg": {"loc": "/dev/cpld1", "offset": 0x88, "len": 1, "way": "devfile_ascii"}, + "reboot_cause_path": "/etc/sonic/.reboot/.previous-reboot-cause.txt" + } + ], + "sfps": { + "ver": '1.0', + "port_index_start": 0, + "port_num": 56, + "log_level": 2, + "eeprom_retry_times": 5, + "eeprom_retry_break_sec": 0.2, + "presence_cpld": { + "dev_id": { + 4: { + "offset": { + 0x30: "41-48", + 0x31: "49-56" + }, + }, + 5: { + "offset": { + 0x30: "1-8", + 0x31: "9-13,15,22,24", + 0x32: "31,32,35" + }, + }, + 7: { + "offset": { + 0x30: "14,16-21,23", + 0x31: "25-30,33,34", + 0x32: "36-40" + }, + }, + }, + }, + "presence_val_is_present": 0, + "eeprom_path": "/sys/bus/i2c/devices/i2c-%d/%d-0050/eeprom", + "eeprom_path_key": list(range(6, 63)), + "optoe_driver_path": "/sys/bus/i2c/devices/i2c-%d/%d-0050/dev_class", + "optoe_driver_key": list(range(6, 63)), + "reset_cpld": { + "dev_id": { + 4: { + "offset": { + 0x21: "41-48", + 0x22: "49-56" + }, + }, + 5: { + "offset": { + 0x20: "1-4,6-9", + 0x21: "10-12,14,35,36", + }, + }, + 7: { + "offset": { + 0x21: "5,13,15-20", + 0x22: "21-28", + 0x23: "29-34,37,38", + 0x24: "39,40" + }, + }, + }, + }, + "reset_val_is_reset": 0, + } +} diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_monitor.py b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_monitor.py new file mode 100644 index 000000000000..0315a8174fe7 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/hal-config/x86_64_micas_m2_w6520_48c8qc_r0_monitor.py @@ -0,0 +1,207 @@ +# coding:utf-8 + + +monitor = { + "openloop": { + "linear": { + "name": "linear", + "flag": 0, + "pwm_min": 0x80, + "pwm_max": 0xff, + "K": 11, + "tin_min": 38, + }, + "curve": { + "name": "curve", + "flag": 1, + "pwm_min": 0x80, + "pwm_max": 0xff, + "a": 0.369, + "b": -15.657, + "c": 289, + "tin_min": 25, + }, + }, + + "pid": { + "CPU_TEMP": { + "name": "CPU_TEMP", + "flag": 1, + "type": "duty", + "pwm_min": 0x80, + "pwm_max": 0xff, + "Kp": 1.5, + "Ki": 1, + "Kd": 0.3, + "target": 80, + "value": [None, None, None], + }, + "SWITCH_TEMP": { + "name": "SWITCH_TEMP", + "flag": 1, + "type": "duty", + "pwm_min": 0x80, + "pwm_max": 0xff, + "Kp": 1.5, + "Ki": 1, + "Kd": 0.3, + "target": 90, + "value": [None, None, None], + }, + "OUTLET_TEMP": { + "name": "OUTLET_TEMP", + "flag": 1, + "type": "duty", + "pwm_min": 0x80, + "pwm_max": 0xff, + "Kp": 2, + "Ki": 0.4, + "Kd": 0.3, + "target": 65, + "value": [None, None, None], + }, + "BOARD_TEMP": { + "name": "BOARD_TEMP", + "flag": 0, + "type": "duty", + "pwm_min": 0x80, + "pwm_max": 0xff, + "Kp": 2, + "Ki": 0.4, + "Kd": 0.3, + "target": 65, + "value": [None, None, None], + }, + "SFF_TEMP": { + "name": "SFF_TEMP", + "flag": 1, + "type": "duty", + "pwm_min": 0x80, + "pwm_max": 0xff, + "Kp": 0.1, + "Ki": 0.4, + "Kd": 0, + "target": 62, + "value": [None, None, None], + }, + }, + + "temps_threshold": { + "SWITCH_TEMP": {"name": "SWITCH_TEMP", "warning": 100, "critical": 105, "invalid": -100000, "error": -99999}, + "INLET_TEMP": {"name": "INLET_TEMP", "warning": 40, "critical": 50, "fix": -3}, + "BOARD_TEMP": {"name": "BOARD_TEMP", "warning": 70, "critical": 75}, + "OUTLET_TEMP": {"name": "OUTLET_TEMP", "warning": 70, "critical": 75}, + "CPU_TEMP": {"name": "CPU_TEMP", "warning": 100, "critical": 102}, + "SFF_TEMP": {"name": "SFF_TEMP", "warning": 999, "critical": 1000, "ignore_threshold": 1, "invalid": -10000, "error": -9999}, + }, + + "fancontrol_para": { + "interval": 5, + "fan_status_interval": 0.5, + "max_pwm": 0xff, + "min_pwm": 0x80, + "abnormal_pwm": 0xff, + "warning_pwm": 0xff, + "temp_invalid_pid_pwm": 0x80, + "temp_error_pid_pwm": 0x80, + "temp_fail_num": 3, + "check_temp_fail": [ + {"temp_name": "INLET_TEMP"}, + {"temp_name": "SWITCH_TEMP"}, + {"temp_name": "CPU_TEMP"}, + ], + "temp_warning_num": 3, # temp over warning 3 times continuously + "temp_critical_num": 3, # temp over critical 3 times continuously + "temp_warning_countdown": 60, # 5 min warning speed after not warning + "temp_critical_countdown": 60, # 5 min full speed after not critical + "rotor_error_count": 2, # fan rotor error 2 times continuously + "inlet_mac_diff": 999, + "check_crit_reboot_flag": 1, + "check_crit_reboot_num": 3, + "check_crit_sleep_time": 20, + "psu_absent_fullspeed_num": 0xFF, + "fan_absent_fullspeed_num": 1, + "rotor_error_fullspeed_num": 1, + "psu_fan_control": 1, + "fan_plug_in_default_countdown": 0, # no use + "fan_plug_in_pwm": 0x80, # fan plug in pwd + "deal_fan_error": 1, + "deal_fan_error_conf": { + "countdown": 2, + "FAN1": [ + {"name": "FAN1", "pwm": 0xff}, + {"name": "FAN2", "pwm": 0x80}, + {"name": "FAN3", "pwm": 0x80}, + {"name": "FAN4", "pwm": 0x80}, + {"name": "FAN5", "pwm": 0x80}, + {"name": "FAN6", "pwm": 0x80}, + ], + "FAN2": [ + {"name": "FAN1", "pwm": 0x80}, + {"name": "FAN2", "pwm": 0xff}, + {"name": "FAN3", "pwm": 0x80}, + {"name": "FAN4", "pwm": 0x80}, + {"name": "FAN5", "pwm": 0x80}, + {"name": "FAN6", "pwm": 0x80}, + ], + "FAN3": [ + {"name": "FAN1", "pwm": 0x80}, + {"name": "FAN2", "pwm": 0x80}, + {"name": "FAN3", "pwm": 0xff}, + {"name": "FAN4", "pwm": 0x80}, + {"name": "FAN5", "pwm": 0x80}, + {"name": "FAN6", "pwm": 0x80}, + ], + "FAN4": [ + {"name": "FAN1", "pwm": 0x80}, + {"name": "FAN2", "pwm": 0x80}, + {"name": "FAN3", "pwm": 0x80}, + {"name": "FAN4", "pwm": 0xff}, + {"name": "FAN5", "pwm": 0x80}, + {"name": "FAN6", "pwm": 0x80}, + ], + "FAN5": [ + {"name": "FAN1", "pwm": 0x80}, + {"name": "FAN2", "pwm": 0x80}, + {"name": "FAN3", "pwm": 0x80}, + {"name": "FAN4", "pwm": 0x80}, + {"name": "FAN5", "pwm": 0xff}, + {"name": "FAN6", "pwm": 0x80}, + ], + "FAN6": [ + {"name": "FAN1", "pwm": 0x80}, + {"name": "FAN2", "pwm": 0x80}, + {"name": "FAN3", "pwm": 0x80}, + {"name": "FAN4", "pwm": 0x80}, + {"name": "FAN5", "pwm": 0x80}, + {"name": "FAN6", "pwm": 0xff}, + ], + }, + }, + + "ledcontrol_para": { + "interval": 5, + "checkpsu": 0, # 0: sys led don't follow psu led + "checkfan": 0, # 0: sys led don't follow fan led + "psu_amber_num": 1, + "fan_amber_num": 1, + "board_sys_led": [ + {"led_name": "FRONT_SYS_LED"}, + ], + "board_psu_led": [ + {"led_name": "FRONT_PSU_LED"}, + ], + "board_fan_led": [ + {"led_name": "FRONT_FAN_LED"}, + ], + "psu_air_flow_monitor": 0, + "fan_air_flow_monitor": 0, + "psu_air_flow_amber_num": 0, + "fan_air_flow_amber_num": 0, + }, + + "otp_reboot_judge_file": { + "otp_switch_reboot_judge_file": "/etc/.otp_switch_reboot_flag", + "otp_other_reboot_judge_file": "/etc/.otp_other_reboot_flag", + }, +} diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/Makefile b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/Makefile new file mode 100644 index 000000000000..111fbf28cbe5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/Makefile @@ -0,0 +1,10 @@ +MAKEFILE_FILE_PATH = $(abspath $(lastword $(MAKEFILE_LIST))) +MODULES_DIR = $(abspath $(MAKEFILE_FILE_PATH)/../../../../common/modules) +EXTRA_CFLAGS+= -I$(MODULES_DIR) + +obj-m := wb_pcie_dev_device.o +obj-m += wb_fpga_pca954x_device.o +obj-m += wb_fpga_i2c_bus_device.o +obj-m += wb_lpc_drv_device.o +obj-m += wb_i2c_dev_device.o +obj-m += wb_io_dev_device.o diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_i2c_bus_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_i2c_bus_device.c new file mode 100644 index 000000000000..28674effb41e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_i2c_bus_device.c @@ -0,0 +1,2435 @@ +/* + * An wb_fpga_i2c_bus_device driver for fpga i2c device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include + +#include +#include + +static int g_wb_fpga_i2c_debug = 0; +static int g_wb_fpga_i2c_error = 0; + +module_param(g_wb_fpga_i2c_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_fpga_i2c_error, int, S_IRUGO | S_IWUSR); + +#define WB_FPGA_I2C_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_fpga_i2c_debug) { \ + printk(KERN_INFO "[WB_FPGA_I2C][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_FPGA_I2C_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_fpga_i2c_error) { \ + printk(KERN_ERR "[WB_FPGA_I2C][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static fpga_i2c_bus_device_t fpga_i2c_bus_device_data0 = { + .adap_nr = 2, + .i2c_timeout = 3000, + .i2c_scale = 0x500, + .i2c_filter = 0x504, + .i2c_stretch = 0x508, + .i2c_ext_9548_exits_flag = 0x50c, + .i2c_ext_9548_addr = 0x510, + .i2c_ext_9548_chan = 0x514, + .i2c_in_9548_chan = 0x518, + .i2c_slave = 0x51c, + .i2c_reg = 0x520, + .i2c_reg_len = 0x530, + .i2c_data_len = 0x534, + .i2c_ctrl = 0x538, + .i2c_status = 0x53c, + .i2c_data_buf = 0x580, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x80, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_i2c_bus_device_data1 = { + .adap_nr = 3, + .i2c_timeout = 3000, + .i2c_scale = 0x600, + .i2c_filter = 0x604, + .i2c_stretch = 0x608, + .i2c_ext_9548_exits_flag = 0x60c, + .i2c_ext_9548_addr = 0x610, + .i2c_ext_9548_chan = 0x614, + .i2c_in_9548_chan = 0x618, + .i2c_slave = 0x61c, + .i2c_reg = 0x620, + .i2c_reg_len = 0x630, + .i2c_data_len = 0x634, + .i2c_ctrl = 0x638, + .i2c_status = 0x63c, + .i2c_data_buf = 0x680, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x84, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_i2c_bus_device_data2 = { + .adap_nr = 4, + .i2c_timeout = 3000, + .i2c_scale = 0x700, + .i2c_filter = 0x704, + .i2c_stretch = 0x708, + .i2c_ext_9548_exits_flag = 0x70c, + .i2c_ext_9548_addr = 0x710, + .i2c_ext_9548_chan = 0x714, + .i2c_in_9548_chan = 0x718, + .i2c_slave = 0x71c, + .i2c_reg = 0x720, + .i2c_reg_len = 0x730, + .i2c_data_len = 0x734, + .i2c_ctrl = 0x738, + .i2c_status = 0x73c, + .i2c_data_buf = 0x780, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x88, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_i2c_bus_device_data3 = { + .adap_nr = 5, + .i2c_timeout = 3000, + .i2c_scale = 0x800, + .i2c_filter = 0x804, + .i2c_stretch = 0x808, + .i2c_ext_9548_exits_flag = 0x80c, + .i2c_ext_9548_addr = 0x810, + .i2c_ext_9548_chan = 0x814, + .i2c_in_9548_chan = 0x818, + .i2c_slave = 0x81c, + .i2c_reg = 0x820, + .i2c_reg_len = 0x830, + .i2c_data_len = 0x834, + .i2c_ctrl = 0x838, + .i2c_status = 0x83c, + .i2c_data_buf = 0x900, + .i2c_data_buf_len = 0x100, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x8c, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data0 = { + .adap_nr = 6, + .i2c_timeout = 3000, + .i2c_scale = 0x2c00, + .i2c_filter = 0x2c04, + .i2c_stretch = 0x2c08, + .i2c_ext_9548_exits_flag = 0x2c0c, + .i2c_ext_9548_addr = 0x2c10, + .i2c_ext_9548_chan = 0x2c14, + .i2c_in_9548_chan = 0x2c18, + .i2c_slave = 0x2c1c, + .i2c_reg = 0x2c20, + .i2c_reg_len = 0x2c30, + .i2c_data_len = 0x2c34, + .i2c_ctrl = 0x2c38, + .i2c_status = 0x2c3c, + .i2c_data_buf = 0x2c80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data1 = { + .adap_nr = 7, + .i2c_timeout = 3000, + .i2c_scale = 0x2d00, + .i2c_filter = 0x2d04, + .i2c_stretch = 0x2d08, + .i2c_ext_9548_exits_flag = 0x2d0c, + .i2c_ext_9548_addr = 0x2d10, + .i2c_ext_9548_chan = 0x2d14, + .i2c_in_9548_chan = 0x2d18, + .i2c_slave = 0x2d1c, + .i2c_reg = 0x2d20, + .i2c_reg_len = 0x2d30, + .i2c_data_len = 0x2d34, + .i2c_ctrl = 0x2d38, + .i2c_status = 0x2d3c, + .i2c_data_buf = 0x2d80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000002, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data2 = { + .adap_nr = 8, + .i2c_timeout = 3000, + .i2c_scale = 0x2e00, + .i2c_filter = 0x2e04, + .i2c_stretch = 0x2e08, + .i2c_ext_9548_exits_flag = 0x2e0c, + .i2c_ext_9548_addr = 0x2e10, + .i2c_ext_9548_chan = 0x2e14, + .i2c_in_9548_chan = 0x2e18, + .i2c_slave = 0x2e1c, + .i2c_reg = 0x2e20, + .i2c_reg_len = 0x2e30, + .i2c_data_len = 0x2e34, + .i2c_ctrl = 0x2e38, + .i2c_status = 0x2e3c, + .i2c_data_buf = 0x2e80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000004, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data3 = { + .adap_nr = 9, + .i2c_timeout = 3000, + .i2c_scale = 0x2f00, + .i2c_filter = 0x2f04, + .i2c_stretch = 0x2f08, + .i2c_ext_9548_exits_flag = 0x2f0c, + .i2c_ext_9548_addr = 0x2f10, + .i2c_ext_9548_chan = 0x2f14, + .i2c_in_9548_chan = 0x2f18, + .i2c_slave = 0x2f1c, + .i2c_reg = 0x2f20, + .i2c_reg_len = 0x2f30, + .i2c_data_len = 0x2f34, + .i2c_ctrl = 0x2f38, + .i2c_status = 0x2f3c, + .i2c_data_buf = 0x2f80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000008, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data4 = { + .adap_nr = 10, + .i2c_timeout = 3000, + .i2c_scale = 0x3000, + .i2c_filter = 0x3004, + .i2c_stretch = 0x3008, + .i2c_ext_9548_exits_flag = 0x300c, + .i2c_ext_9548_addr = 0x3010, + .i2c_ext_9548_chan = 0x3014, + .i2c_in_9548_chan = 0x3018, + .i2c_slave = 0x301c, + .i2c_reg = 0x3020, + .i2c_reg_len = 0x3030, + .i2c_data_len = 0x3034, + .i2c_ctrl = 0x3038, + .i2c_status = 0x303c, + .i2c_data_buf = 0x3080, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000010, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data5 = { + .adap_nr = 11, + .i2c_timeout = 3000, + .i2c_scale = 0x3100, + .i2c_filter = 0x3104, + .i2c_stretch = 0x3108, + .i2c_ext_9548_exits_flag = 0x310c, + .i2c_ext_9548_addr = 0x3110, + .i2c_ext_9548_chan = 0x3114, + .i2c_in_9548_chan = 0x3118, + .i2c_slave = 0x311c, + .i2c_reg = 0x3120, + .i2c_reg_len = 0x3130, + .i2c_data_len = 0x3134, + .i2c_ctrl = 0x3138, + .i2c_status = 0x313c, + .i2c_data_buf = 0x3180, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000020, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data6 = { + .adap_nr = 12, + .i2c_timeout = 3000, + .i2c_scale = 0x3200, + .i2c_filter = 0x3204, + .i2c_stretch = 0x3208, + .i2c_ext_9548_exits_flag = 0x320c, + .i2c_ext_9548_addr = 0x3210, + .i2c_ext_9548_chan = 0x3214, + .i2c_in_9548_chan = 0x3218, + .i2c_slave = 0x321c, + .i2c_reg = 0x3220, + .i2c_reg_len = 0x3230, + .i2c_data_len = 0x3234, + .i2c_ctrl = 0x3238, + .i2c_status = 0x323c, + .i2c_data_buf = 0x3280, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000040, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data7 = { + .adap_nr = 13, + .i2c_timeout = 3000, + .i2c_scale = 0x3300, + .i2c_filter = 0x3304, + .i2c_stretch = 0x3308, + .i2c_ext_9548_exits_flag = 0x330c, + .i2c_ext_9548_addr = 0x3310, + .i2c_ext_9548_chan = 0x3314, + .i2c_in_9548_chan = 0x3318, + .i2c_slave = 0x331c, + .i2c_reg = 0x3320, + .i2c_reg_len = 0x3330, + .i2c_data_len = 0x3334, + .i2c_ctrl = 0x3338, + .i2c_status = 0x333c, + .i2c_data_buf = 0x3380, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000080, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data8 = { + .adap_nr = 14, + .i2c_timeout = 3000, + .i2c_scale = 0x3400, + .i2c_filter = 0x3404, + .i2c_stretch = 0x3408, + .i2c_ext_9548_exits_flag = 0x340c, + .i2c_ext_9548_addr = 0x3410, + .i2c_ext_9548_chan = 0x3414, + .i2c_in_9548_chan = 0x3418, + .i2c_slave = 0x341c, + .i2c_reg = 0x3420, + .i2c_reg_len = 0x3430, + .i2c_data_len = 0x3434, + .i2c_ctrl = 0x3438, + .i2c_status = 0x343c, + .i2c_data_buf = 0x3480, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000100, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data9 = { + .adap_nr = 15, + .i2c_timeout = 3000, + .i2c_scale = 0x3500, + .i2c_filter = 0x3504, + .i2c_stretch = 0x3508, + .i2c_ext_9548_exits_flag = 0x350c, + .i2c_ext_9548_addr = 0x3510, + .i2c_ext_9548_chan = 0x3514, + .i2c_in_9548_chan = 0x3518, + .i2c_slave = 0x351c, + .i2c_reg = 0x3520, + .i2c_reg_len = 0x3530, + .i2c_data_len = 0x3534, + .i2c_ctrl = 0x3538, + .i2c_status = 0x353c, + .i2c_data_buf = 0x3580, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000200, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data10 = { + .adap_nr = 16, + .i2c_timeout = 3000, + .i2c_scale = 0x3600, + .i2c_filter = 0x3604, + .i2c_stretch = 0x3608, + .i2c_ext_9548_exits_flag = 0x360c, + .i2c_ext_9548_addr = 0x3610, + .i2c_ext_9548_chan = 0x3614, + .i2c_in_9548_chan = 0x3618, + .i2c_slave = 0x361c, + .i2c_reg = 0x3620, + .i2c_reg_len = 0x3630, + .i2c_data_len = 0x3634, + .i2c_ctrl = 0x3638, + .i2c_status = 0x363c, + .i2c_data_buf = 0x3680, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000400, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data11 = { + .adap_nr = 17, + .i2c_timeout = 3000, + .i2c_scale = 0x3700, + .i2c_filter = 0x3704, + .i2c_stretch = 0x3708, + .i2c_ext_9548_exits_flag = 0x370c, + .i2c_ext_9548_addr = 0x3710, + .i2c_ext_9548_chan = 0x3714, + .i2c_in_9548_chan = 0x3718, + .i2c_slave = 0x371c, + .i2c_reg = 0x3720, + .i2c_reg_len = 0x3730, + .i2c_data_len = 0x3734, + .i2c_ctrl = 0x3738, + .i2c_status = 0x373c, + .i2c_data_buf = 0x3780, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00000800, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data12 = { + .adap_nr = 18, + .i2c_timeout = 3000, + .i2c_scale = 0x3800, + .i2c_filter = 0x3804, + .i2c_stretch = 0x3808, + .i2c_ext_9548_exits_flag = 0x380c, + .i2c_ext_9548_addr = 0x3810, + .i2c_ext_9548_chan = 0x3814, + .i2c_in_9548_chan = 0x3818, + .i2c_slave = 0x381c, + .i2c_reg = 0x3820, + .i2c_reg_len = 0x3830, + .i2c_data_len = 0x3834, + .i2c_ctrl = 0x3838, + .i2c_status = 0x383c, + .i2c_data_buf = 0x3880, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00001000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data13 = { + .adap_nr = 19, + .i2c_timeout = 3000, + .i2c_scale = 0x3900, + .i2c_filter = 0x3904, + .i2c_stretch = 0x3908, + .i2c_ext_9548_exits_flag = 0x390c, + .i2c_ext_9548_addr = 0x3910, + .i2c_ext_9548_chan = 0x3914, + .i2c_in_9548_chan = 0x3918, + .i2c_slave = 0x391c, + .i2c_reg = 0x3920, + .i2c_reg_len = 0x3930, + .i2c_data_len = 0x3934, + .i2c_ctrl = 0x3938, + .i2c_status = 0x393c, + .i2c_data_buf = 0x3980, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00002000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data14 = { + .adap_nr = 20, + .i2c_timeout = 3000, + .i2c_scale = 0x3a00, + .i2c_filter = 0x3a04, + .i2c_stretch = 0x3a08, + .i2c_ext_9548_exits_flag = 0x3a0c, + .i2c_ext_9548_addr = 0x3a10, + .i2c_ext_9548_chan = 0x3a14, + .i2c_in_9548_chan = 0x3a18, + .i2c_slave = 0x3a1c, + .i2c_reg = 0x3a20, + .i2c_reg_len = 0x3a30, + .i2c_data_len = 0x3a34, + .i2c_ctrl = 0x3a38, + .i2c_status = 0x3a3c, + .i2c_data_buf = 0x3a80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00004000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data15 = { + .adap_nr = 21, + .i2c_timeout = 3000, + .i2c_scale = 0x3b00, + .i2c_filter = 0x3b04, + .i2c_stretch = 0x3b08, + .i2c_ext_9548_exits_flag = 0x3b0c, + .i2c_ext_9548_addr = 0x3b10, + .i2c_ext_9548_chan = 0x3b14, + .i2c_in_9548_chan = 0x3b18, + .i2c_slave = 0x3b1c, + .i2c_reg = 0x3b20, + .i2c_reg_len = 0x3b30, + .i2c_data_len = 0x3b34, + .i2c_ctrl = 0x3b38, + .i2c_status = 0x3b3c, + .i2c_data_buf = 0x3b80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00008000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data16 = { + .adap_nr = 22, + .i2c_timeout = 3000, + .i2c_scale = 0x3c00, + .i2c_filter = 0x3c04, + .i2c_stretch = 0x3c08, + .i2c_ext_9548_exits_flag = 0x3c0c, + .i2c_ext_9548_addr = 0x3c10, + .i2c_ext_9548_chan = 0x3c14, + .i2c_in_9548_chan = 0x3c18, + .i2c_slave = 0x3c1c, + .i2c_reg = 0x3c20, + .i2c_reg_len = 0x3c30, + .i2c_data_len = 0x3c34, + .i2c_ctrl = 0x3c38, + .i2c_status = 0x3c3c, + .i2c_data_buf = 0x3c80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00010000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data17 = { + .adap_nr = 23, + .i2c_timeout = 3000, + .i2c_scale = 0x3d00, + .i2c_filter = 0x3d04, + .i2c_stretch = 0x3d08, + .i2c_ext_9548_exits_flag = 0x3d0c, + .i2c_ext_9548_addr = 0x3d10, + .i2c_ext_9548_chan = 0x3d14, + .i2c_in_9548_chan = 0x3d18, + .i2c_slave = 0x3d1c, + .i2c_reg = 0x3d20, + .i2c_reg_len = 0x3d30, + .i2c_data_len = 0x3d34, + .i2c_ctrl = 0x3d38, + .i2c_status = 0x3d3c, + .i2c_data_buf = 0x3d80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00020000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data18 = { + .adap_nr = 24, + .i2c_timeout = 3000, + .i2c_scale = 0x3e00, + .i2c_filter = 0x3e04, + .i2c_stretch = 0x3e08, + .i2c_ext_9548_exits_flag = 0x3e0c, + .i2c_ext_9548_addr = 0x3e10, + .i2c_ext_9548_chan = 0x3e14, + .i2c_in_9548_chan = 0x3e18, + .i2c_slave = 0x3e1c, + .i2c_reg = 0x3e20, + .i2c_reg_len = 0x3e30, + .i2c_data_len = 0x3e34, + .i2c_ctrl = 0x3e38, + .i2c_status = 0x3e3c, + .i2c_data_buf = 0x3e80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00040000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data19 = { + .adap_nr = 25, + .i2c_timeout = 3000, + .i2c_scale = 0x3f00, + .i2c_filter = 0x3f04, + .i2c_stretch = 0x3f08, + .i2c_ext_9548_exits_flag = 0x3f0c, + .i2c_ext_9548_addr = 0x3f10, + .i2c_ext_9548_chan = 0x3f14, + .i2c_in_9548_chan = 0x3f18, + .i2c_slave = 0x3f1c, + .i2c_reg = 0x3f20, + .i2c_reg_len = 0x3f30, + .i2c_data_len = 0x3f34, + .i2c_ctrl = 0x3f38, + .i2c_status = 0x3f3c, + .i2c_data_buf = 0x3f80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00080000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data20 = { + .adap_nr = 26, + .i2c_timeout = 3000, + .i2c_scale = 0x4000, + .i2c_filter = 0x4004, + .i2c_stretch = 0x4008, + .i2c_ext_9548_exits_flag = 0x400c, + .i2c_ext_9548_addr = 0x4010, + .i2c_ext_9548_chan = 0x4014, + .i2c_in_9548_chan = 0x4018, + .i2c_slave = 0x401c, + .i2c_reg = 0x4020, + .i2c_reg_len = 0x4030, + .i2c_data_len = 0x4034, + .i2c_ctrl = 0x4038, + .i2c_status = 0x403c, + .i2c_data_buf = 0x4080, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00100000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data21 = { + .adap_nr = 27, + .i2c_timeout = 3000, + .i2c_scale = 0x4100, + .i2c_filter = 0x4104, + .i2c_stretch = 0x4108, + .i2c_ext_9548_exits_flag = 0x410c, + .i2c_ext_9548_addr = 0x4110, + .i2c_ext_9548_chan = 0x4114, + .i2c_in_9548_chan = 0x4118, + .i2c_slave = 0x411c, + .i2c_reg = 0x4120, + .i2c_reg_len = 0x4130, + .i2c_data_len = 0x4134, + .i2c_ctrl = 0x4138, + .i2c_status = 0x413c, + .i2c_data_buf = 0x4180, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00200000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data22 = { + .adap_nr = 28, + .i2c_timeout = 3000, + .i2c_scale = 0x4200, + .i2c_filter = 0x4204, + .i2c_stretch = 0x4208, + .i2c_ext_9548_exits_flag = 0x420c, + .i2c_ext_9548_addr = 0x4210, + .i2c_ext_9548_chan = 0x4214, + .i2c_in_9548_chan = 0x4218, + .i2c_slave = 0x421c, + .i2c_reg = 0x4220, + .i2c_reg_len = 0x4230, + .i2c_data_len = 0x4234, + .i2c_ctrl = 0x4238, + .i2c_status = 0x423c, + .i2c_data_buf = 0x4280, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00400000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data23 = { + .adap_nr = 29, + .i2c_timeout = 3000, + .i2c_scale = 0x4300, + .i2c_filter = 0x4304, + .i2c_stretch = 0x4308, + .i2c_ext_9548_exits_flag = 0x430c, + .i2c_ext_9548_addr = 0x4310, + .i2c_ext_9548_chan = 0x4314, + .i2c_in_9548_chan = 0x4318, + .i2c_slave = 0x431c, + .i2c_reg = 0x4320, + .i2c_reg_len = 0x4330, + .i2c_data_len = 0x4334, + .i2c_ctrl = 0x4338, + .i2c_status = 0x433c, + .i2c_data_buf = 0x4380, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x00800000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data24 = { + .adap_nr = 30, + .i2c_timeout = 3000, + .i2c_scale = 0x4400, + .i2c_filter = 0x4404, + .i2c_stretch = 0x4408, + .i2c_ext_9548_exits_flag = 0x440c, + .i2c_ext_9548_addr = 0x4410, + .i2c_ext_9548_chan = 0x4414, + .i2c_in_9548_chan = 0x4418, + .i2c_slave = 0x441c, + .i2c_reg = 0x4420, + .i2c_reg_len = 0x4430, + .i2c_data_len = 0x4434, + .i2c_ctrl = 0x4438, + .i2c_status = 0x443c, + .i2c_data_buf = 0x4480, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x01000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data25 = { + .adap_nr = 31, + .i2c_timeout = 3000, + .i2c_scale = 0x4500, + .i2c_filter = 0x4504, + .i2c_stretch = 0x4508, + .i2c_ext_9548_exits_flag = 0x450c, + .i2c_ext_9548_addr = 0x4510, + .i2c_ext_9548_chan = 0x4514, + .i2c_in_9548_chan = 0x4518, + .i2c_slave = 0x451c, + .i2c_reg = 0x4520, + .i2c_reg_len = 0x4530, + .i2c_data_len = 0x4534, + .i2c_ctrl = 0x4538, + .i2c_status = 0x453c, + .i2c_data_buf = 0x4580, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x02000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data26 = { + .adap_nr = 32, + .i2c_timeout = 3000, + .i2c_scale = 0x4600, + .i2c_filter = 0x4604, + .i2c_stretch = 0x4608, + .i2c_ext_9548_exits_flag = 0x460c, + .i2c_ext_9548_addr = 0x4610, + .i2c_ext_9548_chan = 0x4614, + .i2c_in_9548_chan = 0x4618, + .i2c_slave = 0x461c, + .i2c_reg = 0x4620, + .i2c_reg_len = 0x4630, + .i2c_data_len = 0x4634, + .i2c_ctrl = 0x4638, + .i2c_status = 0x463c, + .i2c_data_buf = 0x4680, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x04000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data27 = { + .adap_nr = 33, + .i2c_timeout = 3000, + .i2c_scale = 0x4700, + .i2c_filter = 0x4704, + .i2c_stretch = 0x4708, + .i2c_ext_9548_exits_flag = 0x470c, + .i2c_ext_9548_addr = 0x4710, + .i2c_ext_9548_chan = 0x4714, + .i2c_in_9548_chan = 0x4718, + .i2c_slave = 0x471c, + .i2c_reg = 0x4720, + .i2c_reg_len = 0x4730, + .i2c_data_len = 0x4734, + .i2c_ctrl = 0x4738, + .i2c_status = 0x473c, + .i2c_data_buf = 0x4780, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x08000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data28 = { + .adap_nr = 34, + .i2c_timeout = 3000, + .i2c_scale = 0x4800, + .i2c_filter = 0x4804, + .i2c_stretch = 0x4808, + .i2c_ext_9548_exits_flag = 0x480c, + .i2c_ext_9548_addr = 0x4810, + .i2c_ext_9548_chan = 0x4814, + .i2c_in_9548_chan = 0x4818, + .i2c_slave = 0x481c, + .i2c_reg = 0x4820, + .i2c_reg_len = 0x4830, + .i2c_data_len = 0x4834, + .i2c_ctrl = 0x4838, + .i2c_status = 0x483c, + .i2c_data_buf = 0x4880, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x10000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data29 = { + .adap_nr = 35, + .i2c_timeout = 3000, + .i2c_scale = 0x4900, + .i2c_filter = 0x4904, + .i2c_stretch = 0x4908, + .i2c_ext_9548_exits_flag = 0x490c, + .i2c_ext_9548_addr = 0x4910, + .i2c_ext_9548_chan = 0x4914, + .i2c_in_9548_chan = 0x4918, + .i2c_slave = 0x491c, + .i2c_reg = 0x4920, + .i2c_reg_len = 0x4930, + .i2c_data_len = 0x4934, + .i2c_ctrl = 0x4938, + .i2c_status = 0x493c, + .i2c_data_buf = 0x4980, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x20000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data30 = { + .adap_nr = 36, + .i2c_timeout = 3000, + .i2c_scale = 0x4a00, + .i2c_filter = 0x4a04, + .i2c_stretch = 0x4a08, + .i2c_ext_9548_exits_flag = 0x4a0c, + .i2c_ext_9548_addr = 0x4a10, + .i2c_ext_9548_chan = 0x4a14, + .i2c_in_9548_chan = 0x4a18, + .i2c_slave = 0x4a1c, + .i2c_reg = 0x4a20, + .i2c_reg_len = 0x4a30, + .i2c_data_len = 0x4a34, + .i2c_ctrl = 0x4a38, + .i2c_status = 0x4a3c, + .i2c_data_buf = 0x4a80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x40000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data31 = { + .adap_nr = 37, + .i2c_timeout = 3000, + .i2c_scale = 0x4b00, + .i2c_filter = 0x4b04, + .i2c_stretch = 0x4b08, + .i2c_ext_9548_exits_flag = 0x4b0c, + .i2c_ext_9548_addr = 0x4b10, + .i2c_ext_9548_chan = 0x4b14, + .i2c_in_9548_chan = 0x4b18, + .i2c_slave = 0x4b1c, + .i2c_reg = 0x4b20, + .i2c_reg_len = 0x4b30, + .i2c_data_len = 0x4b34, + .i2c_ctrl = 0x4b38, + .i2c_status = 0x4b3c, + .i2c_data_buf = 0x4b80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x78, + .i2c_reset_on = 0x80000000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data32 = { + .adap_nr = 38, + .i2c_timeout = 3000, + .i2c_scale = 0x4c00, + .i2c_filter = 0x4c04, + .i2c_stretch = 0x4c08, + .i2c_ext_9548_exits_flag = 0x4c0c, + .i2c_ext_9548_addr = 0x4c10, + .i2c_ext_9548_chan = 0x4c14, + .i2c_in_9548_chan = 0x4c18, + .i2c_slave = 0x4c1c, + .i2c_reg = 0x4c20, + .i2c_reg_len = 0x4c30, + .i2c_data_len = 0x4c34, + .i2c_ctrl = 0x4c38, + .i2c_status = 0x4c3c, + .i2c_data_buf = 0x4c80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000001, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data33 = { + .adap_nr = 39, + .i2c_timeout = 3000, + .i2c_scale = 0x4d00, + .i2c_filter = 0x4d04, + .i2c_stretch = 0x4d08, + .i2c_ext_9548_exits_flag = 0x4d0c, + .i2c_ext_9548_addr = 0x4d10, + .i2c_ext_9548_chan = 0x4d14, + .i2c_in_9548_chan = 0x4d18, + .i2c_slave = 0x4d1c, + .i2c_reg = 0x4d20, + .i2c_reg_len = 0x4d30, + .i2c_data_len = 0x4d34, + .i2c_ctrl = 0x4d38, + .i2c_status = 0x4d3c, + .i2c_data_buf = 0x4d80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000002, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data34 = { + .adap_nr = 40, + .i2c_timeout = 3000, + .i2c_scale = 0x4e00, + .i2c_filter = 0x4e04, + .i2c_stretch = 0x4e08, + .i2c_ext_9548_exits_flag = 0x4e0c, + .i2c_ext_9548_addr = 0x4e10, + .i2c_ext_9548_chan = 0x4e14, + .i2c_in_9548_chan = 0x4e18, + .i2c_slave = 0x4e1c, + .i2c_reg = 0x4e20, + .i2c_reg_len = 0x4e30, + .i2c_data_len = 0x4e34, + .i2c_ctrl = 0x4e38, + .i2c_status = 0x4e3c, + .i2c_data_buf = 0x4e80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000004, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data35 = { + .adap_nr = 41, + .i2c_timeout = 3000, + .i2c_scale = 0x4f00, + .i2c_filter = 0x4f04, + .i2c_stretch = 0x4f08, + .i2c_ext_9548_exits_flag = 0x4f0c, + .i2c_ext_9548_addr = 0x4f10, + .i2c_ext_9548_chan = 0x4f14, + .i2c_in_9548_chan = 0x4f18, + .i2c_slave = 0x4f1c, + .i2c_reg = 0x4f20, + .i2c_reg_len = 0x4f30, + .i2c_data_len = 0x4f34, + .i2c_ctrl = 0x4f38, + .i2c_status = 0x4f3c, + .i2c_data_buf = 0x4f80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000008, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data36 = { + .adap_nr = 42, + .i2c_timeout = 3000, + .i2c_scale = 0x5000, + .i2c_filter = 0x5004, + .i2c_stretch = 0x5008, + .i2c_ext_9548_exits_flag = 0x500c, + .i2c_ext_9548_addr = 0x5010, + .i2c_ext_9548_chan = 0x5014, + .i2c_in_9548_chan = 0x5018, + .i2c_slave = 0x501c, + .i2c_reg = 0x5020, + .i2c_reg_len = 0x5030, + .i2c_data_len = 0x5034, + .i2c_ctrl = 0x5038, + .i2c_status = 0x503c, + .i2c_data_buf = 0x5080, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000010, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data37 = { + .adap_nr = 43, + .i2c_timeout = 3000, + .i2c_scale = 0x5100, + .i2c_filter = 0x5104, + .i2c_stretch = 0x5108, + .i2c_ext_9548_exits_flag = 0x510c, + .i2c_ext_9548_addr = 0x5110, + .i2c_ext_9548_chan = 0x5114, + .i2c_in_9548_chan = 0x5118, + .i2c_slave = 0x511c, + .i2c_reg = 0x5120, + .i2c_reg_len = 0x5130, + .i2c_data_len = 0x5134, + .i2c_ctrl = 0x5138, + .i2c_status = 0x513c, + .i2c_data_buf = 0x5180, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000020, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data38 = { + .adap_nr = 44, + .i2c_timeout = 3000, + .i2c_scale = 0x5200, + .i2c_filter = 0x5204, + .i2c_stretch = 0x5208, + .i2c_ext_9548_exits_flag = 0x520c, + .i2c_ext_9548_addr = 0x5210, + .i2c_ext_9548_chan = 0x5214, + .i2c_in_9548_chan = 0x5218, + .i2c_slave = 0x521c, + .i2c_reg = 0x5220, + .i2c_reg_len = 0x5230, + .i2c_data_len = 0x5234, + .i2c_ctrl = 0x5238, + .i2c_status = 0x523c, + .i2c_data_buf = 0x5280, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000040, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data39 = { + .adap_nr = 45, + .i2c_timeout = 3000, + .i2c_scale = 0x5300, + .i2c_filter = 0x5304, + .i2c_stretch = 0x5308, + .i2c_ext_9548_exits_flag = 0x530c, + .i2c_ext_9548_addr = 0x5310, + .i2c_ext_9548_chan = 0x5314, + .i2c_in_9548_chan = 0x5318, + .i2c_slave = 0x531c, + .i2c_reg = 0x5320, + .i2c_reg_len = 0x5330, + .i2c_data_len = 0x5334, + .i2c_ctrl = 0x5338, + .i2c_status = 0x533c, + .i2c_data_buf = 0x5380, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000080, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data40 = { + .adap_nr = 46, + .i2c_timeout = 3000, + .i2c_scale = 0x5400, + .i2c_filter = 0x5404, + .i2c_stretch = 0x5408, + .i2c_ext_9548_exits_flag = 0x540c, + .i2c_ext_9548_addr = 0x5410, + .i2c_ext_9548_chan = 0x5414, + .i2c_in_9548_chan = 0x5418, + .i2c_slave = 0x541c, + .i2c_reg = 0x5420, + .i2c_reg_len = 0x5430, + .i2c_data_len = 0x5434, + .i2c_ctrl = 0x5438, + .i2c_status = 0x543c, + .i2c_data_buf = 0x5480, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000100, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data41 = { + .adap_nr = 47, + .i2c_timeout = 3000, + .i2c_scale = 0x5500, + .i2c_filter = 0x5504, + .i2c_stretch = 0x5508, + .i2c_ext_9548_exits_flag = 0x550c, + .i2c_ext_9548_addr = 0x5510, + .i2c_ext_9548_chan = 0x5514, + .i2c_in_9548_chan = 0x5518, + .i2c_slave = 0x551c, + .i2c_reg = 0x5520, + .i2c_reg_len = 0x5530, + .i2c_data_len = 0x5534, + .i2c_ctrl = 0x5538, + .i2c_status = 0x553c, + .i2c_data_buf = 0x5580, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000200, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data42 = { + .adap_nr = 48, + .i2c_timeout = 3000, + .i2c_scale = 0x5600, + .i2c_filter = 0x5604, + .i2c_stretch = 0x5608, + .i2c_ext_9548_exits_flag = 0x560c, + .i2c_ext_9548_addr = 0x5610, + .i2c_ext_9548_chan = 0x5614, + .i2c_in_9548_chan = 0x5618, + .i2c_slave = 0x561c, + .i2c_reg = 0x5620, + .i2c_reg_len = 0x5630, + .i2c_data_len = 0x5634, + .i2c_ctrl = 0x5638, + .i2c_status = 0x563c, + .i2c_data_buf = 0x5680, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000400, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data43 = { + .adap_nr = 49, + .i2c_timeout = 3000, + .i2c_scale = 0x5700, + .i2c_filter = 0x5704, + .i2c_stretch = 0x5708, + .i2c_ext_9548_exits_flag = 0x570c, + .i2c_ext_9548_addr = 0x5710, + .i2c_ext_9548_chan = 0x5714, + .i2c_in_9548_chan = 0x5718, + .i2c_slave = 0x571c, + .i2c_reg = 0x5720, + .i2c_reg_len = 0x5730, + .i2c_data_len = 0x5734, + .i2c_ctrl = 0x5738, + .i2c_status = 0x573c, + .i2c_data_buf = 0x5780, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00000800, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data44 = { + .adap_nr = 50, + .i2c_timeout = 3000, + .i2c_scale = 0x5800, + .i2c_filter = 0x5804, + .i2c_stretch = 0x5808, + .i2c_ext_9548_exits_flag = 0x580c, + .i2c_ext_9548_addr = 0x5810, + .i2c_ext_9548_chan = 0x5814, + .i2c_in_9548_chan = 0x5818, + .i2c_slave = 0x581c, + .i2c_reg = 0x5820, + .i2c_reg_len = 0x5830, + .i2c_data_len = 0x5834, + .i2c_ctrl = 0x5838, + .i2c_status = 0x583c, + .i2c_data_buf = 0x5880, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00001000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data45 = { + .adap_nr = 51, + .i2c_timeout = 3000, + .i2c_scale = 0x5900, + .i2c_filter = 0x5904, + .i2c_stretch = 0x5908, + .i2c_ext_9548_exits_flag = 0x590c, + .i2c_ext_9548_addr = 0x5910, + .i2c_ext_9548_chan = 0x5914, + .i2c_in_9548_chan = 0x5918, + .i2c_slave = 0x591c, + .i2c_reg = 0x5920, + .i2c_reg_len = 0x5930, + .i2c_data_len = 0x5934, + .i2c_ctrl = 0x5938, + .i2c_status = 0x593c, + .i2c_data_buf = 0x5980, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00002000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data46 = { + .adap_nr = 52, + .i2c_timeout = 3000, + .i2c_scale = 0x5a00, + .i2c_filter = 0x5a04, + .i2c_stretch = 0x5a08, + .i2c_ext_9548_exits_flag = 0x5a0c, + .i2c_ext_9548_addr = 0x5a10, + .i2c_ext_9548_chan = 0x5a14, + .i2c_in_9548_chan = 0x5a18, + .i2c_slave = 0x5a1c, + .i2c_reg = 0x5a20, + .i2c_reg_len = 0x5a30, + .i2c_data_len = 0x5a34, + .i2c_ctrl = 0x5a38, + .i2c_status = 0x5a3c, + .i2c_data_buf = 0x5a80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00004000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data47 = { + .adap_nr = 53, + .i2c_timeout = 3000, + .i2c_scale = 0x5b00, + .i2c_filter = 0x5b04, + .i2c_stretch = 0x5b08, + .i2c_ext_9548_exits_flag = 0x5b0c, + .i2c_ext_9548_addr = 0x5b10, + .i2c_ext_9548_chan = 0x5b14, + .i2c_in_9548_chan = 0x5b18, + .i2c_slave = 0x5b1c, + .i2c_reg = 0x5b20, + .i2c_reg_len = 0x5b30, + .i2c_data_len = 0x5b34, + .i2c_ctrl = 0x5b38, + .i2c_status = 0x5b3c, + .i2c_data_buf = 0x5b80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00008000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data48 = { + .adap_nr = 54, + .i2c_timeout = 3000, + .i2c_scale = 0x5c00, + .i2c_filter = 0x5c04, + .i2c_stretch = 0x5c08, + .i2c_ext_9548_exits_flag = 0x5c0c, + .i2c_ext_9548_addr = 0x5c10, + .i2c_ext_9548_chan = 0x5c14, + .i2c_in_9548_chan = 0x5c18, + .i2c_slave = 0x5c1c, + .i2c_reg = 0x5c20, + .i2c_reg_len = 0x5c30, + .i2c_data_len = 0x5c34, + .i2c_ctrl = 0x5c38, + .i2c_status = 0x5c3c, + .i2c_data_buf = 0x5c80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00010000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data49 = { + .adap_nr = 55, + .i2c_timeout = 3000, + .i2c_scale = 0x5d00, + .i2c_filter = 0x5d04, + .i2c_stretch = 0x5d08, + .i2c_ext_9548_exits_flag = 0x5d0c, + .i2c_ext_9548_addr = 0x5d10, + .i2c_ext_9548_chan = 0x5d14, + .i2c_in_9548_chan = 0x5d18, + .i2c_slave = 0x5d1c, + .i2c_reg = 0x5d20, + .i2c_reg_len = 0x5d30, + .i2c_data_len = 0x5d34, + .i2c_ctrl = 0x5d38, + .i2c_status = 0x5d3c, + .i2c_data_buf = 0x5d80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00020000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data50 = { + .adap_nr = 56, + .i2c_timeout = 3000, + .i2c_scale = 0x5e00, + .i2c_filter = 0x5e04, + .i2c_stretch = 0x5e08, + .i2c_ext_9548_exits_flag = 0x5e0c, + .i2c_ext_9548_addr = 0x5e10, + .i2c_ext_9548_chan = 0x5e14, + .i2c_in_9548_chan = 0x5e18, + .i2c_slave = 0x5e1c, + .i2c_reg = 0x5e20, + .i2c_reg_len = 0x5e30, + .i2c_data_len = 0x5e34, + .i2c_ctrl = 0x5e38, + .i2c_status = 0x5e3c, + .i2c_data_buf = 0x5e80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00040000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data51 = { + .adap_nr = 57, + .i2c_timeout = 3000, + .i2c_scale = 0x5f00, + .i2c_filter = 0x5f04, + .i2c_stretch = 0x5f08, + .i2c_ext_9548_exits_flag = 0x5f0c, + .i2c_ext_9548_addr = 0x5f10, + .i2c_ext_9548_chan = 0x5f14, + .i2c_in_9548_chan = 0x5f18, + .i2c_slave = 0x5f1c, + .i2c_reg = 0x5f20, + .i2c_reg_len = 0x5f30, + .i2c_data_len = 0x5f34, + .i2c_ctrl = 0x5f38, + .i2c_status = 0x5f3c, + .i2c_data_buf = 0x5f80, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00080000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data52 = { + .adap_nr = 58, + .i2c_timeout = 3000, + .i2c_scale = 0x6000, + .i2c_filter = 0x6004, + .i2c_stretch = 0x6008, + .i2c_ext_9548_exits_flag = 0x600c, + .i2c_ext_9548_addr = 0x6010, + .i2c_ext_9548_chan = 0x6014, + .i2c_in_9548_chan = 0x6018, + .i2c_slave = 0x601c, + .i2c_reg = 0x6020, + .i2c_reg_len = 0x6030, + .i2c_data_len = 0x6034, + .i2c_ctrl = 0x6038, + .i2c_status = 0x603c, + .i2c_data_buf = 0x6080, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00100000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data53 = { + .adap_nr = 59, + .i2c_timeout = 3000, + .i2c_scale = 0x6100, + .i2c_filter = 0x6104, + .i2c_stretch = 0x6108, + .i2c_ext_9548_exits_flag = 0x610c, + .i2c_ext_9548_addr = 0x6110, + .i2c_ext_9548_chan = 0x6114, + .i2c_in_9548_chan = 0x6118, + .i2c_slave = 0x611c, + .i2c_reg = 0x6120, + .i2c_reg_len = 0x6130, + .i2c_data_len = 0x6134, + .i2c_ctrl = 0x6138, + .i2c_status = 0x613c, + .i2c_data_buf = 0x6180, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00200000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data54 = { + .adap_nr = 60, + .i2c_timeout = 3000, + .i2c_scale = 0x6200, + .i2c_filter = 0x6204, + .i2c_stretch = 0x6208, + .i2c_ext_9548_exits_flag = 0x620c, + .i2c_ext_9548_addr = 0x6210, + .i2c_ext_9548_chan = 0x6214, + .i2c_in_9548_chan = 0x6218, + .i2c_slave = 0x621c, + .i2c_reg = 0x6220, + .i2c_reg_len = 0x6230, + .i2c_data_len = 0x6234, + .i2c_ctrl = 0x6238, + .i2c_status = 0x623c, + .i2c_data_buf = 0x6280, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00400000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static fpga_i2c_bus_device_t fpga_dom_i2c_bus_device_data55 = { + .adap_nr = 61, + .i2c_timeout = 3000, + .i2c_scale = 0x6300, + .i2c_filter = 0x6304, + .i2c_stretch = 0x6308, + .i2c_ext_9548_exits_flag = 0x630c, + .i2c_ext_9548_addr = 0x6310, + .i2c_ext_9548_chan = 0x6314, + .i2c_in_9548_chan = 0x6318, + .i2c_slave = 0x631c, + .i2c_reg = 0x6320, + .i2c_reg_len = 0x6330, + .i2c_data_len = 0x6334, + .i2c_ctrl = 0x6338, + .i2c_status = 0x633c, + .i2c_data_buf = 0x6380, + .dev_name = "/dev/fpga0", + .i2c_scale_value = 0x4e, + .i2c_filter_value = 0x7c, + .i2c_stretch_value = 0x7c, + .i2c_func_mode = 3, + .i2c_adap_reset_flag = 1, + .i2c_reset_addr = 0x7c, + .i2c_reset_on = 0x00800000, + .i2c_reset_off = 0x00000000, + .i2c_rst_delay_b = 0, + .i2c_rst_delay = 1, + .i2c_rst_delay_a = 1, +}; + +static void wb_fpga_i2c_bus_device_release(struct device *dev) +{ + return; +} + +static struct platform_device fpga_i2c_bus_device[] = { + { + .name = "wb-fpga-i2c", + .id = 1, + .dev = { + .platform_data = &fpga_i2c_bus_device_data0, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 2, + .dev = { + .platform_data = &fpga_i2c_bus_device_data1, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 3, + .dev = { + .platform_data = &fpga_i2c_bus_device_data2, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 4, + .dev = { + .platform_data = &fpga_i2c_bus_device_data3, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 5, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data0, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 6, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data1, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 7, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data2, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 8, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data3, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 9, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data4, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 10, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data5, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 11, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data6, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 12, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data7, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 13, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data8, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 14, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data9, + .release = wb_fpga_i2c_bus_device_release, + } + }, + { + .name = "wb-fpga-i2c", + .id = 15, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data10, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 16, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data11, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 17, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data12, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 18, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data13, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 19, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data14, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 20, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data15, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 21, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data16, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 22, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data17, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 23, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data18, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 24, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data19, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 25, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data20, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 26, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data21, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 27, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data22, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 28, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data23, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 29, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data24, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 30, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data25, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 31, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data26, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 32, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data27, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 33, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data28, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 34, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data29, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 35, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data30, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 36, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data31, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 37, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data32, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 38, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data33, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 39, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data34, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 40, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data35, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 41, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data36, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 42, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data37, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 43, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data38, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 44, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data39, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 45, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data40, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 46, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data41, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 47, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data42, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 48, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data43, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 49, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data44, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 50, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data45, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 51, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data46, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 52, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data47, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 53, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data48, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 54, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data49, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 55, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data50, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 56, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data51, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 57, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data52, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 58, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data53, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 59, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data54, + .release = wb_fpga_i2c_bus_device_release, + }, + }, + { + .name = "wb-fpga-i2c", + .id = 60, + .dev = { + .platform_data = &fpga_dom_i2c_bus_device_data55, + .release = wb_fpga_i2c_bus_device_release, + }, + }, +}; + +static int __init wb_fpga_i2c_bus_device_init(void) +{ + int i; + int ret = 0; + fpga_i2c_bus_device_t *fpga_i2c_bus_device_data; + + WB_FPGA_I2C_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(fpga_i2c_bus_device); i++) { + fpga_i2c_bus_device_data = fpga_i2c_bus_device[i].dev.platform_data; + ret = platform_device_register(&fpga_i2c_bus_device[i]); + if (ret < 0) { + fpga_i2c_bus_device_data->device_flag = -1; /* device register failed, set flag -1 */ + printk(KERN_ERR "wb-fpga-i2c.%d register failed!\n", i + 1); + } else { + fpga_i2c_bus_device_data->device_flag = 0; /* device register suucess, set flag 0 */ + } + } + return 0; +} + +static void __exit wb_fpga_i2c_bus_device_exit(void) +{ + int i; + fpga_i2c_bus_device_t *fpga_i2c_bus_device_data; + + WB_FPGA_I2C_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(fpga_i2c_bus_device) - 1; i >= 0; i--) { + fpga_i2c_bus_device_data = fpga_i2c_bus_device[i].dev.platform_data; + if (fpga_i2c_bus_device_data->device_flag == 0) { /* device register success, need unregister */ + platform_device_unregister(&fpga_i2c_bus_device[i]); + } + } +} + +module_init(wb_fpga_i2c_bus_device_init); +module_exit(wb_fpga_i2c_bus_device_exit); +MODULE_DESCRIPTION("FPGA I2C Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_pca954x_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_pca954x_device.c new file mode 100644 index 000000000000..ed0894c0953e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_fpga_pca954x_device.c @@ -0,0 +1,137 @@ +/* + * An wb_fpga_pca954x_device driver for fpga pca954x device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +static int g_wb_fpga_pca954x_device_debug = 0; +static int g_wb_fpga_pca954x_device_error = 0; + +module_param(g_wb_fpga_pca954x_device_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_fpga_pca954x_device_error, int, S_IRUGO | S_IWUSR); + +#define WB_FPGA_PCA954X_DEVICE_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_fpga_pca954x_device_debug) { \ + printk(KERN_INFO "[WB_FPGA_PCA954X_DEVICE][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_FPGA_PCA954X_DEVICE_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_fpga_pca954x_device_error) { \ + printk(KERN_ERR "[WB_FPGA_PCA954X_DEVICE][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static fpga_pca954x_device_t fpga_pca954x_device_data0 = { + .i2c_bus = 3, + .i2c_addr = 0x77, + .pca9548_base_nr = 62, + .fpga_9548_flag = 2, + .fpga_9548_reset_flag = 1, +}; + +static fpga_pca954x_device_t fpga_pca954x_device_data1 = { + .i2c_bus = 4, + .i2c_addr = 0x71, + .pca9548_base_nr = 70, + .fpga_9548_flag = 2, + .fpga_9548_reset_flag = 1, +}; + +static fpga_pca954x_device_t fpga_pca954x_device_data2 = { + .i2c_bus = 5, + .i2c_addr = 0x77, + .pca9548_base_nr = 78, + .fpga_9548_flag = 2, + .fpga_9548_reset_flag = 1, +}; + +struct i2c_board_info fpga_pca954x_device_info[] = { + { + .type = "wb_fpga_pca9548", + .platform_data = &fpga_pca954x_device_data0, + }, + { + .type = "wb_fpga_pca9548", + .platform_data = &fpga_pca954x_device_data1, + }, + { + .type = "wb_fpga_pca9548", + .platform_data = &fpga_pca954x_device_data2, + }, +}; + +static int __init wb_fpga_pca954x_device_init(void) +{ + int i; + struct i2c_adapter *adap; + struct i2c_client *client; + fpga_pca954x_device_t *fpga_pca954x_device_data; + + WB_FPGA_PCA954X_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(fpga_pca954x_device_info); i++) { + fpga_pca954x_device_data = fpga_pca954x_device_info[i].platform_data; + fpga_pca954x_device_info[i].addr = fpga_pca954x_device_data->i2c_addr; + adap = i2c_get_adapter(fpga_pca954x_device_data->i2c_bus); + if (adap == NULL) { + fpga_pca954x_device_data->client = NULL; + printk(KERN_ERR "get i2c bus %d adapter fail.\n", fpga_pca954x_device_data->i2c_bus); + continue; + } + client = i2c_new_client_device(adap, &fpga_pca954x_device_info[i]); + if (!client) { + fpga_pca954x_device_data->client = NULL; + printk(KERN_ERR "Failed to register fpga pca954x device %d at bus %d!\n", + fpga_pca954x_device_data->i2c_addr, fpga_pca954x_device_data->i2c_bus); + } else { + fpga_pca954x_device_data->client = client; + } + i2c_put_adapter(adap); + } + return 0; +} + +static void __exit wb_fpga_pca954x_device_exit(void) +{ + int i; + fpga_pca954x_device_t *fpga_pca954x_device_data; + + WB_FPGA_PCA954X_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(fpga_pca954x_device_info) - 1; i >= 0; i--) { + fpga_pca954x_device_data = fpga_pca954x_device_info[i].platform_data; + if (fpga_pca954x_device_data->client) { + i2c_unregister_device(fpga_pca954x_device_data->client); + fpga_pca954x_device_data->client = NULL; + } + } +} + +module_init(wb_fpga_pca954x_device_init); +module_exit(wb_fpga_pca954x_device_exit); +MODULE_DESCRIPTION("FPGA PCA954X Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_i2c_dev_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_i2c_dev_device.c new file mode 100644 index 000000000000..bfeace96e17d --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_i2c_dev_device.c @@ -0,0 +1,160 @@ +/* + * An wb_i2c_dev_device driver for i2c dev device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +static int g_wb_i2c_dev_device_debug = 0; +static int g_wb_i2c_dev_device_error = 0; + +module_param(g_wb_i2c_dev_device_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_i2c_dev_device_error, int, S_IRUGO | S_IWUSR); + +#define WB_I2C_DEV_DEVICE_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_i2c_dev_device_debug) { \ + printk(KERN_INFO "[WB_I2C_DEV_DEVICE][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_I2C_DEV_DEVICE_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_i2c_dev_device_error) { \ + printk(KERN_ERR "[WB_I2C_DEV_DEVICE][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static i2c_dev_device_t i2c_dev_device_data0 = { + .i2c_bus = 2, + .i2c_addr = 0x1d, + .i2c_name = "cpld4", + .data_bus_width = 1, + .addr_bus_width = 1, + .per_rd_len = 256, + .per_wr_len = 256, + .i2c_len = 256, +}; + +static i2c_dev_device_t i2c_dev_device_data1 = { + .i2c_bus = 2, + .i2c_addr = 0x2d, + .i2c_name = "cpld5", + .data_bus_width = 1, + .addr_bus_width = 1, + .per_rd_len = 256, + .per_wr_len = 256, + .i2c_len = 256, +}; + +static i2c_dev_device_t i2c_dev_device_data2 = { + .i2c_bus = 2, + .i2c_addr = 0x3d, + .i2c_name = "cpld7", + .data_bus_width = 1, + .addr_bus_width = 1, + .per_rd_len = 256, + .per_wr_len = 256, + .i2c_len = 0x2000, +}; + +static i2c_dev_device_t i2c_dev_device_data3 = { + .i2c_bus = 4, + .i2c_addr = 0x3d, + .i2c_name = "cpld6", + .data_bus_width = 1, + .addr_bus_width = 1, + .per_rd_len = 256, + .per_wr_len = 256, + .i2c_len = 256, +}; + +struct i2c_board_info i2c_dev_device_info[] = { + { + .type = "wb-i2c-dev", + .platform_data = &i2c_dev_device_data0, + }, + { + .type = "wb-i2c-dev", + .platform_data = &i2c_dev_device_data1, + }, + { + .type = "wb-i2c-dev", + .platform_data = &i2c_dev_device_data2, + }, + { + .type = "wb-i2c-dev", + .platform_data = &i2c_dev_device_data3, + }, +}; + +static int __init wb_i2c_dev_device_init(void) +{ + int i; + struct i2c_adapter *adap; + struct i2c_client *client; + i2c_dev_device_t *i2c_dev_device_data; + + WB_I2C_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(i2c_dev_device_info); i++) { + i2c_dev_device_data = i2c_dev_device_info[i].platform_data; + i2c_dev_device_info[i].addr = i2c_dev_device_data->i2c_addr; + adap = i2c_get_adapter(i2c_dev_device_data->i2c_bus); + if (adap == NULL) { + i2c_dev_device_data->client = NULL; + printk(KERN_ERR "get i2c bus %d adapter fail.\n", i2c_dev_device_data->i2c_bus); + continue; + } + client = i2c_new_client_device(adap, &i2c_dev_device_info[i]); + if (!client) { + i2c_dev_device_data->client = NULL; + printk(KERN_ERR "Failed to register i2c dev device %d at bus %d!\n", + i2c_dev_device_data->i2c_addr, i2c_dev_device_data->i2c_bus); + } else { + i2c_dev_device_data->client = client; + } + i2c_put_adapter(adap); + } + return 0; +} + +static void __exit wb_i2c_dev_device_exit(void) +{ + int i; + i2c_dev_device_t *i2c_dev_device_data; + + WB_I2C_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(i2c_dev_device_info) - 1; i >= 0; i--) { + i2c_dev_device_data = i2c_dev_device_info[i].platform_data; + if (i2c_dev_device_data->client) { + i2c_unregister_device(i2c_dev_device_data->client); + i2c_dev_device_data->client = NULL; + } + } +} + +module_init(wb_i2c_dev_device_init); +module_exit(wb_i2c_dev_device_exit); +MODULE_DESCRIPTION("I2C DEV Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_io_dev_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_io_dev_device.c new file mode 100644 index 000000000000..06d6b048284a --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_io_dev_device.c @@ -0,0 +1,158 @@ +/* + * An wb_io_dev_device driver for io device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include + +#include + +static int g_wb_io_dev_device_debug = 0; +static int g_wb_io_dev_device_error = 0; + +module_param(g_wb_io_dev_device_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_io_dev_device_error, int, S_IRUGO | S_IWUSR); + +#define WB_IO_DEV_DEVICE_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_io_dev_device_debug) { \ + printk(KERN_INFO "[WB_IO_DEV_DEVICE][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_IO_DEV_DEVICE_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_io_dev_device_error) { \ + printk(KERN_ERR "[WB_IO_DEV_DEVICE][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static io_dev_device_t io_dev_device_data0 = { + .io_dev_name = "cpld0", + .io_base = 0x700, + .io_len = 0x100, + .indirect_addr = 0, +}; + +static io_dev_device_t io_dev_device_data1 = { + .io_dev_name = "cpld1", + .io_base = 0x900, + .io_len = 0x100, + .indirect_addr = 0, +}; + +static io_dev_device_t io_dev_device_data2 = { + .io_dev_name = "cpld2", + .io_base = 0xb00, + .io_len = 0x100, + .indirect_addr = 0, +}; + +static io_dev_device_t io_dev_device_data3 = { + .io_dev_name = "cpld3", + .io_base = 0x900, + .io_len = 0x2000, + .indirect_addr = 1, + .wr_data = 0xfb, + .addr_low = 0xfc, + .addr_high = 0xfd, + .rd_data = 0xfe, + .opt_ctl = 0xff, +}; + +static void wb_io_dev_device_release(struct device *dev) +{ + return; +} + +static struct platform_device io_dev_device[] = { + { + .name = "wb-io-dev", + .id = 1, + .dev = { + .platform_data = &io_dev_device_data0, + .release = wb_io_dev_device_release, + }, + }, + { + .name = "wb-io-dev", + .id = 2, + .dev = { + .platform_data = &io_dev_device_data1, + .release = wb_io_dev_device_release, + }, + }, + { + .name = "wb-io-dev", + .id = 3, + .dev = { + .platform_data = &io_dev_device_data2, + .release = wb_io_dev_device_release, + }, + }, + { + .name = "wb-io-dev", + .id = 4, + .dev = { + .platform_data = &io_dev_device_data3, + .release = wb_io_dev_device_release, + }, + }, +}; + +static int __init wb_io_dev_device_init(void) +{ + int i; + int ret = 0; + io_dev_device_t *io_dev_device_data; + + WB_IO_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(io_dev_device); i++) { + io_dev_device_data = io_dev_device[i].dev.platform_data; + ret = platform_device_register(&io_dev_device[i]); + if (ret < 0) { + io_dev_device_data->device_flag = -1; /* device register failed, set flag -1 */ + printk(KERN_ERR "wb-io-dev.%d register failed!\n", i + 1); + } else { + io_dev_device_data->device_flag = 0; /* device register suucess, set flag 0 */ + } + } + return 0; +} + +static void __exit wb_io_dev_device_exit(void) +{ + int i; + io_dev_device_t *io_dev_device_data; + + WB_IO_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(io_dev_device) - 1; i >= 0; i--) { + io_dev_device_data = io_dev_device[i].dev.platform_data; + if (io_dev_device_data->device_flag == 0) { /* device register success, need unregister */ + platform_device_unregister(&io_dev_device[i]); + } + } +} + +module_init(wb_io_dev_device_init); +module_exit(wb_io_dev_device_exit); +MODULE_DESCRIPTION("IO DEV Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_lpc_drv_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_lpc_drv_device.c new file mode 100644 index 000000000000..27dbd87d71b2 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_lpc_drv_device.c @@ -0,0 +1,150 @@ +/* + * An wb_lpc_drv_device driver for lpc device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include + +#include + +static int g_wb_lpc_drv_device_debug = 0; +static int g_wb_lpc_drv_device_error = 0; + +module_param(g_wb_lpc_drv_device_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_lpc_drv_device_error, int, S_IRUGO | S_IWUSR); + +#define WB_LPC_DRV_DEVICE_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_lpc_drv_device_debug) { \ + printk(KERN_INFO "[WB_LPC_DRV_DEVICE][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_LPC_DRV_DEVICE_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_lpc_drv_device_error) { \ + printk(KERN_ERR "[WB_LPC_DRV_DEVICE][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static lpc_drv_device_t lpc_drv_device_data_0 = { + .lpc_io_name = "wb_lpc", + .pci_domain = 0x0000, + .pci_bus = 0x00, + .pci_slot = 0x1f, + .pci_fn = 0, + .lpc_io_base = 0x700, + .lpc_io_size = 0x100, + .lpc_gen_dec = 0x84, +}; + +static lpc_drv_device_t lpc_drv_device_data_1 = { + .lpc_io_name = "wb_lpc", + .pci_domain = 0x0000, + .pci_bus = 0x00, + .pci_slot = 0x1f, + .pci_fn = 0, + .lpc_io_base = 0x900, + .lpc_io_size = 0x100, + .lpc_gen_dec = 0x88, +}; + +static lpc_drv_device_t lpc_drv_device_data_2 = { + .lpc_io_name = "wb_lpc", + .pci_domain = 0x0000, + .pci_bus = 0x00, + .pci_slot = 0x1f, + .pci_fn = 0, + .lpc_io_base = 0xb00, + .lpc_io_size = 0x100, + .lpc_gen_dec = 0x90, +}; + +static void wb_lpc_drv_device_release(struct device *dev) +{ + return; +} + +static struct platform_device lpc_drv_device[] = { + { + .name = "wb-lpc", + .id = 1, + .dev = { + .platform_data = &lpc_drv_device_data_0, + .release = wb_lpc_drv_device_release, + }, + }, + { + .name = "wb-lpc", + .id = 2, + .dev = { + .platform_data = &lpc_drv_device_data_1, + .release = wb_lpc_drv_device_release, + }, + }, + { + .name = "wb-lpc", + .id = 3, + .dev = { + .platform_data = &lpc_drv_device_data_2, + .release = wb_lpc_drv_device_release, + }, + }, +}; + +static int __init wb_lpc_drv_device_init(void) +{ + int i; + int ret = 0; + lpc_drv_device_t *lpc_drv_device_data; + + WB_LPC_DRV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(lpc_drv_device); i++) { + lpc_drv_device_data = lpc_drv_device[i].dev.platform_data; + ret = platform_device_register(&lpc_drv_device[i]); + if (ret < 0) { + lpc_drv_device_data->device_flag = -1; /* device register failed, set flag -1 */ + printk(KERN_ERR "wb-lpc.%d register failed!\n", i + 1); + } else { + lpc_drv_device_data->device_flag = 0; /* device register suucess, set flag 0 */ + } + } + return 0; +} + +static void __exit wb_lpc_drv_device_exit(void) +{ + int i; + lpc_drv_device_t *lpc_drv_device_data; + + WB_LPC_DRV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(lpc_drv_device) - 1; i >= 0; i--) { + lpc_drv_device_data = lpc_drv_device[i].dev.platform_data; + if (lpc_drv_device_data->device_flag == 0) { /* device register success, need unregister */ + platform_device_unregister(&lpc_drv_device[i]); + } + } +} + +module_init(wb_lpc_drv_device_init); +module_exit(wb_lpc_drv_device_exit); +MODULE_DESCRIPTION("LPC DRV Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_pcie_dev_device.c b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_pcie_dev_device.c new file mode 100644 index 000000000000..561e64d449b4 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/modules/driver/wb_pcie_dev_device.c @@ -0,0 +1,113 @@ +/* + * An wb_pcie_dev_device driver for pcie device function + * + * Copyright (C) 2024 Micas Networks Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include + +#include + +static int g_wb_pcie_dev_device_debug = 0; +static int g_wb_pcie_dev_device_error = 0; + +module_param(g_wb_pcie_dev_device_debug, int, S_IRUGO | S_IWUSR); +module_param(g_wb_pcie_dev_device_error, int, S_IRUGO | S_IWUSR); + +#define WB_PCIE_DEV_DEVICE_DEBUG_VERBOSE(fmt, args...) do { \ + if (g_wb_pcie_dev_device_debug) { \ + printk(KERN_INFO "[WB_PCIE_DEV_DEVICE][VER][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +#define WB_PCIE_DEV_DEVICE_DEBUG_ERROR(fmt, args...) do { \ + if (g_wb_pcie_dev_device_error) { \ + printk(KERN_ERR "[WB_PCIE_DEV_DEVICE][ERR][func:%s line:%d]\r\n"fmt, __func__, __LINE__, ## args); \ + } \ +} while (0) + +static pci_dev_device_t pcie_dev_device_data0 = { + .pci_dev_name = "fpga0", + .pci_domain = 0x0000, + .pci_bus = 0x08, + .pci_slot = 0x00, + .pci_fn = 0, + .pci_bar = 0, + .bus_width = 4, + .upg_ctrl_base = 0xa00, + .upg_flash_base = 0x2f0000, +}; + +static void wb_pcie_dev_device_release(struct device *dev) +{ + return; +} + +static struct platform_device pcie_dev_device[] = { + { + .name = "wb-pci-dev", + .id = 1, + .dev = { + .platform_data = &pcie_dev_device_data0, + .release = wb_pcie_dev_device_release, + }, + }, +}; + +static int __init wb_pcie_dev_device_init(void) +{ + int i; + int ret = 0; + pci_dev_device_t *pcie_dev_device_data; + + WB_PCIE_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = 0; i < ARRAY_SIZE(pcie_dev_device); i++) { + pcie_dev_device_data = pcie_dev_device[i].dev.platform_data; + ret = platform_device_register(&pcie_dev_device[i]); + if (ret < 0) { + pcie_dev_device_data->device_flag = -1; /* device register failed, set flag -1 */ + printk(KERN_ERR "wb-pci-dev.%d register failed!\n", i + 1); + } else { + pcie_dev_device_data->device_flag = 0; /* device register suucess, set flag 0 */ + } + } + return 0; +} + +static void __exit wb_pcie_dev_device_exit(void) +{ + int i; + pci_dev_device_t *pcie_dev_device_data; + + WB_PCIE_DEV_DEVICE_DEBUG_VERBOSE("enter!\n"); + for (i = ARRAY_SIZE(pcie_dev_device) - 1; i >= 0; i--) { + pcie_dev_device_data = pcie_dev_device[i].dev.platform_data; + if (pcie_dev_device_data->device_flag == 0) { /* device register success, need unregister */ + platform_device_unregister(&pcie_dev_device[i]); + } + } +} + +module_init(wb_pcie_dev_device_init); +module_exit(wb_pcie_dev_device_exit); +MODULE_DESCRIPTION("PCIE DEV Devices"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("support"); diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_CPLD.cfg b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_CPLD.cfg new file mode 100644 index 000000000000..92474bf244cc --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_CPLD.cfg @@ -0,0 +1,39 @@ +# configuration item: I2C address of CPLD +# format: cpld_i2c_dev.bus_[cpld_slot]_[cpld_id] cpld_i2c_dev.addr_[cpld_slot]_[cpld_id] +# cpld_slot: Main card: 0, linear card: start from 1 +# cpld_id: start from 0 +# bus: I2C bus number of CPLD +# addr: I2C address of CPLD +cpld_i2c_dev.bus_0_2=2 +cpld_i2c_dev.addr_0_2=0x1d +cpld_i2c_dev.bus_0_3=2 +cpld_i2c_dev.addr_0_3=0x2d +cpld_i2c_dev.bus_0_4=4 +cpld_i2c_dev.addr_0_4=0x3d +cpld_i2c_dev.bus_0_5=2 +cpld_i2c_dev.addr_0_5=0x3d + +# configuration item: LPC address of CPLD +# format: cpld_lpc_addr_[cpld_slot]_[cpld_id] +# cpld_slot: Main card: 0, linear card: start from 1 +# cpld_id: start from 0 +cpld_lpc_dev_0_0=0x700 +cpld_lpc_dev_0_1=0x900 + + +# configuration item: CPLD access method, lpc or i2c +# format: mode_cpld_[cpld_slot][cpld_slot]=lpc/i2c +# cpld_slot: Main card: 0, linear card: start from 1 +# cpld_id: start from 0 +mode_cpld_0_0=lpc +mode_cpld_0_1=lpc +mode_cpld_0_2=i2c +mode_cpld_0_3=i2c +mode_cpld_0_4=i2c + + +# configuration item: the number of CPLD +# format: dev_num_[main_dev]_[minor_dev] +# main_dev: CPLD main_dev is 4 +# minor_dev: CPLD minor_dev not exist +dev_num_4_0=6 diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_FAN.cfg b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_FAN.cfg new file mode 100644 index 000000000000..bcbfa1d77bbb --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_FAN.cfg @@ -0,0 +1,437 @@ +# configuration item: the number of fans +# format: dev_num_[main_dev]_[minor_dev] +# main_dev: fan main_dev is 1 +# minor_dev: fan minor_dev not exist(0) +dev_num_1_0=6 + + +# configuration item: the number of rotors +# format: dev_num_[main_dev]_[minor_dev] +# main_dev: rotor main_dev is 1 +# minor_dev: rotor minor_dev is 5 +dev_num_1_5=2 + + +# configuration item: fan presence status +# format: dev_present_status_[main_dev_id][fan_index] +# main_dev_id: fan main_dev_id is 1 +# fan_index: start from 1 +dev_present_status.mode_1_1=config +dev_present_status.src_1_1=cpld +dev_present_status.frmt_1_1=bit +dev_present_status.pola_1_1=negative +dev_present_status.addr_1_1=0x00040037 +dev_present_status.len_1_1=1 +dev_present_status.bit_offset_1_1=5 + +dev_present_status.mode_1_2=config +dev_present_status.src_1_2=cpld +dev_present_status.frmt_1_2=bit +dev_present_status.pola_1_2=negative +dev_present_status.addr_1_2=0x00040037 +dev_present_status.len_1_2=1 +dev_present_status.bit_offset_1_2=4 + +dev_present_status.mode_1_3=config +dev_present_status.src_1_3=cpld +dev_present_status.frmt_1_3=bit +dev_present_status.pola_1_3=negative +dev_present_status.addr_1_3=0x00040037 +dev_present_status.len_1_3=1 +dev_present_status.bit_offset_1_3=3 + +dev_present_status.mode_1_4=config +dev_present_status.src_1_4=cpld +dev_present_status.frmt_1_4=bit +dev_present_status.pola_1_4=negative +dev_present_status.addr_1_4=0x00040037 +dev_present_status.len_1_4=1 +dev_present_status.bit_offset_1_4=2 + +dev_present_status.mode_1_5=config +dev_present_status.src_1_5=cpld +dev_present_status.frmt_1_5=bit +dev_present_status.pola_1_5=negative +dev_present_status.addr_1_5=0x00040037 +dev_present_status.len_1_5=1 +dev_present_status.bit_offset_1_5=1 + +dev_present_status.mode_1_6=config +dev_present_status.src_1_6=cpld +dev_present_status.frmt_1_6=bit +dev_present_status.pola_1_6=negative +dev_present_status.addr_1_6=0x00040037 +dev_present_status.len_1_6=1 +dev_present_status.bit_offset_1_6=0 + +# configuration item: fan rotor status +# format: fan_roll_status_[fan_id]_[motor_id] +# fan_id: start from 1 +# motor_id: start from 0 +fan_roll_status.mode_1_0=config +fan_roll_status.int_cons_1_0= +fan_roll_status.src_1_0=cpld +fan_roll_status.frmt_1_0=bit +fan_roll_status.pola_1_0=positive +fan_roll_status.fpath_1_0= +fan_roll_status.addr_1_0=0x00040038 +fan_roll_status.len_1_0=1 +fan_roll_status.bit_offset_1_0=5 + +fan_roll_status.mode_1_1=config +fan_roll_status.int_cons_1_1= +fan_roll_status.src_1_1=cpld +fan_roll_status.frmt_1_1=bit +fan_roll_status.pola_1_1=positive +fan_roll_status.fpath_1_1= +fan_roll_status.addr_1_1=0x00040039 +fan_roll_status.len_1_1=1 +fan_roll_status.bit_offset_1_1=5 + +fan_roll_status.mode_2_0=config +fan_roll_status.int_cons_2_0= +fan_roll_status.src_2_0=cpld +fan_roll_status.frmt_2_0=bit +fan_roll_status.pola_2_0=positive +fan_roll_status.fpath_2_0= +fan_roll_status.addr_2_0=0x00040038 +fan_roll_status.len_2_0=1 +fan_roll_status.bit_offset_2_0=4 + +fan_roll_status.mode_2_1=config +fan_roll_status.int_cons_2_1= +fan_roll_status.src_2_1=cpld +fan_roll_status.frmt_2_1=bit +fan_roll_status.pola_2_1=positive +fan_roll_status.fpath_2_1= +fan_roll_status.addr_2_1=0x00040039 +fan_roll_status.len_2_1=1 +fan_roll_status.bit_offset_2_1=4 + +fan_roll_status.mode_3_0=config +fan_roll_status.int_cons_3_0= +fan_roll_status.src_3_0=cpld +fan_roll_status.frmt_3_0=bit +fan_roll_status.pola_3_0=positive +fan_roll_status.fpath_3_0= +fan_roll_status.addr_3_0=0x00040038 +fan_roll_status.len_3_0=1 +fan_roll_status.bit_offset_3_0=3 + +fan_roll_status.mode_3_1=config +fan_roll_status.int_cons_3_1= +fan_roll_status.src_3_1=cpld +fan_roll_status.frmt_3_1=bit +fan_roll_status.pola_3_1=positive +fan_roll_status.fpath_3_1= +fan_roll_status.addr_3_1=0x00040039 +fan_roll_status.len_3_1=1 +fan_roll_status.bit_offset_3_1=3 + +fan_roll_status.mode_4_0=config +fan_roll_status.int_cons_4_0= +fan_roll_status.src_4_0=cpld +fan_roll_status.frmt_4_0=bit +fan_roll_status.pola_4_0=positive +fan_roll_status.fpath_4_0= +fan_roll_status.addr_4_0=0x00040038 +fan_roll_status.len_4_0=1 +fan_roll_status.bit_offset_4_0=2 + +fan_roll_status.mode_4_1=config +fan_roll_status.int_cons_4_1= +fan_roll_status.src_4_1=cpld +fan_roll_status.frmt_4_1=bit +fan_roll_status.pola_4_1=positive +fan_roll_status.fpath_4_1= +fan_roll_status.addr_4_1=0x00040039 +fan_roll_status.len_4_1=1 +fan_roll_status.bit_offset_4_1=2 + +fan_roll_status.mode_5_0=config +fan_roll_status.int_cons_5_0= +fan_roll_status.src_5_0=cpld +fan_roll_status.frmt_5_0=bit +fan_roll_status.pola_5_0=positive +fan_roll_status.fpath_5_0= +fan_roll_status.addr_5_0=0x00040038 +fan_roll_status.len_5_0=1 +fan_roll_status.bit_offset_5_0=1 + +fan_roll_status.mode_5_1=config +fan_roll_status.int_cons_5_1= +fan_roll_status.src_5_1=cpld +fan_roll_status.frmt_5_1=bit +fan_roll_status.pola_5_1=positive +fan_roll_status.fpath_5_1= +fan_roll_status.addr_5_1=0x00040039 +fan_roll_status.len_5_1=1 +fan_roll_status.bit_offset_5_1=1 + +fan_roll_status.mode_6_0=config +fan_roll_status.int_cons_6_0= +fan_roll_status.src_6_0=cpld +fan_roll_status.frmt_6_0=bit +fan_roll_status.pola_6_0=positive +fan_roll_status.fpath_6_0= +fan_roll_status.addr_6_0=0x00040038 +fan_roll_status.len_6_0=1 +fan_roll_status.bit_offset_6_0=0 + +fan_roll_status.mode_6_1=config +fan_roll_status.int_cons_6_1= +fan_roll_status.src_6_1=cpld +fan_roll_status.frmt_6_1=bit +fan_roll_status.pola_6_1=positive +fan_roll_status.fpath_6_1= +fan_roll_status.addr_6_1=0x00040039 +fan_roll_status.len_6_1=1 +fan_roll_status.bit_offset_6_1=0 + +# configuration item: fan speed +# format: fan_speed_[fan_id]_[motor_id] +# fan_id: start from 1 +# motor_id: start from 0 +fan_speed.mode_1_0=config +fan_speed.int_cons_1_0= +fan_speed.src_1_0=cpld +fan_speed.frmt_1_0=num_bytes +fan_speed.pola_1_0=negative +fan_speed.fpath_1_0= +fan_speed.addr_1_0=0x00040070 +fan_speed.len_1_0=2 +fan_speed.bit_offset_1_0= + +fan_speed.mode_1_1=config +fan_speed.int_cons_1_1= +fan_speed.src_1_1=cpld +fan_speed.frmt_1_1=num_bytes +fan_speed.pola_1_1=negative +fan_speed.fpath_1_1= +fan_speed.addr_1_1=0x0004007c +fan_speed.len_1_1=2 +fan_speed.bit_offset_1_1= + +fan_speed.mode_2_0=config +fan_speed.int_cons_2_0= +fan_speed.src_2_0=cpld +fan_speed.frmt_2_0=num_bytes +fan_speed.pola_2_0=negative +fan_speed.fpath_2_0= +fan_speed.addr_2_0=0x0004006e +fan_speed.len_2_0=2 +fan_speed.bit_offset_2_0= + +fan_speed.mode_2_1=config +fan_speed.int_cons_2_1= +fan_speed.src_2_1=cpld +fan_speed.frmt_2_1=num_bytes +fan_speed.pola_2_1=negative +fan_speed.fpath_2_1= +fan_speed.addr_2_1=0x0004007a +fan_speed.len_2_1=2 +fan_speed.bit_offset_2_1= + +fan_speed.mode_3_0=config +fan_speed.int_cons_3_0= +fan_speed.src_3_0=cpld +fan_speed.frmt_3_0=num_bytes +fan_speed.pola_3_0=negative +fan_speed.fpath_3_0= +fan_speed.addr_3_0=0x0004006c +fan_speed.len_3_0=2 +fan_speed.bit_offset_3_0= + +fan_speed.mode_3_1=config +fan_speed.int_cons_3_1= +fan_speed.src_3_1=cpld +fan_speed.frmt_3_1=num_bytes +fan_speed.pola_3_1=negative +fan_speed.fpath_3_1= +fan_speed.addr_3_1=0x00040078 +fan_speed.len_3_1=2 +fan_speed.bit_offset_3_1= + +fan_speed.mode_4_0=config +fan_speed.int_cons_4_0= +fan_speed.src_4_0=cpld +fan_speed.frmt_4_0=num_bytes +fan_speed.pola_4_0=negative +fan_speed.fpath_4_0= +fan_speed.addr_4_0=0x0004006a +fan_speed.len_4_0=2 +fan_speed.bit_offset_4_0= + +fan_speed.mode_4_1=config +fan_speed.int_cons_4_1= +fan_speed.src_4_1=cpld +fan_speed.frmt_4_1=num_bytes +fan_speed.pola_4_1=negative +fan_speed.fpath_4_1= +fan_speed.addr_4_1=0x00040076 +fan_speed.len_4_1=2 +fan_speed.bit_offset_4_1= + +fan_speed.mode_5_0=config +fan_speed.int_cons_5_0= +fan_speed.src_5_0=cpld +fan_speed.frmt_5_0=num_bytes +fan_speed.pola_5_0=negative +fan_speed.fpath_5_0= +fan_speed.addr_5_0=0x00040068 +fan_speed.len_5_0=2 +fan_speed.bit_offset_5_0= + +fan_speed.mode_5_1=config +fan_speed.int_cons_5_1= +fan_speed.src_5_1=cpld +fan_speed.frmt_5_1=num_bytes +fan_speed.pola_5_1=negative +fan_speed.fpath_5_1= +fan_speed.addr_5_1=0x00040074 +fan_speed.len_5_1=2 +fan_speed.bit_offset_5_1= + +fan_speed.mode_6_0=config +fan_speed.int_cons_6_0= +fan_speed.src_6_0=cpld +fan_speed.frmt_6_0=num_bytes +fan_speed.pola_6_0=negative +fan_speed.fpath_6_0= +fan_speed.addr_6_0=0x00040066 +fan_speed.len_6_0=2 +fan_speed.bit_offset_6_0= + +fan_speed.mode_6_1=config +fan_speed.int_cons_6_1= +fan_speed.src_6_1=cpld +fan_speed.frmt_6_1=num_bytes +fan_speed.pola_6_1=negative +fan_speed.fpath_6_1= +fan_speed.addr_6_1=0x00040072 +fan_speed.len_6_1=2 +fan_speed.bit_offset_6_1= + +# configuration item: fan pwm +# format: fan_ratio_[fan_id]_[motor_id] +# fan_id: start from 1 +# motor_id: start from 0 +fan_ratio.mode_1_0=config +fan_ratio.int_cons_1_0= +fan_ratio.src_1_0=cpld +fan_ratio.frmt_1_0=byte +fan_ratio.pola_1_0= +fan_ratio.fpath_1_0= +fan_ratio.addr_1_0=0x00040065 +fan_ratio.len_1_0=1 +fan_ratio.bit_offset_1_0= + +fan_ratio.mode_1_1=config +fan_ratio.int_cons_1_1= +fan_ratio.src_1_1=cpld +fan_ratio.frmt_1_1=byte +fan_ratio.pola_1_1= +fan_ratio.fpath_1_1= +fan_ratio.addr_1_1=0x00040065 +fan_ratio.len_1_1=1 +fan_ratio.bit_offset_1_1= + +fan_ratio.mode_2_0=config +fan_ratio.int_cons_2_0= +fan_ratio.src_2_0=cpld +fan_ratio.frmt_2_0=byte +fan_ratio.pola_2_0= +fan_ratio.fpath_2_0= +fan_ratio.addr_2_0=0x00040064 +fan_ratio.len_2_0=1 +fan_ratio.bit_offset_2_0= + +fan_ratio.mode_2_1=config +fan_ratio.int_cons_2_1= +fan_ratio.src_2_1=cpld +fan_ratio.frmt_2_1=byte +fan_ratio.pola_2_1= +fan_ratio.fpath_2_1= +fan_ratio.addr_2_1=0x00040064 +fan_ratio.len_2_1=1 +fan_ratio.bit_offset_2_1= + +fan_ratio.mode_3_0=config +fan_ratio.int_cons_3_0= +fan_ratio.src_3_0=cpld +fan_ratio.frmt_3_0=byte +fan_ratio.pola_3_0= +fan_ratio.fpath_3_0= +fan_ratio.addr_3_0=0x00040063 +fan_ratio.len_3_0=1 +fan_ratio.bit_offset_3_0= + +fan_ratio.mode_3_1=config +fan_ratio.int_cons_3_1= +fan_ratio.src_3_1=cpld +fan_ratio.frmt_3_1=byte +fan_ratio.pola_3_1= +fan_ratio.fpath_3_1= +fan_ratio.addr_3_1=0x00040063 +fan_ratio.len_3_1=1 +fan_ratio.bit_offset_3_1= + +fan_ratio.mode_4_0=config +fan_ratio.int_cons_4_0= +fan_ratio.src_4_0=cpld +fan_ratio.frmt_4_0=byte +fan_ratio.pola_4_0= +fan_ratio.fpath_4_0= +fan_ratio.addr_4_0=0x00040062 +fan_ratio.len_4_0=1 +fan_ratio.bit_offset_4_0= + +fan_ratio.mode_4_1=config +fan_ratio.int_cons_4_1= +fan_ratio.src_4_1=cpld +fan_ratio.frmt_4_1=byte +fan_ratio.pola_4_1= +fan_ratio.fpath_4_1= +fan_ratio.addr_4_1=0x00040062 +fan_ratio.len_4_1=1 +fan_ratio.bit_offset_4_1= + +fan_ratio.mode_5_0=config +fan_ratio.int_cons_5_0= +fan_ratio.src_5_0=cpld +fan_ratio.frmt_5_0=byte +fan_ratio.pola_5_0= +fan_ratio.fpath_5_0= +fan_ratio.addr_5_0=0x00040061 +fan_ratio.len_5_0=1 +fan_ratio.bit_offset_5_0= + +fan_ratio.mode_5_1=config +fan_ratio.int_cons_5_1= +fan_ratio.src_5_1=cpld +fan_ratio.frmt_5_1=byte +fan_ratio.pola_5_1= +fan_ratio.fpath_5_1= +fan_ratio.addr_5_1=0x00040061 +fan_ratio.len_5_1=1 +fan_ratio.bit_offset_5_1= + +fan_ratio.mode_6_0=config +fan_ratio.int_cons_6_0= +fan_ratio.src_6_0=cpld +fan_ratio.frmt_6_0=byte +fan_ratio.pola_6_0= +fan_ratio.fpath_6_0= +fan_ratio.addr_6_0=0x00040060 +fan_ratio.len_6_0=1 +fan_ratio.bit_offset_6_0= + +fan_ratio.mode_6_1=config +fan_ratio.int_cons_6_1= +fan_ratio.src_6_1=cpld +fan_ratio.frmt_6_1=byte +fan_ratio.pola_6_1= +fan_ratio.fpath_6_1= +fan_ratio.addr_6_1=0x00040060 +fan_ratio.len_6_1=1 +fan_ratio.bit_offset_6_1= \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_PSU.cfg b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_PSU.cfg new file mode 100644 index 000000000000..26a838bfcfa5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_PSU.cfg @@ -0,0 +1,64 @@ +# configuration item: the number of psus +# format: dev_num_[main_dev]_[minor_dev] +# main_dev: psu main_dev is 2 +# minor_dev: psu minor_dev not exist(0) +dev_num_2_0=2 + + +# configuration item: psu status +# format: psu_status_[psu_index]_[status_id] +# psu_index: start from 1 +# status_id: 0: presence 1: output 2: alert +# psu1 presence status +psu_status.mode_1_0=config +psu_status.src_1_0=cpld +psu_status.frmt_1_0=bit +psu_status.pola_1_0=negative +psu_status.addr_1_0=0x00020034 +psu_status.len_1_0=1 +psu_status.bit_offset_1_0=0 + +# psu1 output status +psu_status.mode_1_1=config +psu_status.src_1_1=cpld +psu_status.frmt_1_1=bit +psu_status.pola_1_1=positive +psu_status.addr_1_1=0x00020034 +psu_status.len_1_1=1 +psu_status.bit_offset_1_1=1 + +# psu1 alert status +psu_status.mode_1_2=config +psu_status.src_1_2=cpld +psu_status.frmt_1_2=bit +psu_status.pola_1_2=negative +psu_status.addr_1_2=0x00020034 +psu_status.len_1_2=1 +psu_status.bit_offset_1_2=2 + +# psu2 presence status +psu_status.mode_2_0=config +psu_status.src_2_0=cpld +psu_status.frmt_2_0=bit +psu_status.pola_2_0=negative +psu_status.addr_2_0=0x00020034 +psu_status.len_2_0=1 +psu_status.bit_offset_2_0=4 + +# psu2 output status +psu_status.mode_2_1=config +psu_status.src_2_1=cpld +psu_status.frmt_2_1=bit +psu_status.pola_2_1=positive +psu_status.addr_2_1=0x00020034 +psu_status.len_2_1=1 +psu_status.bit_offset_2_1=5 + +# psu2 alert status +psu_status.mode_2_2=config +psu_status.src_2_2=cpld +psu_status.frmt_2_2=bit +psu_status.pola_2_2=negative +psu_status.addr_2_2=0x00020034 +psu_status.len_2_2=1 +psu_status.bit_offset_2_2=6 diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_SFF.cfg b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_SFF.cfg new file mode 100644 index 000000000000..7031e2051326 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/WB_PLAT_SFF.cfg @@ -0,0 +1,522 @@ +# configuration item: the number of sffs +# format: dev_num_[main_dev]_[minor_dev] +# main_dev: sff main_dev is 3 +# minor_dev: sff minor_dev not exist(0) +dev_num_3_0=56 + + +# configuration item: The directory name of sff sysfs +# format: sff_dir_name_[sff_index] +# sff_index: start from 1 +sff_dir_name_1 =sff1 +sff_dir_name_2 =sff2 +sff_dir_name_3 =sff3 +sff_dir_name_4 =sff4 +sff_dir_name_5 =sff5 +sff_dir_name_6 =sff6 +sff_dir_name_7 =sff7 +sff_dir_name_8 =sff8 +sff_dir_name_9 =sff9 +sff_dir_name_10 =sff10 +sff_dir_name_11 =sff11 +sff_dir_name_12 =sff12 +sff_dir_name_13 =sff13 +sff_dir_name_14 =sff14 +sff_dir_name_15 =sff15 +sff_dir_name_16 =sff16 +sff_dir_name_17 =sff17 +sff_dir_name_18 =sff18 +sff_dir_name_19 =sff19 +sff_dir_name_20 =sff20 +sff_dir_name_21 =sff21 +sff_dir_name_22 =sff22 +sff_dir_name_23 =sff23 +sff_dir_name_24 =sff24 +sff_dir_name_25 =sff25 +sff_dir_name_26 =sff26 +sff_dir_name_27 =sff27 +sff_dir_name_28 =sff28 +sff_dir_name_29 =sff29 +sff_dir_name_30 =sff30 +sff_dir_name_31 =sff31 +sff_dir_name_32 =sff32 +sff_dir_name_33 =sff33 +sff_dir_name_34 =sff34 +sff_dir_name_35 =sff35 +sff_dir_name_36 =sff36 +sff_dir_name_37 =sff37 +sff_dir_name_38 =sff38 +sff_dir_name_39 =sff39 +sff_dir_name_40 =sff40 +sff_dir_name_41 =sff41 +sff_dir_name_42 =sff42 +sff_dir_name_43 =sff43 +sff_dir_name_44 =sff44 +sff_dir_name_45 =sff45 +sff_dir_name_46 =sff46 +sff_dir_name_47 =sff47 +sff_dir_name_48 =sff48 +sff_dir_name_49 =sff49 +sff_dir_name_50 =sff50 +sff_dir_name_51 =sff51 +sff_dir_name_52 =sff52 +sff_dir_name_53 =sff53 +sff_dir_name_54 =sff54 +sff_dir_name_55 =sff55 +sff_dir_name_56 =sff56 + + +# configuration item: sff cpld register status +# format: sff_cpld_reg_[sff_index]_[cpld_reg] +# sff_index: start from 1 +# cpld_reg: 1: power_on, 2: tx_fault, 3: tx_dis, 4:pre_n, 5:rx_los +# 6: reset, 7: lpmode, 8: module_present, 9: interrupt + +# sff cpld presence status +sff_cpld_reg.mode_1_8=config +sff_cpld_reg.src_1_8=cpld +sff_cpld_reg.frmt_1_8=bit +sff_cpld_reg.pola_1_8=negative +sff_cpld_reg.addr_1_8=0x00030030 +sff_cpld_reg.len_1_8=1 +sff_cpld_reg.bit_offset_1_8=0 + +sff_cpld_reg.mode_2_8=config +sff_cpld_reg.src_2_8=cpld +sff_cpld_reg.frmt_2_8=bit +sff_cpld_reg.pola_2_8=negative +sff_cpld_reg.addr_2_8=0x00030030 +sff_cpld_reg.len_2_8=1 +sff_cpld_reg.bit_offset_2_8=1 + +sff_cpld_reg.mode_3_8=config +sff_cpld_reg.src_3_8=cpld +sff_cpld_reg.frmt_3_8=bit +sff_cpld_reg.pola_3_8=negative +sff_cpld_reg.addr_3_8=0x00030030 +sff_cpld_reg.len_3_8=1 +sff_cpld_reg.bit_offset_3_8=2 + +sff_cpld_reg.mode_4_8=config +sff_cpld_reg.src_4_8=cpld +sff_cpld_reg.frmt_4_8=bit +sff_cpld_reg.pola_4_8=negative +sff_cpld_reg.addr_4_8=0x00030030 +sff_cpld_reg.len_4_8=1 +sff_cpld_reg.bit_offset_4_8=3 + +sff_cpld_reg.mode_5_8=config +sff_cpld_reg.src_5_8=cpld +sff_cpld_reg.frmt_5_8=bit +sff_cpld_reg.pola_5_8=negative +sff_cpld_reg.addr_5_8=0x00030030 +sff_cpld_reg.len_5_8=1 +sff_cpld_reg.bit_offset_5_8=4 + +sff_cpld_reg.mode_6_8=config +sff_cpld_reg.src_6_8=cpld +sff_cpld_reg.frmt_6_8=bit +sff_cpld_reg.pola_6_8=negative +sff_cpld_reg.addr_6_8=0x00030030 +sff_cpld_reg.len_6_8=1 +sff_cpld_reg.bit_offset_6_8=5 + +sff_cpld_reg.mode_7_8=config +sff_cpld_reg.src_7_8=cpld +sff_cpld_reg.frmt_7_8=bit +sff_cpld_reg.pola_7_8=negative +sff_cpld_reg.addr_7_8=0x00030030 +sff_cpld_reg.len_7_8=1 +sff_cpld_reg.bit_offset_7_8=6 + +sff_cpld_reg.mode_8_8=config +sff_cpld_reg.src_8_8=cpld +sff_cpld_reg.frmt_8_8=bit +sff_cpld_reg.pola_8_8=negative +sff_cpld_reg.addr_8_8=0x00030030 +sff_cpld_reg.len_8_8=1 +sff_cpld_reg.bit_offset_8_8=7 + +sff_cpld_reg.mode_9_8=config +sff_cpld_reg.src_9_8=cpld +sff_cpld_reg.frmt_9_8=bit +sff_cpld_reg.pola_9_8=negative +sff_cpld_reg.addr_9_8=0x00030031 +sff_cpld_reg.len_9_8=1 +sff_cpld_reg.bit_offset_9_8=0 + +sff_cpld_reg.mode_10_8=config +sff_cpld_reg.src_10_8=cpld +sff_cpld_reg.frmt_10_8=bit +sff_cpld_reg.pola_10_8=negative +sff_cpld_reg.addr_10_8=0x00030031 +sff_cpld_reg.len_10_8=1 +sff_cpld_reg.bit_offset_10_8=1 + +sff_cpld_reg.mode_11_8=config +sff_cpld_reg.src_11_8=cpld +sff_cpld_reg.frmt_11_8=bit +sff_cpld_reg.pola_11_8=negative +sff_cpld_reg.addr_11_8=0x00030031 +sff_cpld_reg.len_11_8=1 +sff_cpld_reg.bit_offset_11_8=2 + +sff_cpld_reg.mode_12_8=config +sff_cpld_reg.src_12_8=cpld +sff_cpld_reg.frmt_12_8=bit +sff_cpld_reg.pola_12_8=negative +sff_cpld_reg.addr_12_8=0x00030031 +sff_cpld_reg.len_12_8=1 +sff_cpld_reg.bit_offset_12_8=3 + +sff_cpld_reg.mode_13_8=config +sff_cpld_reg.src_13_8=cpld +sff_cpld_reg.frmt_13_8=bit +sff_cpld_reg.pola_13_8=negative +sff_cpld_reg.addr_13_8=0x00030031 +sff_cpld_reg.len_13_8=1 +sff_cpld_reg.bit_offset_13_8=4 + +sff_cpld_reg.mode_14_8=config +sff_cpld_reg.src_14_8=cpld +sff_cpld_reg.frmt_14_8=bit +sff_cpld_reg.pola_14_8=negative +sff_cpld_reg.addr_14_8=0x00050030 +sff_cpld_reg.len_14_8=1 +sff_cpld_reg.bit_offset_14_8=0 + +sff_cpld_reg.mode_15_8=config +sff_cpld_reg.src_15_8=cpld +sff_cpld_reg.frmt_15_8=bit +sff_cpld_reg.pola_15_8=negative +sff_cpld_reg.addr_15_8=0x00030031 +sff_cpld_reg.len_15_8=1 +sff_cpld_reg.bit_offset_15_8=5 + +sff_cpld_reg.mode_16_8=config +sff_cpld_reg.src_16_8=cpld +sff_cpld_reg.frmt_16_8=bit +sff_cpld_reg.pola_16_8=negative +sff_cpld_reg.addr_16_8=0x00050030 +sff_cpld_reg.len_16_8=1 +sff_cpld_reg.bit_offset_16_8=1 + +sff_cpld_reg.mode_17_8=config +sff_cpld_reg.src_17_8=cpld +sff_cpld_reg.frmt_17_8=bit +sff_cpld_reg.pola_17_8=negative +sff_cpld_reg.addr_17_8=0x00050030 +sff_cpld_reg.len_17_8=1 +sff_cpld_reg.bit_offset_17_8=2 + +sff_cpld_reg.mode_18_8=config +sff_cpld_reg.src_18_8=cpld +sff_cpld_reg.frmt_18_8=bit +sff_cpld_reg.pola_18_8=negative +sff_cpld_reg.addr_18_8=0x00050030 +sff_cpld_reg.len_18_8=1 +sff_cpld_reg.bit_offset_18_8=3 + +sff_cpld_reg.mode_19_8=config +sff_cpld_reg.src_19_8=cpld +sff_cpld_reg.frmt_19_8=bit +sff_cpld_reg.pola_19_8=negative +sff_cpld_reg.addr_19_8=0x00050030 +sff_cpld_reg.len_19_8=1 +sff_cpld_reg.bit_offset_19_8=4 + +sff_cpld_reg.mode_20_8=config +sff_cpld_reg.src_20_8=cpld +sff_cpld_reg.frmt_20_8=bit +sff_cpld_reg.pola_20_8=negative +sff_cpld_reg.addr_20_8=0x00050030 +sff_cpld_reg.len_20_8=1 +sff_cpld_reg.bit_offset_20_8=5 + +sff_cpld_reg.mode_21_8=config +sff_cpld_reg.src_21_8=cpld +sff_cpld_reg.frmt_21_8=bit +sff_cpld_reg.pola_21_8=negative +sff_cpld_reg.addr_21_8=0x00050030 +sff_cpld_reg.len_21_8=1 +sff_cpld_reg.bit_offset_21_8=6 + +sff_cpld_reg.mode_22_8=config +sff_cpld_reg.src_22_8=cpld +sff_cpld_reg.frmt_22_8=bit +sff_cpld_reg.pola_22_8=negative +sff_cpld_reg.addr_22_8=0x00030031 +sff_cpld_reg.len_22_8=1 +sff_cpld_reg.bit_offset_22_8=6 + +sff_cpld_reg.mode_23_8=config +sff_cpld_reg.src_23_8=cpld +sff_cpld_reg.frmt_23_8=bit +sff_cpld_reg.pola_23_8=negative +sff_cpld_reg.addr_23_8=0x00050030 +sff_cpld_reg.len_23_8=1 +sff_cpld_reg.bit_offset_23_8=7 + +sff_cpld_reg.mode_24_8=config +sff_cpld_reg.src_24_8=cpld +sff_cpld_reg.frmt_24_8=bit +sff_cpld_reg.pola_24_8=negative +sff_cpld_reg.addr_24_8=0x00030031 +sff_cpld_reg.len_24_8=1 +sff_cpld_reg.bit_offset_24_8=7 + +sff_cpld_reg.mode_25_8=config +sff_cpld_reg.src_25_8=cpld +sff_cpld_reg.frmt_25_8=bit +sff_cpld_reg.pola_25_8=negative +sff_cpld_reg.addr_25_8=0x00050031 +sff_cpld_reg.len_25_8=1 +sff_cpld_reg.bit_offset_25_8=0 + +sff_cpld_reg.mode_26_8=config +sff_cpld_reg.src_26_8=cpld +sff_cpld_reg.frmt_26_8=bit +sff_cpld_reg.pola_26_8=negative +sff_cpld_reg.addr_26_8=0x00050031 +sff_cpld_reg.len_26_8=1 +sff_cpld_reg.bit_offset_26_8=1 + +sff_cpld_reg.mode_27_8=config +sff_cpld_reg.src_27_8=cpld +sff_cpld_reg.frmt_27_8=bit +sff_cpld_reg.pola_27_8=negative +sff_cpld_reg.addr_27_8=0x00050031 +sff_cpld_reg.len_27_8=1 +sff_cpld_reg.bit_offset_27_8=2 + +sff_cpld_reg.mode_28_8=config +sff_cpld_reg.src_28_8=cpld +sff_cpld_reg.frmt_28_8=bit +sff_cpld_reg.pola_28_8=negative +sff_cpld_reg.addr_28_8=0x00050031 +sff_cpld_reg.len_28_8=1 +sff_cpld_reg.bit_offset_28_8=3 + +sff_cpld_reg.mode_29_8=config +sff_cpld_reg.src_29_8=cpld +sff_cpld_reg.frmt_29_8=bit +sff_cpld_reg.pola_29_8=negative +sff_cpld_reg.addr_29_8=0x00050031 +sff_cpld_reg.len_29_8=1 +sff_cpld_reg.bit_offset_29_8=4 + +sff_cpld_reg.mode_30_8=config +sff_cpld_reg.src_30_8=cpld +sff_cpld_reg.frmt_30_8=bit +sff_cpld_reg.pola_30_8=negative +sff_cpld_reg.addr_30_8=0x00050031 +sff_cpld_reg.len_30_8=1 +sff_cpld_reg.bit_offset_30_8=5 + +sff_cpld_reg.mode_31_8=config +sff_cpld_reg.src_31_8=cpld +sff_cpld_reg.frmt_31_8=bit +sff_cpld_reg.pola_31_8=negative +sff_cpld_reg.addr_31_8=0x00030032 +sff_cpld_reg.len_31_8=1 +sff_cpld_reg.bit_offset_31_8=0 + +sff_cpld_reg.mode_32_8=config +sff_cpld_reg.src_32_8=cpld +sff_cpld_reg.frmt_32_8=bit +sff_cpld_reg.pola_32_8=negative +sff_cpld_reg.addr_32_8=0x00030032 +sff_cpld_reg.len_32_8=1 +sff_cpld_reg.bit_offset_32_8=1 + +sff_cpld_reg.mode_33_8=config +sff_cpld_reg.src_33_8=cpld +sff_cpld_reg.frmt_33_8=bit +sff_cpld_reg.pola_33_8=negative +sff_cpld_reg.addr_33_8=0x00050031 +sff_cpld_reg.len_33_8=1 +sff_cpld_reg.bit_offset_33_8=6 + +sff_cpld_reg.mode_34_8=config +sff_cpld_reg.src_34_8=cpld +sff_cpld_reg.frmt_34_8=bit +sff_cpld_reg.pola_34_8=negative +sff_cpld_reg.addr_34_8=0x00050031 +sff_cpld_reg.len_34_8=1 +sff_cpld_reg.bit_offset_34_8=7 + +sff_cpld_reg.mode_35_8=config +sff_cpld_reg.src_35_8=cpld +sff_cpld_reg.frmt_35_8=bit +sff_cpld_reg.pola_35_8=negative +sff_cpld_reg.addr_35_8=0x00030032 +sff_cpld_reg.len_35_8=1 +sff_cpld_reg.bit_offset_35_8=2 + +sff_cpld_reg.mode_36_8=config +sff_cpld_reg.src_36_8=cpld +sff_cpld_reg.frmt_36_8=bit +sff_cpld_reg.pola_36_8=negative +sff_cpld_reg.addr_36_8=0x00050032 +sff_cpld_reg.len_36_8=1 +sff_cpld_reg.bit_offset_36_8=0 + +sff_cpld_reg.mode_37_8=config +sff_cpld_reg.src_37_8=cpld +sff_cpld_reg.frmt_37_8=bit +sff_cpld_reg.pola_37_8=negative +sff_cpld_reg.addr_37_8=0x00050032 +sff_cpld_reg.len_37_8=1 +sff_cpld_reg.bit_offset_37_8=1 + +sff_cpld_reg.mode_38_8=config +sff_cpld_reg.src_38_8=cpld +sff_cpld_reg.frmt_38_8=bit +sff_cpld_reg.pola_38_8=negative +sff_cpld_reg.addr_38_8=0x00050032 +sff_cpld_reg.len_38_8=1 +sff_cpld_reg.bit_offset_38_8=2 + +sff_cpld_reg.mode_39_8=config +sff_cpld_reg.src_39_8=cpld +sff_cpld_reg.frmt_39_8=bit +sff_cpld_reg.pola_39_8=negative +sff_cpld_reg.addr_39_8=0x00050032 +sff_cpld_reg.len_39_8=1 +sff_cpld_reg.bit_offset_39_8=3 + +sff_cpld_reg.mode_40_8=config +sff_cpld_reg.src_40_8=cpld +sff_cpld_reg.frmt_40_8=bit +sff_cpld_reg.pola_40_8=negative +sff_cpld_reg.addr_40_8=0x00050032 +sff_cpld_reg.len_40_8=1 +sff_cpld_reg.bit_offset_40_8=4 + +sff_cpld_reg.mode_41_8=config +sff_cpld_reg.src_41_8=cpld +sff_cpld_reg.frmt_41_8=bit +sff_cpld_reg.pola_41_8=negative +sff_cpld_reg.addr_41_8=0x00020030 +sff_cpld_reg.len_41_8=1 +sff_cpld_reg.bit_offset_41_8=0 + +sff_cpld_reg.mode_42_8=config +sff_cpld_reg.src_42_8=cpld +sff_cpld_reg.frmt_42_8=bit +sff_cpld_reg.pola_42_8=negative +sff_cpld_reg.addr_42_8=0x00020030 +sff_cpld_reg.len_42_8=1 +sff_cpld_reg.bit_offset_42_8=1 + +sff_cpld_reg.mode_43_8=config +sff_cpld_reg.src_43_8=cpld +sff_cpld_reg.frmt_43_8=bit +sff_cpld_reg.pola_43_8=negative +sff_cpld_reg.addr_43_8=0x00020030 +sff_cpld_reg.len_43_8=1 +sff_cpld_reg.bit_offset_43_8=2 + +sff_cpld_reg.mode_44_8=config +sff_cpld_reg.src_44_8=cpld +sff_cpld_reg.frmt_44_8=bit +sff_cpld_reg.pola_44_8=negative +sff_cpld_reg.addr_44_8=0x00020030 +sff_cpld_reg.len_44_8=1 +sff_cpld_reg.bit_offset_44_8=3 + +sff_cpld_reg.mode_45_8=config +sff_cpld_reg.src_45_8=cpld +sff_cpld_reg.frmt_45_8=bit +sff_cpld_reg.pola_45_8=negative +sff_cpld_reg.addr_45_8=0x00020030 +sff_cpld_reg.len_45_8=1 +sff_cpld_reg.bit_offset_45_8=4 + +sff_cpld_reg.mode_46_8=config +sff_cpld_reg.src_46_8=cpld +sff_cpld_reg.frmt_46_8=bit +sff_cpld_reg.pola_46_8=negative +sff_cpld_reg.addr_46_8=0x00020030 +sff_cpld_reg.len_46_8=1 +sff_cpld_reg.bit_offset_46_8=5 + +sff_cpld_reg.mode_47_8=config +sff_cpld_reg.src_47_8=cpld +sff_cpld_reg.frmt_47_8=bit +sff_cpld_reg.pola_47_8=negative +sff_cpld_reg.addr_47_8=0x00020030 +sff_cpld_reg.len_47_8=1 +sff_cpld_reg.bit_offset_47_8=6 + +sff_cpld_reg.mode_48_8=config +sff_cpld_reg.src_48_8=cpld +sff_cpld_reg.frmt_48_8=bit +sff_cpld_reg.pola_48_8=negative +sff_cpld_reg.addr_48_8=0x00020030 +sff_cpld_reg.len_48_8=1 +sff_cpld_reg.bit_offset_48_8=7 + +sff_cpld_reg.mode_49_8=config +sff_cpld_reg.src_49_8=cpld +sff_cpld_reg.frmt_49_8=bit +sff_cpld_reg.pola_49_8=negative +sff_cpld_reg.addr_49_8=0x00020031 +sff_cpld_reg.len_49_8=1 +sff_cpld_reg.bit_offset_49_8=0 + +sff_cpld_reg.mode_50_8=config +sff_cpld_reg.src_50_8=cpld +sff_cpld_reg.frmt_50_8=bit +sff_cpld_reg.pola_50_8=negative +sff_cpld_reg.addr_50_8=0x00020031 +sff_cpld_reg.len_50_8=1 +sff_cpld_reg.bit_offset_50_8=1 + +sff_cpld_reg.mode_51_8=config +sff_cpld_reg.src_51_8=cpld +sff_cpld_reg.frmt_51_8=bit +sff_cpld_reg.pola_51_8=negative +sff_cpld_reg.addr_51_8=0x00020031 +sff_cpld_reg.len_51_8=1 +sff_cpld_reg.bit_offset_51_8=2 + +sff_cpld_reg.mode_52_8=config +sff_cpld_reg.src_52_8=cpld +sff_cpld_reg.frmt_52_8=bit +sff_cpld_reg.pola_52_8=negative +sff_cpld_reg.addr_52_8=0x00020031 +sff_cpld_reg.len_52_8=1 +sff_cpld_reg.bit_offset_52_8=3 + +sff_cpld_reg.mode_53_8=config +sff_cpld_reg.src_53_8=cpld +sff_cpld_reg.frmt_53_8=bit +sff_cpld_reg.pola_53_8=negative +sff_cpld_reg.addr_53_8=0x00020031 +sff_cpld_reg.len_53_8=1 +sff_cpld_reg.bit_offset_53_8=4 + +sff_cpld_reg.mode_54_8=config +sff_cpld_reg.src_54_8=cpld +sff_cpld_reg.frmt_54_8=bit +sff_cpld_reg.pola_54_8=negative +sff_cpld_reg.addr_54_8=0x00020031 +sff_cpld_reg.len_54_8=1 +sff_cpld_reg.bit_offset_54_8=5 + +sff_cpld_reg.mode_55_8=config +sff_cpld_reg.src_55_8=cpld +sff_cpld_reg.frmt_55_8=bit +sff_cpld_reg.pola_55_8=negative +sff_cpld_reg.addr_55_8=0x00020031 +sff_cpld_reg.len_55_8=1 +sff_cpld_reg.bit_offset_55_8=6 + +sff_cpld_reg.mode_56_8=config +sff_cpld_reg.src_56_8=cpld +sff_cpld_reg.frmt_56_8=bit +sff_cpld_reg.pola_56_8=negative +sff_cpld_reg.addr_56_8=0x00020031 +sff_cpld_reg.len_56_8=1 +sff_cpld_reg.bit_offset_56_8=7 diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/cfg_file_name b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/cfg_file_name new file mode 100644 index 000000000000..5f49420441a5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/plat_sysfs_cfg/cfg_file_name @@ -0,0 +1,4 @@ +WB_PLAT_CPLD +WB_PLAT_FAN +WB_PLAT_PSU +WB_PLAT_SFF diff --git a/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/setup.py b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/setup.py new file mode 100644 index 000000000000..6c3916921abb --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-micas/m2-w6520-48c8qc/setup.py @@ -0,0 +1,39 @@ +from setuptools import setup + +setup( + name='sonic-platform', + version='1.0', + description='SONiC platform API implementation', + license='Apache 2.0', + author='SONiC Team', + author_email='support', + url='', + maintainer='support', + maintainer_email='', + packages=[ + 'sonic_platform', + 'plat_hal', + 'wbutil', + 'eepromutil', + 'hal-config', + 'config', + ], + py_modules=[ + 'hal_pltfm', + 'platform_util', + 'platform_intf', + ], + classifiers=[ + 'Development Status :: 3 - Alpha', + 'Environment :: Plugins', + 'Intended Audience :: Developers', + 'Intended Audience :: Information Technology', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: Apache Software License', + 'Natural Language :: English', + 'Operating System :: POSIX :: Linux', + 'Programming Language :: Python :: 3.7', + 'Topic :: Utilities', + ], + keywords='sonic SONiC platform PLATFORM', +) From 5a32f61e68ff4d9c5119f4e03062b114e42fb9a7 Mon Sep 17 00:00:00 2001 From: Liping Xu <108326363+lipxu@users.noreply.github.com> Date: Thu, 27 Feb 2025 03:28:12 +0800 Subject: [PATCH 46/47] Use pzstd to compress the Docker in SWI slim images (#21852) Why I did it Enabled the docker inram feature for slim image. It would extract the docker image to ram during the boot, so it would take extra times during boot. Work item tracking Microsoft ADO (number only): 31323281 How I did it Use pzstd which is more efficient tool to compress and decompress the docker file to reduce the boot time. Currently, we do not modify the "FILESYSTEM_DOCKERFS=dockerfs.tar.gz" in onie-image.conf, so for slim image, we still use dockerfs.tar.gz as file name but actually with zstd compressed. We tried to find out a way to adjust the file name in onie-image.conf, but it seems not easy to do that. So we use the file cmd to determine the compressing type in union-mount.j2, then use the related cmd to extract the docker file. Plan to support zstd for all types of images in the future to unify the docker file image . How to verify it Boot swi slim image and normal image, boot mellanox bin image, all boot successfully. --- build_debian.sh | 12 +++++++++++- files/dsc/install_debian.j2 | 4 ++++ files/initramfs-tools/file | 18 ++++++++++++++++++ files/initramfs-tools/pzstd | 16 ++++++++++++++++ files/initramfs-tools/union-mount.j2 | 12 +++++++++--- 5 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 files/initramfs-tools/file create mode 100644 files/initramfs-tools/pzstd diff --git a/build_debian.sh b/build_debian.sh index 4b915d2d7e35..3102c45edcbd 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -392,6 +392,12 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in zstd \ nvme-cli +sudo cp files/initramfs-tools/pzstd $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/pzstd +sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/pzstd + +sudo cp files/initramfs-tools/file $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/file +sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/file + # Have systemd create the auditd log directory sudo mkdir -p ${FILESYSTEM_ROOT}/etc/systemd/system/auditd.service.d sudo tee ${FILESYSTEM_ROOT}/etc/systemd/system/auditd.service.d/log-directory.conf >/dev/null < Date: Wed, 26 Feb 2025 23:05:02 -0500 Subject: [PATCH 47/47] [Nokia-7220 IXR] Update NOKIA 7220 H4, H4-32D, H5-64D platforms (#21357) Why I did it Update for NOKIA 7220 H4-32D and NOKIA 7220 H4 to support breakout mode Update for NOKIA 7220 H5-64D to achieve 100% pass in OC for T1 topology How I did it Added files under ../device/nokia/x86_64-nokia_ixr7220_h4_32d-r0 directory. Added files under ../device/nokia/x86_64-nokia_ixr7220_h4-r0 directory. Added files under ../device/nokia/x86_64-nokia_ixr7220_h5_64d-r0 directory. How to verify it Make sure the sonic-buildimage is successful Run this image on x86_64-nokia_ixr7220_h4_32d-r0, x86_64-nokia_ixr7220_h4-r0 and x86_64-nokia_ixr7220_h5_64d-r0, verify all dockers are up and test basic commands like: show version show platform summary show platform syseeprom show platform fan show platform psustatus show platform firmware status show platform temperature sudo show system-health detail show interface status Run OC test, for T0/T1 topology and have 100% pass on all 3 platforms. --- .../buffers_defaults_t0.j2 | 2 +- .../buffers_defaults_t1.j2 | 2 +- .../Nokia-IXR7220-H4-64D/hwsku.json | 203 + .../Nokia-IXR7220-H4-64D/media_settings.json | 2 +- .../Nokia-IXR7220-H4-64D/port_config.ini | 134 +- .../x86_64-nokia_ixr7220_h4-r0/platform.json | 1877 +++- .../buffers_defaults_t0.j2 | 2 +- .../buffers_defaults_t1.j2 | 2 +- .../Nokia-IXR7220-H4-32D/hwsku.json | 103 + .../Nokia-IXR7220-H4-32D/media_settings.json | 2 +- .../Nokia-IXR7220-H4-32D/port_config.ini | 69 +- .../platform.json | 941 +- .../Nokia-IXR7220-H5-64D/buffer_ports.j2 | 7 + .../Nokia-IXR7220-H5-64D/buffers.json.j2 | 2 + .../buffers_defaults_t0.j2 | 36 + .../buffers_defaults_t1.j2 | 36 + .../{h5_64Dx400g.yml => h5_64dx400g.yml} | 148 +- .../Nokia-IXR7220-H5-64D/hwsku.json | 203 + .../Nokia-IXR7220-H5-64D/media_settings.json | 8240 +++++++++++++++++ .../pg_profile_lookup.ini | 24 + .../Nokia-IXR7220-H5-64D/port_config.ini | 135 +- .../Nokia-IXR7220-H5-64D/qos.json.j2 | 1 + .../custom_led.bin | Bin 0 -> 608 bytes .../led_proc_init.soc | 4 + .../x86_64-nokia_ixr7220_h5_64d-r0/pcie.yaml | 225 + .../platform.json | 2096 ++++- .../platform_env.conf | 3 + .../platform_reboot | 12 + .../plugins/eeprom.py | 6 +- .../plugins/led_control.py | 72 +- .../thermal_policy.json | 12 +- 31 files changed, 14347 insertions(+), 254 deletions(-) create mode 100644 device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/hwsku.json create mode 100644 device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/hwsku.json create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffer_ports.j2 create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers.json.j2 create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t0.j2 create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t1.j2 rename device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/{h5_64Dx400g.yml => h5_64dx400g.yml} (89%) create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/hwsku.json create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/media_settings.json create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/pg_profile_lookup.ini create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/qos.json.j2 create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/custom_led.bin create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/led_proc_init.soc create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/pcie.yaml create mode 100644 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_env.conf create mode 100755 device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_reboot diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t0.j2 b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t0.j2 index cfc4ff0afd84..c93ce9f3cbd7 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t0.j2 +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t0.j2 @@ -2,7 +2,7 @@ {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,256,4) %} + {%- for port_idx in range(0,512,8) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} {%- endfor %} {%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t1.j2 b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t1.j2 index cfc4ff0afd84..c93ce9f3cbd7 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t1.j2 +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/buffers_defaults_t1.j2 @@ -2,7 +2,7 @@ {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,256,4) %} + {%- for port_idx in range(0,512,8) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} {%- endfor %} {%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/hwsku.json b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/hwsku.json new file mode 100644 index 000000000000..a186d539b50c --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/hwsku.json @@ -0,0 +1,203 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G" + }, + "Ethernet256": { + "default_brkout_mode": "1x400G" + }, + "Ethernet264": { + "default_brkout_mode": "1x400G" + }, + "Ethernet272": { + "default_brkout_mode": "1x400G" + }, + "Ethernet280": { + "default_brkout_mode": "1x400G" + }, + "Ethernet288": { + "default_brkout_mode": "1x400G" + }, + "Ethernet296": { + "default_brkout_mode": "1x400G" + }, + "Ethernet304": { + "default_brkout_mode": "1x400G" + }, + "Ethernet312": { + "default_brkout_mode": "1x400G" + }, + "Ethernet320": { + "default_brkout_mode": "1x400G" + }, + "Ethernet328": { + "default_brkout_mode": "1x400G" + }, + "Ethernet336": { + "default_brkout_mode": "1x400G" + }, + "Ethernet344": { + "default_brkout_mode": "1x400G" + }, + "Ethernet352": { + "default_brkout_mode": "1x400G" + }, + "Ethernet360": { + "default_brkout_mode": "1x400G" + }, + "Ethernet368": { + "default_brkout_mode": "1x400G" + }, + "Ethernet376": { + "default_brkout_mode": "1x400G" + }, + "Ethernet384": { + "default_brkout_mode": "1x400G" + }, + "Ethernet392": { + "default_brkout_mode": "1x400G" + }, + "Ethernet400": { + "default_brkout_mode": "1x400G" + }, + "Ethernet408": { + "default_brkout_mode": "1x400G" + }, + "Ethernet416": { + "default_brkout_mode": "1x400G" + }, + "Ethernet424": { + "default_brkout_mode": "1x400G" + }, + "Ethernet432": { + "default_brkout_mode": "1x400G" + }, + "Ethernet440": { + "default_brkout_mode": "1x400G" + }, + "Ethernet448": { + "default_brkout_mode": "1x400G" + }, + "Ethernet456": { + "default_brkout_mode": "1x400G" + }, + "Ethernet464": { + "default_brkout_mode": "1x400G" + }, + "Ethernet472": { + "default_brkout_mode": "1x400G" + }, + "Ethernet480": { + "default_brkout_mode": "1x400G" + }, + "Ethernet488": { + "default_brkout_mode": "1x400G" + }, + "Ethernet496": { + "default_brkout_mode": "1x400G" + }, + "Ethernet504": { + "default_brkout_mode": "1x400G" + }, + "Ethernet512": { + "default_brkout_mode": "1x10G" + }, + "Ethernet513": { + "default_brkout_mode": "1x10G" + } + } +} + diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/media_settings.json b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/media_settings.json index 066777abff2c..54349bc77c53 100755 --- a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/media_settings.json +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/media_settings.json @@ -4141,4 +4141,4 @@ } } } -} \ No newline at end of file +} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/port_config.ini b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/port_config.ini index 07184ae23f78..0ee93cd63ea5 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/port_config.ini +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/Nokia-IXR7220-H4-64D/port_config.ini @@ -1,67 +1,67 @@ -# name lanes alias index speed -Ethernet0 129,130,131,132,133,134,135,136 fourhundredGigE1/1 1 400000 -Ethernet4 137,138,139,140,141,142,143,144 fourhundredGigE1/2 2 400000 -Ethernet8 145,146,147,148,149,150,151,152 fourhundredGigE1/3 3 400000 -Ethernet12 153,154,155,156,157,158,159,160 fourhundredGigE1/4 4 400000 -Ethernet16 161,162,163,164,165,166,167,168 fourhundredGigE1/5 5 400000 -Ethernet20 169,170,171,172,173,174,175,176 fourhundredGigE1/6 6 400000 -Ethernet24 177,178,179,180,181,182,183,184 fourhundredGigE1/7 7 400000 -Ethernet28 185,186,187,188,189,190,191,192 fourhundredGigE1/8 8 400000 -Ethernet32 193,194,195,196,197,198,199,200 fourhundredGigE1/9 9 400000 -Ethernet36 201,202,203,204,205,206,207,208 fourhundredGigE1/10 10 400000 -Ethernet40 249,250,251,252,253,254,255,256 fourhundredGigE1/11 11 400000 -Ethernet44 241,242,243,244,245,246,247,248 fourhundredGigE1/12 12 400000 -Ethernet48 225,226,227,228,229,230,231,232 fourhundredGigE1/13 13 400000 -Ethernet52 233,234,235,236,237,238,239,240 fourhundredGigE1/14 14 400000 -Ethernet56 217,218,219,220,221,222,223,224 fourhundredGigE1/15 15 400000 -Ethernet60 209,210,211,212,213,214,215,216 fourhundredGigE1/16 16 400000 -Ethernet64 289,290,291,292,293,294,295,296 fourhundredGigE1/17 17 400000 -Ethernet68 297,298,299,300,301,302,303,304 fourhundredGigE1/18 18 400000 -Ethernet72 281,282,283,284,285,286,287,288 fourhundredGigE1/19 19 400000 -Ethernet76 273,274,275,276,277,278,279,280 fourhundredGigE1/20 20 400000 -Ethernet80 257,258,259,260,261,262,263,264 fourhundredGigE1/21 21 400000 -Ethernet84 265,266,267,268,269,270,271,272 fourhundredGigE1/22 22 400000 -Ethernet88 305,306,307,308,309,310,311,312 fourhundredGigE1/23 23 400000 -Ethernet92 313,314,315,316,317,318,319,320 fourhundredGigE1/24 24 400000 -Ethernet96 321,322,323,324,325,326,327,328 fourhundredGigE1/25 25 400000 -Ethernet100 329,330,331,332,333,334,335,336 fourhundredGigE1/26 26 400000 -Ethernet104 337,338,339,340,341,342,343,344 fourhundredGigE1/27 27 400000 -Ethernet108 345,346,347,348,349,350,351,352 fourhundredGigE1/28 28 400000 -Ethernet112 353,354,355,356,357,358,359,360 fourhundredGigE1/29 29 400000 -Ethernet116 361,362,363,364,365,366,367,368 fourhundredGigE1/30 30 400000 -Ethernet120 369,370,371,372,373,374,375,376 fourhundredGigE1/31 31 400000 -Ethernet124 377,378,379,380,381,382,383,384 fourhundredGigE1/32 32 400000 -Ethernet128 97,98,99,100,101,102,103,104 fourhundredGigE1/33 33 400000 -Ethernet132 105,106,107,108,109,110,111,112 fourhundredGigE1/34 34 400000 -Ethernet136 113,114,115,116,117,118,119,120 fourhundredGigE1/35 35 400000 -Ethernet140 121,122,123,124,125,126,127,128 fourhundredGigE1/36 36 400000 -Ethernet144 57,58,59,60,61,62,63,64 fourhundredGigE1/37 37 400000 -Ethernet148 65,66,67,68,69,70,71,72 fourhundredGigE1/38 38 400000 -Ethernet152 49,50,51,52,53,54,55,56 fourhundredGigE1/39 39 400000 -Ethernet156 81,82,83,84,85,86,87,88 fourhundredGigE1/40 40 400000 -Ethernet160 41,42,43,44,45,46,47,48 fourhundredGigE1/41 41 400000 -Ethernet164 73,74,75,76,77,78,79,80 fourhundredGigE1/42 42 400000 -Ethernet168 33,34,35,36,37,38,39,40 fourhundredGigE1/43 43 400000 -Ethernet172 89,90,91,92,93,94,95,96 fourhundredGigE1/44 44 400000 -Ethernet176 25,26,27,28,29,30,31,32 fourhundredGigE1/45 45 400000 -Ethernet180 17,18,19,20,21,22,23,24 fourhundredGigE1/46 46 400000 -Ethernet184 1,2,3,4,5,6,7,8 fourhundredGigE1/47 47 400000 -Ethernet188 9,10,11,12,13,14,15,16 fourhundredGigE1/48 48 400000 -Ethernet192 497,498,499,500,501,502,503,504 fourhundredGigE1/49 49 400000 -Ethernet196 505,506,507,508,509,510,511,512 fourhundredGigE1/50 50 400000 -Ethernet200 489,490,491,492,493,494,495,496 fourhundredGigE1/51 51 400000 -Ethernet204 481,482,483,484,485,486,487,488 fourhundredGigE1/52 52 400000 -Ethernet208 473,474,475,476,477,478,479,480 fourhundredGigE1/53 53 400000 -Ethernet212 417,418,419,420,421,422,423,424 fourhundredGigE1/54 54 400000 -Ethernet216 465,466,467,468,469,470,471,472 fourhundredGigE1/55 55 400000 -Ethernet220 433,434,435,436,437,438,439,440 fourhundredGigE1/56 56 400000 -Ethernet224 457,458,459,460,461,462,463,464 fourhundredGigE1/57 57 400000 -Ethernet228 425,426,427,428,429,430,431,432 fourhundredGigE1/58 58 400000 -Ethernet232 449,450,451,452,453,454,455,456 fourhundredGigE1/59 59 400000 -Ethernet236 441,442,443,444,445,446,447,448 fourhundredGigE1/60 60 400000 -Ethernet240 385,386,387,388,389,390,391,392 fourhundredGigE1/61 61 400000 -Ethernet244 401,402,403,404,405,406,407,408 fourhundredGigE1/62 62 400000 -Ethernet248 393,394,395,396,397,398,399,400 fourhundredGigE1/63 63 400000 -Ethernet252 409,410,411,412,413,414,415,416 fourhundredGigE1/64 64 400000 -Ethernet256 513 tenGigE1/65 65 10000 -Ethernet257 515 tenGigE1/66 66 10000 +# name lanes alias index speed fec +Ethernet0 129,130,131,132,133,134,135,136 Ethernet1/1 1 400000 rs +Ethernet8 137,138,139,140,141,142,143,144 Ethernet2/1 2 400000 rs +Ethernet16 145,146,147,148,149,150,151,152 Ethernet3/1 3 400000 rs +Ethernet24 153,154,155,156,157,158,159,160 Ethernet4/1 4 400000 rs +Ethernet32 161,162,163,164,165,166,167,168 Ethernet5/1 5 400000 rs +Ethernet40 169,170,171,172,173,174,175,176 Ethernet6/1 6 400000 rs +Ethernet48 177,178,179,180,181,182,183,184 Ethernet7/1 7 400000 rs +Ethernet56 185,186,187,188,189,190,191,192 Ethernet8/1 8 400000 rs +Ethernet64 193,194,195,196,197,198,199,200 Ethernet9/1 9 400000 rs +Ethernet72 201,202,203,204,205,206,207,208 Ethernet10/1 10 400000 rs +Ethernet80 249,250,251,252,253,254,255,256 Ethernet11/1 11 400000 rs +Ethernet88 241,242,243,244,245,246,247,248 Ethernet12/1 12 400000 rs +Ethernet96 225,226,227,228,229,230,231,232 Ethernet13/1 13 400000 rs +Ethernet104 233,234,235,236,237,238,239,240 Ethernet14/1 14 400000 rs +Ethernet112 217,218,219,220,221,222,223,224 Ethernet15/1 15 400000 rs +Ethernet120 209,210,211,212,213,214,215,216 Ethernet16/1 16 400000 rs +Ethernet128 289,290,291,292,293,294,295,296 Ethernet17/1 17 400000 rs +Ethernet136 297,298,299,300,301,302,303,304 Ethernet18/1 18 400000 rs +Ethernet144 281,282,283,284,285,286,287,288 Ethernet19/1 19 400000 rs +Ethernet152 273,274,275,276,277,278,279,280 Ethernet20/1 20 400000 rs +Ethernet160 257,258,259,260,261,262,263,264 Ethernet21/1 21 400000 rs +Ethernet168 265,266,267,268,269,270,271,272 Ethernet22/1 22 400000 rs +Ethernet176 305,306,307,308,309,310,311,312 Ethernet23/1 23 400000 rs +Ethernet184 313,314,315,316,317,318,319,320 Ethernet24/1 24 400000 rs +Ethernet192 321,322,323,324,325,326,327,328 Ethernet25/1 25 400000 rs +Ethernet200 329,330,331,332,333,334,335,336 Ethernet26/1 26 400000 rs +Ethernet208 337,338,339,340,341,342,343,344 Ethernet27/1 27 400000 rs +Ethernet216 345,346,347,348,349,350,351,352 Ethernet28/1 28 400000 rs +Ethernet224 353,354,355,356,357,358,359,360 Ethernet29/1 29 400000 rs +Ethernet232 361,362,363,364,365,366,367,368 Ethernet30/1 30 400000 rs +Ethernet240 369,370,371,372,373,374,375,376 Ethernet31/1 31 400000 rs +Ethernet248 377,378,379,380,381,382,383,384 Ethernet32/1 32 400000 rs +Ethernet256 97,98,99,100,101,102,103,104 Ethernet33/1 33 400000 rs +Ethernet264 105,106,107,108,109,110,111,112 Ethernet34/1 34 400000 rs +Ethernet272 113,114,115,116,117,118,119,120 Ethernet35/1 35 400000 rs +Ethernet280 121,122,123,124,125,126,127,128 Ethernet36/1 36 400000 rs +Ethernet288 57,58,59,60,61,62,63,64 Ethernet37/1 37 400000 rs +Ethernet296 65,66,67,68,69,70,71,72 Ethernet38/1 38 400000 rs +Ethernet304 49,50,51,52,53,54,55,56 Ethernet39/1 39 400000 rs +Ethernet312 81,82,83,84,85,86,87,88 Ethernet40/1 40 400000 rs +Ethernet320 41,42,43,44,45,46,47,48 Ethernet41/1 41 400000 rs +Ethernet328 73,74,75,76,77,78,79,80 Ethernet42/1 42 400000 rs +Ethernet336 33,34,35,36,37,38,39,40 Ethernet43/1 43 400000 rs +Ethernet344 89,90,91,92,93,94,95,96 Ethernet44/1 44 400000 rs +Ethernet352 25,26,27,28,29,30,31,32 Ethernet45/1 45 400000 rs +Ethernet360 17,18,19,20,21,22,23,24 Ethernet46/1 46 400000 rs +Ethernet368 1,2,3,4,5,6,7,8 Ethernet47/1 47 400000 rs +Ethernet376 9,10,11,12,13,14,15,16 Ethernet48/1 48 400000 rs +Ethernet384 497,498,499,500,501,502,503,504 Ethernet49/1 49 400000 rs +Ethernet392 505,506,507,508,509,510,511,512 Ethernet50/1 50 400000 rs +Ethernet400 489,490,491,492,493,494,495,496 Ethernet51/1 51 400000 rs +Ethernet408 481,482,483,484,485,486,487,488 Ethernet52/1 52 400000 rs +Ethernet416 473,474,475,476,477,478,479,480 Ethernet53/1 53 400000 rs +Ethernet424 417,418,419,420,421,422,423,424 Ethernet54/1 54 400000 rs +Ethernet432 465,466,467,468,469,470,471,472 Ethernet55/1 55 400000 rs +Ethernet440 433,434,435,436,437,438,439,440 Ethernet56/1 56 400000 rs +Ethernet448 457,458,459,460,461,462,463,464 Ethernet57/1 57 400000 rs +Ethernet456 425,426,427,428,429,430,431,432 Ethernet58/1 58 400000 rs +Ethernet464 449,450,451,452,453,454,455,456 Ethernet59/1 59 400000 rs +Ethernet472 441,442,443,444,445,446,447,448 Ethernet60/1 60 400000 rs +Ethernet480 385,386,387,388,389,390,391,392 Ethernet61/1 61 400000 rs +Ethernet488 401,402,403,404,405,406,407,408 Ethernet62/1 62 400000 rs +Ethernet496 393,394,395,396,397,398,399,400 Ethernet63/1 63 400000 rs +Ethernet504 409,410,411,412,413,414,415,416 Ethernet64/1 64 400000 rs +Ethernet512 513 Ethernet65 65 10000 none +Ethernet513 515 Ethernet66 66 10000 none diff --git a/device/nokia/x86_64-nokia_ixr7220_h4-r0/platform.json b/device/nokia/x86_64-nokia_ixr7220_h4-r0/platform.json index 4c0acf7eb890..1be536de81b6 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4-r0/platform.json +++ b/device/nokia/x86_64-nokia_ixr7220_h4-r0/platform.json @@ -495,7 +495,1882 @@ } ] }, - "interfaces": {}, + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G": [ + "Ethernet1/1" + ], + "2x200G": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ], + "8x50G": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4", + "Ethernet1/5", + "Ethernet1/6", + "Ethernet1/7", + "Ethernet1/8" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G": [ + "Ethernet2/1" + ], + "2x200G": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ], + "8x50G": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4", + "Ethernet2/5", + "Ethernet2/6", + "Ethernet2/7", + "Ethernet2/8" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G": [ + "Ethernet3/1" + ], + "2x200G": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ], + "8x50G": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4", + "Ethernet3/5", + "Ethernet3/6", + "Ethernet3/7", + "Ethernet3/8" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G": [ + "Ethernet4/1" + ], + "2x200G": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ], + "8x50G": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4", + "Ethernet4/5", + "Ethernet4/6", + "Ethernet4/7", + "Ethernet4/8" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G": [ + "Ethernet5/1" + ], + "2x200G": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ], + "8x50G": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4", + "Ethernet5/5", + "Ethernet5/6", + "Ethernet5/7", + "Ethernet5/8" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G": [ + "Ethernet6/1" + ], + "2x200G": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ], + "8x50G": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4", + "Ethernet6/5", + "Ethernet6/6", + "Ethernet6/7", + "Ethernet6/8" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G": [ + "Ethernet7/1" + ], + "2x200G": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ], + "8x50G": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4", + "Ethernet7/5", + "Ethernet7/6", + "Ethernet7/7", + "Ethernet7/8" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G": [ + "Ethernet8/1" + ], + "2x200G": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ], + "8x50G": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4", + "Ethernet8/5", + "Ethernet8/6", + "Ethernet8/7", + "Ethernet8/8" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G": [ + "Ethernet9/1" + ], + "2x200G": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ], + "8x50G": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4", + "Ethernet9/5", + "Ethernet9/6", + "Ethernet9/7", + "Ethernet9/8" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G": [ + "Ethernet10/1" + ], + "2x200G": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ], + "8x50G": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4", + "Ethernet10/5", + "Ethernet10/6", + "Ethernet10/7", + "Ethernet10/8" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G": [ + "Ethernet11/1" + ], + "2x200G": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ], + "8x50G": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4", + "Ethernet11/5", + "Ethernet11/6", + "Ethernet11/7", + "Ethernet11/8" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G": [ + "Ethernet12/1" + ], + "2x200G": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ], + "8x50G": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4", + "Ethernet12/5", + "Ethernet12/6", + "Ethernet12/7", + "Ethernet12/8" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G": [ + "Ethernet13/1" + ], + "2x200G": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ], + "8x50G": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4", + "Ethernet13/5", + "Ethernet13/6", + "Ethernet13/7", + "Ethernet13/8" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G": [ + "Ethernet14/1" + ], + "2x200G": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ], + "8x50G": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4", + "Ethernet14/5", + "Ethernet14/6", + "Ethernet14/7", + "Ethernet14/8" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G": [ + "Ethernet15/1" + ], + "2x200G": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ], + "8x50G": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4", + "Ethernet15/5", + "Ethernet15/6", + "Ethernet15/7", + "Ethernet15/8" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G": [ + "Ethernet16/1" + ], + "2x200G": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ], + "8x50G": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4", + "Ethernet16/5", + "Ethernet16/6", + "Ethernet16/7", + "Ethernet16/8" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "289,290,291,292,293,294,295,296", + "breakout_modes": { + "1x400G": [ + "Ethernet17/1" + ], + "2x200G": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ], + "8x50G": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4", + "Ethernet17/5", + "Ethernet17/6", + "Ethernet17/7", + "Ethernet17/8" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "297,298,299,300,301,302,303,304", + "breakout_modes": { + "1x400G": [ + "Ethernet18/1" + ], + "2x200G": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ], + "8x50G": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4", + "Ethernet18/5", + "Ethernet18/6", + "Ethernet18/7", + "Ethernet18/8" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "281,282,283,284,285,286,287,288", + "breakout_modes": { + "1x400G": [ + "Ethernet19/1" + ], + "2x200G": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ], + "8x50G": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4", + "Ethernet19/5", + "Ethernet19/6", + "Ethernet19/7", + "Ethernet19/8" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "273,274,275,276,277,278,279,280", + "breakout_modes": { + "1x400G": [ + "Ethernet20/1" + ], + "2x200G": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ], + "8x50G": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4", + "Ethernet20/5", + "Ethernet20/6", + "Ethernet20/7", + "Ethernet20/8" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "257,258,259,260,261,262,263,264", + "breakout_modes": { + "1x400G": [ + "Ethernet21/1" + ], + "2x200G": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ], + "8x50G": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4", + "Ethernet21/5", + "Ethernet21/6", + "Ethernet21/7", + "Ethernet21/8" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "265,266,267,268,269,270,271,272", + "breakout_modes": { + "1x400G": [ + "Ethernet22/1" + ], + "2x200G": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ], + "8x50G": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4", + "Ethernet22/5", + "Ethernet22/6", + "Ethernet22/7", + "Ethernet22/8" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "305,306,307,308,309,310,311,312", + "breakout_modes": { + "1x400G": [ + "Ethernet23/1" + ], + "2x200G": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ], + "8x50G": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4", + "Ethernet23/5", + "Ethernet23/6", + "Ethernet23/7", + "Ethernet23/8" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "313,314,315,316,317,318,319,320", + "breakout_modes": { + "1x400G": [ + "Ethernet24/1" + ], + "2x200G": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ], + "8x50G": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4", + "Ethernet24/5", + "Ethernet24/6", + "Ethernet24/7", + "Ethernet24/8" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "321,322,323,324,325,326,327,328", + "breakout_modes": { + "1x400G": [ + "Ethernet25/1" + ], + "2x200G": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ], + "8x50G": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4", + "Ethernet25/5", + "Ethernet25/6", + "Ethernet25/7", + "Ethernet25/8" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "329,330,331,332,333,334,335,336", + "breakout_modes": { + "1x400G": [ + "Ethernet26/1" + ], + "2x200G": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ], + "8x50G": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4", + "Ethernet26/5", + "Ethernet26/6", + "Ethernet26/7", + "Ethernet26/8" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "337,338,339,340,341,342,343,344", + "breakout_modes": { + "1x400G": [ + "Ethernet27/1" + ], + "2x200G": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ], + "8x50G": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4", + "Ethernet27/5", + "Ethernet27/6", + "Ethernet27/7", + "Ethernet27/8" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "345,346,347,348,349,350,351,352", + "breakout_modes": { + "1x400G": [ + "Ethernet28/1" + ], + "2x200G": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ], + "8x50G": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4", + "Ethernet28/5", + "Ethernet28/6", + "Ethernet28/7", + "Ethernet28/8" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "353,354,355,356,357,358,359,360", + "breakout_modes": { + "1x400G": [ + "Ethernet29/1" + ], + "2x200G": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ], + "8x50G": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4", + "Ethernet29/5", + "Ethernet29/6", + "Ethernet29/7", + "Ethernet29/8" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "361,362,363,364,365,366,367,368", + "breakout_modes": { + "1x400G": [ + "Ethernet30/1" + ], + "2x200G": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ], + "8x50G": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4", + "Ethernet30/5", + "Ethernet30/6", + "Ethernet30/7", + "Ethernet30/8" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "369,370,371,372,373,374,375,376", + "breakout_modes": { + "1x400G": [ + "Ethernet31/1" + ], + "2x200G": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ], + "8x50G": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4", + "Ethernet31/5", + "Ethernet31/6", + "Ethernet31/7", + "Ethernet31/8" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "377,378,379,380,381,382,383,384", + "breakout_modes": { + "1x400G": [ + "Ethernet32/1" + ], + "2x200G": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ], + "8x50G": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4", + "Ethernet32/5", + "Ethernet32/6", + "Ethernet32/7", + "Ethernet32/8" + ] + } + }, + "Ethernet256": { + "index": "33,33,33,33,33,33,33,33", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G": [ + "Ethernet33/1" + ], + "2x200G": [ + "Ethernet33/1", + "Ethernet33/5" + ], + "4x100G": [ + "Ethernet33/1", + "Ethernet33/3", + "Ethernet33/5", + "Ethernet33/7" + ], + "8x50G": [ + "Ethernet33/1", + "Ethernet33/2", + "Ethernet33/3", + "Ethernet33/4", + "Ethernet33/5", + "Ethernet33/6", + "Ethernet33/7", + "Ethernet33/8" + ] + } + }, + "Ethernet264": { + "index": "34,34,34,34,34,34,34,34", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G": [ + "Ethernet34/1" + ], + "2x200G": [ + "Ethernet34/1", + "Ethernet34/5" + ], + "4x100G": [ + "Ethernet34/1", + "Ethernet34/3", + "Ethernet34/5", + "Ethernet34/7" + ], + "8x50G": [ + "Ethernet34/1", + "Ethernet34/2", + "Ethernet34/3", + "Ethernet34/4", + "Ethernet34/5", + "Ethernet34/6", + "Ethernet34/7", + "Ethernet34/8" + ] + } + }, + "Ethernet272": { + "index": "35,35,35,35,35,35,35,35", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G": [ + "Ethernet35/1" + ], + "2x200G": [ + "Ethernet35/1", + "Ethernet35/5" + ], + "4x100G": [ + "Ethernet35/1", + "Ethernet35/3", + "Ethernet35/5", + "Ethernet35/7" + ], + "8x50G": [ + "Ethernet35/1", + "Ethernet35/2", + "Ethernet35/3", + "Ethernet35/4", + "Ethernet35/5", + "Ethernet35/6", + "Ethernet35/7", + "Ethernet35/8" + ] + } + }, + "Ethernet280": { + "index": "36,36,36,36,36,36,36,36", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G": [ + "Ethernet36/1" + ], + "2x200G": [ + "Ethernet36/1", + "Ethernet36/5" + ], + "4x100G": [ + "Ethernet36/1", + "Ethernet36/3", + "Ethernet36/5", + "Ethernet36/7" + ], + "8x50G": [ + "Ethernet36/1", + "Ethernet36/2", + "Ethernet36/3", + "Ethernet36/4", + "Ethernet36/5", + "Ethernet36/6", + "Ethernet36/7", + "Ethernet36/8" + ] + } + }, + "Ethernet288": { + "index": "37,37,37,37,37,37,37,37", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G": [ + "Ethernet37/1" + ], + "2x200G": [ + "Ethernet37/1", + "Ethernet37/5" + ], + "4x100G": [ + "Ethernet37/1", + "Ethernet37/3", + "Ethernet37/5", + "Ethernet37/7" + ], + "8x50G": [ + "Ethernet37/1", + "Ethernet37/2", + "Ethernet37/3", + "Ethernet37/4", + "Ethernet37/5", + "Ethernet37/6", + "Ethernet37/7", + "Ethernet37/8" + ] + } + }, + "Ethernet296": { + "index": "38,38,38,38,38,38,38,38", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G": [ + "Ethernet38/1" + ], + "2x200G": [ + "Ethernet38/1", + "Ethernet38/5" + ], + "4x100G": [ + "Ethernet38/1", + "Ethernet38/3", + "Ethernet38/5", + "Ethernet38/7" + ], + "8x50G": [ + "Ethernet38/1", + "Ethernet38/2", + "Ethernet38/3", + "Ethernet38/4", + "Ethernet38/5", + "Ethernet38/6", + "Ethernet38/7", + "Ethernet38/8" + ] + } + }, + "Ethernet304": { + "index": "39,39,39,39,39,39,39,39", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G": [ + "Ethernet39/1" + ], + "2x200G": [ + "Ethernet39/1", + "Ethernet39/5" + ], + "4x100G": [ + "Ethernet39/1", + "Ethernet39/3", + "Ethernet39/5", + "Ethernet39/7" + ], + "8x50G": [ + "Ethernet39/1", + "Ethernet39/2", + "Ethernet39/3", + "Ethernet39/4", + "Ethernet39/5", + "Ethernet39/6", + "Ethernet39/7", + "Ethernet39/8" + ] + } + }, + "Ethernet312": { + "index": "40,40,40,40,40,40,40,40", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G": [ + "Ethernet40/1" + ], + "2x200G": [ + "Ethernet40/1", + "Ethernet40/5" + ], + "4x100G": [ + "Ethernet40/1", + "Ethernet40/3", + "Ethernet40/5", + "Ethernet40/7" + ], + "8x50G": [ + "Ethernet40/1", + "Ethernet40/2", + "Ethernet40/3", + "Ethernet40/4", + "Ethernet40/5", + "Ethernet40/6", + "Ethernet40/7", + "Ethernet40/8" + ] + } + }, + "Ethernet320": { + "index": "41,41,41,41,41,41,41,41", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G": [ + "Ethernet41/1" + ], + "2x200G": [ + "Ethernet41/1", + "Ethernet41/5" + ], + "4x100G": [ + "Ethernet41/1", + "Ethernet41/3", + "Ethernet41/5", + "Ethernet41/7" + ], + "8x50G": [ + "Ethernet41/1", + "Ethernet41/2", + "Ethernet41/3", + "Ethernet41/4", + "Ethernet41/5", + "Ethernet41/6", + "Ethernet41/7", + "Ethernet41/8" + ] + } + }, + "Ethernet328": { + "index": "42,42,42,42,42,42,42,42", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G": [ + "Ethernet42/1" + ], + "2x200G": [ + "Ethernet42/1", + "Ethernet42/5" + ], + "4x100G": [ + "Ethernet42/1", + "Ethernet42/3", + "Ethernet42/5", + "Ethernet42/7" + ], + "8x50G": [ + "Ethernet42/1", + "Ethernet42/2", + "Ethernet42/3", + "Ethernet42/4", + "Ethernet42/5", + "Ethernet42/6", + "Ethernet42/7", + "Ethernet42/8" + ] + } + }, + "Ethernet336": { + "index": "43,43,43,43,43,43,43,43", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G": [ + "Ethernet43/1" + ], + "2x200G": [ + "Ethernet43/1", + "Ethernet43/5" + ], + "4x100G": [ + "Ethernet43/1", + "Ethernet43/3", + "Ethernet43/5", + "Ethernet43/7" + ], + "8x50G": [ + "Ethernet43/1", + "Ethernet43/2", + "Ethernet43/3", + "Ethernet43/4", + "Ethernet43/5", + "Ethernet43/6", + "Ethernet43/7", + "Ethernet43/8" + ] + } + }, + "Ethernet344": { + "index": "44,44,44,44,44,44,44,44", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G": [ + "Ethernet44/1" + ], + "2x200G": [ + "Ethernet44/1", + "Ethernet44/5" + ], + "4x100G": [ + "Ethernet44/1", + "Ethernet44/3", + "Ethernet44/5", + "Ethernet44/7" + ], + "8x50G": [ + "Ethernet44/1", + "Ethernet44/2", + "Ethernet44/3", + "Ethernet44/4", + "Ethernet44/5", + "Ethernet44/6", + "Ethernet44/7", + "Ethernet44/8" + ] + } + }, + "Ethernet352": { + "index": "45,45,45,45,45,45,45,45", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G": [ + "Ethernet45/1" + ], + "2x200G": [ + "Ethernet45/1", + "Ethernet45/5" + ], + "4x100G": [ + "Ethernet45/1", + "Ethernet45/3", + "Ethernet45/5", + "Ethernet45/7" + ], + "8x50G": [ + "Ethernet45/1", + "Ethernet45/2", + "Ethernet45/3", + "Ethernet45/4", + "Ethernet45/5", + "Ethernet45/6", + "Ethernet45/7", + "Ethernet45/8" + ] + } + }, + "Ethernet360": { + "index": "46,46,46,46,46,46,46,46", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G": [ + "Ethernet46/1" + ], + "2x200G": [ + "Ethernet46/1", + "Ethernet46/5" + ], + "4x100G": [ + "Ethernet46/1", + "Ethernet46/3", + "Ethernet46/5", + "Ethernet46/7" + ], + "8x50G": [ + "Ethernet46/1", + "Ethernet46/2", + "Ethernet46/3", + "Ethernet46/4", + "Ethernet46/5", + "Ethernet46/6", + "Ethernet46/7", + "Ethernet46/8" + ] + } + }, + "Ethernet368": { + "index": "47,47,47,47,47,47,47,47", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G": [ + "Ethernet47/1" + ], + "2x200G": [ + "Ethernet47/1", + "Ethernet47/5" + ], + "4x100G": [ + "Ethernet47/1", + "Ethernet47/3", + "Ethernet47/5", + "Ethernet47/7" + ], + "8x50G": [ + "Ethernet47/1", + "Ethernet47/2", + "Ethernet47/3", + "Ethernet47/4", + "Ethernet47/5", + "Ethernet47/6", + "Ethernet47/7", + "Ethernet47/8" + ] + } + }, + "Ethernet376": { + "index": "48,48,48,48,48,48,48,48", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G": [ + "Ethernet48/1" + ], + "2x200G": [ + "Ethernet48/1", + "Ethernet48/5" + ], + "4x100G": [ + "Ethernet48/1", + "Ethernet48/3", + "Ethernet48/5", + "Ethernet48/7" + ], + "8x50G": [ + "Ethernet48/1", + "Ethernet48/2", + "Ethernet48/3", + "Ethernet48/4", + "Ethernet48/5", + "Ethernet48/6", + "Ethernet48/7", + "Ethernet48/8" + ] + } + }, + "Ethernet384": { + "index": "49,49,49,49,49,49,49,49", + "lanes": "497,498,499,500,501,502,503,504", + "breakout_modes": { + "1x400G": [ + "Ethernet49/1" + ], + "2x200G": [ + "Ethernet49/1", + "Ethernet49/5" + ], + "4x100G": [ + "Ethernet49/1", + "Ethernet49/3", + "Ethernet49/5", + "Ethernet49/7" + ], + "8x50G": [ + "Ethernet49/1", + "Ethernet49/2", + "Ethernet49/3", + "Ethernet49/4", + "Ethernet49/5", + "Ethernet49/6", + "Ethernet49/7", + "Ethernet49/8" + ] + } + }, + "Ethernet392": { + "index": "50,50,50,50,50,50,50,50", + "lanes": "505,506,507,508,509,510,511,512", + "breakout_modes": { + "1x400G": [ + "Ethernet50/1" + ], + "2x200G": [ + "Ethernet50/1", + "Ethernet50/5" + ], + "4x100G": [ + "Ethernet50/1", + "Ethernet50/3", + "Ethernet50/5", + "Ethernet50/7" + ], + "8x50G": [ + "Ethernet50/1", + "Ethernet50/2", + "Ethernet50/3", + "Ethernet50/4", + "Ethernet50/5", + "Ethernet50/6", + "Ethernet50/7", + "Ethernet50/8" + ] + } + }, + "Ethernet400": { + "index": "51,51,51,51,51,51,51,51", + "lanes": "489,490,491,492,493,494,495,496", + "breakout_modes": { + "1x400G": [ + "Ethernet51/1" + ], + "2x200G": [ + "Ethernet51/1", + "Ethernet51/5" + ], + "4x100G": [ + "Ethernet51/1", + "Ethernet51/3", + "Ethernet51/5", + "Ethernet51/7" + ], + "8x50G": [ + "Ethernet51/1", + "Ethernet51/2", + "Ethernet51/3", + "Ethernet51/4", + "Ethernet51/5", + "Ethernet51/6", + "Ethernet51/7", + "Ethernet51/8" + ] + } + }, + "Ethernet408": { + "index": "52,52,52,52,52,52,52,52", + "lanes": "481,482,483,484,485,486,487,488", + "breakout_modes": { + "1x400G": [ + "Ethernet52/1" + ], + "2x200G": [ + "Ethernet52/1", + "Ethernet52/5" + ], + "4x100G": [ + "Ethernet52/1", + "Ethernet52/3", + "Ethernet52/5", + "Ethernet52/7" + ], + "8x50G": [ + "Ethernet52/1", + "Ethernet52/2", + "Ethernet52/3", + "Ethernet52/4", + "Ethernet52/5", + "Ethernet52/6", + "Ethernet52/7", + "Ethernet52/8" + ] + } + }, + "Ethernet416": { + "index": "53,53,53,53,53,53,53,53", + "lanes": "473,474,475,476,477,478,479,480", + "breakout_modes": { + "1x400G": [ + "Ethernet53/1" + ], + "2x200G": [ + "Ethernet53/1", + "Ethernet53/5" + ], + "4x100G": [ + "Ethernet53/1", + "Ethernet53/3", + "Ethernet53/5", + "Ethernet53/7" + ], + "8x50G": [ + "Ethernet53/1", + "Ethernet53/2", + "Ethernet53/3", + "Ethernet53/4", + "Ethernet53/5", + "Ethernet53/6", + "Ethernet53/7", + "Ethernet53/8" + ] + } + }, + "Ethernet424": { + "index": "54,54,54,54,54,54,54,54", + "lanes": "417,418,419,420,421,422,423,424", + "breakout_modes": { + "1x400G": [ + "Ethernet54/1" + ], + "2x200G": [ + "Ethernet54/1", + "Ethernet54/5" + ], + "4x100G": [ + "Ethernet54/1", + "Ethernet54/3", + "Ethernet54/5", + "Ethernet54/7" + ], + "8x50G": [ + "Ethernet54/1", + "Ethernet54/2", + "Ethernet54/3", + "Ethernet54/4", + "Ethernet54/5", + "Ethernet54/6", + "Ethernet54/7", + "Ethernet54/8" + ] + } + }, + "Ethernet432": { + "index": "55,55,55,55,55,55,55,55", + "lanes": "465,466,467,468,469,470,471,472", + "breakout_modes": { + "1x400G": [ + "Ethernet55/1" + ], + "2x200G": [ + "Ethernet55/1", + "Ethernet55/5" + ], + "4x100G": [ + "Ethernet55/1", + "Ethernet55/3", + "Ethernet55/5", + "Ethernet55/7" + ], + "8x50G": [ + "Ethernet55/1", + "Ethernet55/2", + "Ethernet55/3", + "Ethernet55/4", + "Ethernet55/5", + "Ethernet55/6", + "Ethernet55/7", + "Ethernet55/8" + ] + } + }, + "Ethernet440": { + "index": "56,56,56,56,56,56,56,56", + "lanes": "433,434,435,436,437,438,439,440", + "breakout_modes": { + "1x400G": [ + "Ethernet56/1" + ], + "2x200G": [ + "Ethernet56/1", + "Ethernet56/5" + ], + "4x100G": [ + "Ethernet56/1", + "Ethernet56/3", + "Ethernet56/5", + "Ethernet56/7" + ], + "8x50G": [ + "Ethernet56/1", + "Ethernet56/2", + "Ethernet56/3", + "Ethernet56/4", + "Ethernet56/5", + "Ethernet56/6", + "Ethernet56/7", + "Ethernet56/8" + ] + } + }, + "Ethernet448": { + "index": "57,57,57,57,57,57,57,57", + "lanes": "457,458,459,460,461,462,463,464", + "breakout_modes": { + "1x400G": [ + "Ethernet57/1" + ], + "2x200G": [ + "Ethernet57/1", + "Ethernet57/5" + ], + "4x100G": [ + "Ethernet57/1", + "Ethernet57/3", + "Ethernet57/5", + "Ethernet57/7" + ], + "8x50G": [ + "Ethernet57/1", + "Ethernet57/2", + "Ethernet57/3", + "Ethernet57/4", + "Ethernet57/5", + "Ethernet57/6", + "Ethernet57/7", + "Ethernet57/8" + ] + } + }, + "Ethernet456": { + "index": "58,58,58,58,58,58,58,58", + "lanes": "425,426,427,428,429,430,431,432", + "breakout_modes": { + "1x400G": [ + "Ethernet58/1" + ], + "2x200G": [ + "Ethernet58/1", + "Ethernet58/5" + ], + "4x100G": [ + "Ethernet58/1", + "Ethernet58/3", + "Ethernet58/5", + "Ethernet58/7" + ], + "8x50G": [ + "Ethernet58/1", + "Ethernet58/2", + "Ethernet58/3", + "Ethernet58/4", + "Ethernet58/5", + "Ethernet58/6", + "Ethernet58/7", + "Ethernet58/8" + ] + } + }, + "Ethernet464": { + "index": "59,59,59,59,59,59,59,59", + "lanes": "449,450,451,452,453,454,455,456", + "breakout_modes": { + "1x400G": [ + "Ethernet59/1" + ], + "2x200G": [ + "Ethernet59/1", + "Ethernet59/5" + ], + "4x100G": [ + "Ethernet59/1", + "Ethernet59/3", + "Ethernet59/5", + "Ethernet59/7" + ], + "8x50G": [ + "Ethernet59/1", + "Ethernet59/2", + "Ethernet59/3", + "Ethernet59/4", + "Ethernet59/5", + "Ethernet59/6", + "Ethernet59/7", + "Ethernet59/8" + ] + } + }, + "Ethernet472": { + "index": "60,60,60,60,60,60,60,60", + "lanes": "441,442,443,444,445,446,447,448", + "breakout_modes": { + "1x400G": [ + "Ethernet60/1" + ], + "2x200G": [ + "Ethernet60/1", + "Ethernet60/5" + ], + "4x100G": [ + "Ethernet60/1", + "Ethernet60/3", + "Ethernet60/5", + "Ethernet60/7" + ], + "8x50G": [ + "Ethernet60/1", + "Ethernet60/2", + "Ethernet60/3", + "Ethernet60/4", + "Ethernet60/5", + "Ethernet60/6", + "Ethernet60/7", + "Ethernet60/8" + ] + } + }, + "Ethernet480": { + "index": "61,61,61,61,61,61,61,61", + "lanes": "385,386,387,388,389,390,391,392", + "breakout_modes": { + "1x400G": [ + "Ethernet61/1" + ], + "2x200G": [ + "Ethernet61/1", + "Ethernet61/5" + ], + "4x100G": [ + "Ethernet61/1", + "Ethernet61/3", + "Ethernet61/5", + "Ethernet61/7" + ], + "8x50G": [ + "Ethernet61/1", + "Ethernet61/2", + "Ethernet61/3", + "Ethernet61/4", + "Ethernet61/5", + "Ethernet61/6", + "Ethernet61/7", + "Ethernet61/8" + ] + } + }, + "Ethernet488": { + "index": "62,62,62,62,62,62,62,62", + "lanes": "401,402,403,404,405,406,407,408", + "breakout_modes": { + "1x400G": [ + "Ethernet62/1" + ], + "2x200G": [ + "Ethernet62/1", + "Ethernet62/5" + ], + "4x100G": [ + "Ethernet62/1", + "Ethernet62/3", + "Ethernet62/5", + "Ethernet62/7" + ], + "8x50G": [ + "Ethernet62/1", + "Ethernet62/2", + "Ethernet62/3", + "Ethernet62/4", + "Ethernet62/5", + "Ethernet62/6", + "Ethernet62/7", + "Ethernet62/8" + ] + } + }, + "Ethernet496": { + "index": "63,63,63,63,63,63,63,63", + "lanes": "393,394,395,396,397,398,399,400", + "breakout_modes": { + "1x400G": [ + "Ethernet63/1" + ], + "2x200G": [ + "Ethernet63/1", + "Ethernet63/5" + ], + "4x100G": [ + "Ethernet63/1", + "Ethernet63/3", + "Ethernet63/5", + "Ethernet63/7" + ], + "8x50G": [ + "Ethernet63/1", + "Ethernet63/2", + "Ethernet63/3", + "Ethernet63/4", + "Ethernet63/5", + "Ethernet63/6", + "Ethernet63/7", + "Ethernet63/8" + ] + } + }, + "Ethernet504": { + "index": "64,64,64,64,64,64,64,64", + "lanes": "409,410,411,412,413,414,415,416", + "breakout_modes": { + "1x400G": [ + "Ethernet64/1" + ], + "2x200G": [ + "Ethernet64/1", + "Ethernet64/5" + ], + "4x100G": [ + "Ethernet64/1", + "Ethernet64/3", + "Ethernet64/5", + "Ethernet64/7" + ], + "8x50G": [ + "Ethernet64/1", + "Ethernet64/2", + "Ethernet64/3", + "Ethernet64/4", + "Ethernet64/5", + "Ethernet64/6", + "Ethernet64/7", + "Ethernet64/8" + ] + } + }, + "Ethernet512": { + "index": "65", + "lanes": "513", + "breakout_modes": { + "1x10G": [ + "Ethernet65" + ] + } + }, + "Ethernet513": { + "index": "66", + "lanes": "515", + "breakout_modes": { + "1x10G": [ + "Ethernet66" + ] + } + } + }, "asic_sensors": { "poll_interval": "10", "poll_admin_status": "enable" diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t0.j2 b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t0.j2 index 4f04d24906ae..02e40e583605 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t0.j2 +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t0.j2 @@ -2,7 +2,7 @@ {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,128,4) %} + {%- for port_idx in range(0,256,8) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} {%- endfor %} {%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t1.j2 b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t1.j2 index 4f04d24906ae..02e40e583605 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t1.j2 +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/buffers_defaults_t1.j2 @@ -2,7 +2,7 @@ {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,128,4) %} + {%- for port_idx in range(0,256,8) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} {%- endfor %} {%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/hwsku.json b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/hwsku.json new file mode 100644 index 000000000000..253a78518e2e --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/hwsku.json @@ -0,0 +1,103 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + } + } +} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/media_settings.json b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/media_settings.json index 3e6dc7bb8e60..05454b77dfd2 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/media_settings.json +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/media_settings.json @@ -2391,4 +2391,4 @@ } } } -} \ No newline at end of file +} diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/port_config.ini b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/port_config.ini index 9430d33642f0..76192e775e81 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/port_config.ini +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/Nokia-IXR7220-H4-32D/port_config.ini @@ -1,35 +1,34 @@ -# name lanes alias index speed -Ethernet0 17,18,19,20,21,22,23,24 fourhundredGigE1/1 1 400000 -Ethernet4 25,26,27,28,29,30,31,32 fourhundredGigE1/2 2 400000 -Ethernet8 1,2,3,4,5,6,7,8 fourhundredGigE1/3 3 400000 -Ethernet12 9,10,11,12,13,14,15,16 fourhundredGigE1/4 4 400000 -Ethernet16 49,50,51,52,53,54,55,56 fourhundredGigE1/5 5 400000 -Ethernet20 57,58,59,60,61,62,63,64 fourhundredGigE1/6 6 400000 -Ethernet24 33,34,35,36,37,38,39,40 fourhundredGigE1/7 7 400000 -Ethernet28 41,42,43,44,45,46,47,48 fourhundredGigE1/8 8 400000 -Ethernet32 81,82,83,84,85,86,87,88 fourhundredGigE1/9 9 400000 -Ethernet36 89,90,91,92,93,94,95,96 fourhundredGigE1/10 10 400000 -Ethernet40 65,66,67,68,69,70,71,72 fourhundredGigE1/11 11 400000 -Ethernet44 73,74,75,76,77,78,79,80 fourhundredGigE1/12 12 400000 -Ethernet48 113,114,115,116,117,118,119,120 fourhundredGigE1/13 13 400000 -Ethernet52 121,122,123,124,125,126,127,128 fourhundredGigE1/14 14 400000 -Ethernet56 97,98,99,100,101,102,103,104 fourhundredGigE1/15 15 400000 -Ethernet60 105,106,107,108,109,110,111,112 fourhundredGigE1/16 16 400000 -Ethernet64 385,386,387,388,389,390,391,392 fourhundredGigE1/17 17 400000 -Ethernet68 393,394,395,396,397,398,399,400 fourhundredGigE1/18 18 400000 -Ethernet72 401,402,403,404,405,406,407,408 fourhundredGigE1/19 19 400000 -Ethernet76 409,410,411,412,413,414,415,416 fourhundredGigE1/20 20 400000 -Ethernet80 417,418,419,420,421,422,423,424 fourhundredGigE1/21 21 400000 -Ethernet84 425,426,427,428,429,430,431,432 fourhundredGigE1/22 22 400000 -Ethernet88 433,434,435,436,437,438,439,440 fourhundredGigE1/23 23 400000 -Ethernet92 441,442,443,444,445,446,447,448 fourhundredGigE1/24 24 400000 -Ethernet96 449,450,451,452,453,454,455,456 fourhundredGigE1/25 25 400000 -Ethernet100 457,458,459,460,461,462,463,464 fourhundredGigE1/26 26 400000 -Ethernet104 465,466,467,468,469,470,471,472 fourhundredGigE1/27 27 400000 -Ethernet108 473,474,475,476,477,478,479,480 fourhundredGigE1/28 28 400000 -Ethernet112 481,482,483,484,485,486,487,488 fourhundredGigE1/29 29 400000 -Ethernet116 489,490,491,492,493,494,495,496 fourhundredGigE1/30 30 400000 -Ethernet120 497,498,499,500,501,502,503,504 fourhundredGigE1/31 31 400000 -Ethernet124 505,506,507,508,509,510,511,512 fourhundredGigE1/32 32 400000 -Ethernet128 513 tenGigE1/33 33 10000 - +# name lanes alias index speed fec +Ethernet0 17,18,19,20,21,22,23,24 Ethernet1/1 1 400000 rs +Ethernet8 25,26,27,28,29,30,31,32 Ethernet2/1 2 400000 rs +Ethernet16 1,2,3,4,5,6,7,8 Ethernet3/1 3 400000 rs +Ethernet24 9,10,11,12,13,14,15,16 Ethernet4/1 4 400000 rs +Ethernet32 49,50,51,52,53,54,55,56 Ethernet5/1 5 400000 rs +Ethernet40 57,58,59,60,61,62,63,64 Ethernet6/1 6 400000 rs +Ethernet48 33,34,35,36,37,38,39,40 Ethernet7/1 7 400000 rs +Ethernet56 41,42,43,44,45,46,47,48 Ethernet8/1 8 400000 rs +Ethernet64 81,82,83,84,85,86,87,88 Ethernet9/1 9 400000 rs +Ethernet72 89,90,91,92,93,94,95,96 Ethernet10/1 10 400000 rs +Ethernet80 65,66,67,68,69,70,71,72 Ethernet11/1 11 400000 rs +Ethernet88 73,74,75,76,77,78,79,80 Ethernet12/1 12 400000 rs +Ethernet96 113,114,115,116,117,118,119,120 Ethernet13/1 13 400000 rs +Ethernet104 121,122,123,124,125,126,127,128 Ethernet14/1 14 400000 rs +Ethernet112 97,98,99,100,101,102,103,104 Ethernet15/1 15 400000 rs +Ethernet120 105,106,107,108,109,110,111,112 Ethernet16/1 16 400000 rs +Ethernet128 385,386,387,388,389,390,391,392 Ethernet17/1 17 400000 rs +Ethernet136 393,394,395,396,397,398,399,400 Ethernet18/1 18 400000 rs +Ethernet144 401,402,403,404,405,406,407,408 Ethernet19/1 19 400000 rs +Ethernet152 409,410,411,412,413,414,415,416 Ethernet20/1 20 400000 rs +Ethernet160 417,418,419,420,421,422,423,424 Ethernet21/1 21 400000 rs +Ethernet168 425,426,427,428,429,430,431,432 Ethernet22/1 22 400000 rs +Ethernet176 433,434,435,436,437,438,439,440 Ethernet23/1 23 400000 rs +Ethernet184 441,442,443,444,445,446,447,448 Ethernet24/1 24 400000 rs +Ethernet192 449,450,451,452,453,454,455,456 Ethernet25/1 25 400000 rs +Ethernet200 457,458,459,460,461,462,463,464 Ethernet26/1 26 400000 rs +Ethernet208 465,466,467,468,469,470,471,472 Ethernet27/1 27 400000 rs +Ethernet216 473,474,475,476,477,478,479,480 Ethernet28/1 28 400000 rs +Ethernet224 481,482,483,484,485,486,487,488 Ethernet29/1 29 400000 rs +Ethernet232 489,490,491,492,493,494,495,496 Ethernet30/1 30 400000 rs +Ethernet240 497,498,499,500,501,502,503,504 Ethernet31/1 31 400000 rs +Ethernet248 505,506,507,508,509,510,511,512 Ethernet32/1 32 400000 rs +Ethernet256 513 Ethernet33 33 10000 none diff --git a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/platform.json b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/platform.json index 99562f3deb5a..05c9831c6f43 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/platform.json +++ b/device/nokia/x86_64-nokia_ixr7220_h4_32d-r0/platform.json @@ -447,8 +447,945 @@ } ] }, - "interfaces": {}, - + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G": [ + "Ethernet1/1" + ], + "2x200G": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ], + "8x50G": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4", + "Ethernet1/5", + "Ethernet1/6", + "Ethernet1/7", + "Ethernet1/8" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G": [ + "Ethernet2/1" + ], + "2x200G": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ], + "8x50G": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4", + "Ethernet2/5", + "Ethernet2/6", + "Ethernet2/7", + "Ethernet2/8" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G": [ + "Ethernet3/1" + ], + "2x200G": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ], + "8x50G": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4", + "Ethernet3/5", + "Ethernet3/6", + "Ethernet3/7", + "Ethernet3/8" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G": [ + "Ethernet4/1" + ], + "2x200G": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ], + "8x50G": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4", + "Ethernet4/5", + "Ethernet4/6", + "Ethernet4/7", + "Ethernet4/8" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G": [ + "Ethernet5/1" + ], + "2x200G": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ], + "8x50G": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4", + "Ethernet5/5", + "Ethernet5/6", + "Ethernet5/7", + "Ethernet5/8" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G": [ + "Ethernet6/1" + ], + "2x200G": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ], + "8x50G": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4", + "Ethernet6/5", + "Ethernet6/6", + "Ethernet6/7", + "Ethernet6/8" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G": [ + "Ethernet7/1" + ], + "2x200G": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ], + "8x50G": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4", + "Ethernet7/5", + "Ethernet7/6", + "Ethernet7/7", + "Ethernet7/8" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G": [ + "Ethernet8/1" + ], + "2x200G": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ], + "8x50G": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4", + "Ethernet8/5", + "Ethernet8/6", + "Ethernet8/7", + "Ethernet8/8" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G": [ + "Ethernet9/1" + ], + "2x200G": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ], + "8x50G": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4", + "Ethernet9/5", + "Ethernet9/6", + "Ethernet9/7", + "Ethernet9/8" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G": [ + "Ethernet10/1" + ], + "2x200G": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ], + "8x50G": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4", + "Ethernet10/5", + "Ethernet10/6", + "Ethernet10/7", + "Ethernet10/8" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G": [ + "Ethernet11/1" + ], + "2x200G": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ], + "8x50G": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4", + "Ethernet11/5", + "Ethernet11/6", + "Ethernet11/7", + "Ethernet11/8" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G": [ + "Ethernet12/1" + ], + "2x200G": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ], + "8x50G": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4", + "Ethernet12/5", + "Ethernet12/6", + "Ethernet12/7", + "Ethernet12/8" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G": [ + "Ethernet13/1" + ], + "2x200G": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ], + "8x50G": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4", + "Ethernet13/5", + "Ethernet13/6", + "Ethernet13/7", + "Ethernet13/8" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G": [ + "Ethernet14/1" + ], + "2x200G": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ], + "8x50G": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4", + "Ethernet14/5", + "Ethernet14/6", + "Ethernet14/7", + "Ethernet14/8" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G": [ + "Ethernet15/1" + ], + "2x200G": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ], + "8x50G": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4", + "Ethernet15/5", + "Ethernet15/6", + "Ethernet15/7", + "Ethernet15/8" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G": [ + "Ethernet16/1" + ], + "2x200G": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ], + "8x50G": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4", + "Ethernet16/5", + "Ethernet16/6", + "Ethernet16/7", + "Ethernet16/8" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "385,386,387,388,389,390,391,392", + "breakout_modes": { + "1x400G": [ + "Ethernet17/1" + ], + "2x200G": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ], + "8x50G": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4", + "Ethernet17/5", + "Ethernet17/6", + "Ethernet17/7", + "Ethernet17/8" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "393,394,395,396,397,398,399,400", + "breakout_modes": { + "1x400G": [ + "Ethernet18/1" + ], + "2x200G": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ], + "8x50G": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4", + "Ethernet18/5", + "Ethernet18/6", + "Ethernet18/7", + "Ethernet18/8" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "401,402,403,404,405,406,407,408", + "breakout_modes": { + "1x400G": [ + "Ethernet19/1" + ], + "2x200G": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ], + "8x50G": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4", + "Ethernet19/5", + "Ethernet19/6", + "Ethernet19/7", + "Ethernet19/8" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "409,410,411,412,413,414,415,416", + "breakout_modes": { + "1x400G": [ + "Ethernet20/1" + ], + "2x200G": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ], + "8x50G": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4", + "Ethernet20/5", + "Ethernet20/6", + "Ethernet20/7", + "Ethernet20/8" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "417,418,419,420,421,422,423,424", + "breakout_modes": { + "1x400G": [ + "Ethernet21/1" + ], + "2x200G": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ], + "8x50G": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4", + "Ethernet21/5", + "Ethernet21/6", + "Ethernet21/7", + "Ethernet21/8" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "425,426,427,428,429,430,431,432", + "breakout_modes": { + "1x400G": [ + "Ethernet22/1" + ], + "2x200G": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ], + "8x50G": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4", + "Ethernet22/5", + "Ethernet22/6", + "Ethernet22/7", + "Ethernet22/8" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "433,434,435,436,437,438,439,440", + "breakout_modes": { + "1x400G": [ + "Ethernet23/1" + ], + "2x200G": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ], + "8x50G": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4", + "Ethernet23/5", + "Ethernet23/6", + "Ethernet23/7", + "Ethernet23/8" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "441,442,443,444,445,446,447,448", + "breakout_modes": { + "1x400G": [ + "Ethernet24/1" + ], + "2x200G": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ], + "8x50G": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4", + "Ethernet24/5", + "Ethernet24/6", + "Ethernet24/7", + "Ethernet24/8" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "449,450,451,452,453,454,455,456", + "breakout_modes": { + "1x400G": [ + "Ethernet25/1" + ], + "2x200G": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ], + "8x50G": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4", + "Ethernet25/5", + "Ethernet25/6", + "Ethernet25/7", + "Ethernet25/8" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "457,458,459,460,461,462,463,464", + "breakout_modes": { + "1x400G": [ + "Ethernet26/1" + ], + "2x200G": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ], + "8x50G": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4", + "Ethernet26/5", + "Ethernet26/6", + "Ethernet26/7", + "Ethernet26/8" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "465,466,467,468,469,470,471,472", + "breakout_modes": { + "1x400G": [ + "Ethernet27/1" + ], + "2x200G": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ], + "8x50G": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4", + "Ethernet27/5", + "Ethernet27/6", + "Ethernet27/7", + "Ethernet27/8" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "473,474,475,476,477,478,479,480", + "breakout_modes": { + "1x400G": [ + "Ethernet28/1" + ], + "2x200G": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ], + "8x50G": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4", + "Ethernet28/5", + "Ethernet28/6", + "Ethernet28/7", + "Ethernet28/8" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "481,482,483,484,485,486,487,488", + "breakout_modes": { + "1x400G": [ + "Ethernet29/1" + ], + "2x200G": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ], + "8x50G": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4", + "Ethernet29/5", + "Ethernet29/6", + "Ethernet29/7", + "Ethernet29/8" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "489,490,491,492,493,494,495,496", + "breakout_modes": { + "1x400G": [ + "Ethernet30/1" + ], + "2x200G": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ], + "8x50G": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4", + "Ethernet30/5", + "Ethernet30/6", + "Ethernet30/7", + "Ethernet30/8" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "497,498,499,500,501,502,503,504", + "breakout_modes": { + "1x400G": [ + "Ethernet31/1" + ], + "2x200G": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ], + "8x50G": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4", + "Ethernet31/5", + "Ethernet31/6", + "Ethernet31/7", + "Ethernet31/8" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "505,506,507,508,509,510,511,512", + "breakout_modes": { + "1x400G": [ + "Ethernet32/1" + ], + "2x200G": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ], + "8x50G": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4", + "Ethernet32/5", + "Ethernet32/6", + "Ethernet32/7", + "Ethernet32/8" + ] + } + }, + "Ethernet256": { + "index": "33", + "lanes": "513", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + } + }, "asic_sensors": { "poll_interval": "10", "poll_admin_status": "enable" diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffer_ports.j2 b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffer_ports.j2 new file mode 100644 index 000000000000..25a254905a53 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffer_ports.j2 @@ -0,0 +1,7 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0, 512, 8) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} + {% if PORT_ALL.append("Ethernet513") %}{% endif %} +{%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers.json.j2 b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers.json.j2 new file mode 100644 index 000000000000..0b1cb2c541b6 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers.json.j2 @@ -0,0 +1,2 @@ +{%- set default_topo = 't1' %} +{%- include 'buffers_config.j2' %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t0.j2 b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..e28dd965a51b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t0.j2 @@ -0,0 +1,36 @@ +{%- set default_cable = '5m' %} + +{%- include 'buffer_ports.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "161176208", + "type": "ingress", + "mode": "dynamic", + "xoff": "29520896" + }, + "egress_lossless_pool": { + "size": "161176208", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + }, + "egress_lossy_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "dynamic_th":"-4" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t1.j2 b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..e28dd965a51b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/buffers_defaults_t1.j2 @@ -0,0 +1,36 @@ +{%- set default_cable = '5m' %} + +{%- include 'buffer_ports.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "161176208", + "type": "ingress", + "mode": "dynamic", + "xoff": "29520896" + }, + "egress_lossless_pool": { + "size": "161176208", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + }, + "egress_lossy_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "dynamic_th":"-4" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64Dx400g.yml b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64dx400g.yml similarity index 89% rename from device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64Dx400g.yml rename to device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64dx400g.yml index a3efe8918d0e..878ceacffd4b 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64Dx400g.yml +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/h5_64dx400g.yml @@ -1,8 +1,48 @@ # -# $Copyright: (c) 2022-2023 Delta Electronics, INC. -# Delta Electronics, INC. Proprietary and Confidential. All rights reserved. +# $Copyright: (c) 2022 Broadcom. +# Broadcom Proprietary and Confidential. All rights reserved.$ +# +# BCM78900 64x800g port configuration. +# +# configuration yaml file +# device: +# : +# : +# ? +# : +# : +# ... +# : +# : +# : +# : +# ... +# : # +--- +bcm_device: + 0: + global: + pktio_mode: 1 + vlan_flooding_l2mc_num_reserved: 0 + ipv6_lpm_128b_enable: 1 + shared_block_mask_section: uc_bc + skip_protocol_default_entries: 1 + # LTSW uses value 1 for ALPM combined mode + l3_alpm_template: 1 + l3_alpm_hit_skip: 1 + sai_feat_tail_timestamp : 1 + sai_port_phy_time_sync_en : 1 + sai_field_group_auto_prioritize: 1 + #l3_intf_vlan_split_egress for MTU at L3IF + l3_intf_vlan_split_egress : 1 + pfc_deadlock_seq_control : 1 + sai_tunnel_support: 2 + bcm_tunnel_term_compatible_mode: 1 + l3_ecmp_member_first_lkup_mem_size: 12288 + default_cpu_tx_queue: 7 + sai_l3_byte1_udf_disable: 1 --- device: 0: @@ -775,6 +815,18 @@ device: TX_LANE_MAP: 0x34702561 RX_POLARITY_FLIP: 0x6A TX_POLARITY_FLIP: 0x84 + ? + PC_PM_ID: 65 + CORE_INDEX: 0 + : + RX_LANE_MAP_AUTO: 0 + TX_LANE_MAP_AUTO: 0 + RX_POLARITY_FLIP_AUTO: 0 + TX_POLARITY_FLIP_AUTO: 0 + RX_LANE_MAP: 0x3210 + TX_LANE_MAP: 0x3210 + RX_POLARITY_FLIP: 0x04 + TX_POLARITY_FLIP: 0x00 ... --- device: @@ -1042,14 +1094,6 @@ device: : PC_PHYS_PORT_ID: 505 # mgmt port - ? - PORT_ID: 76 - : - PC_PHYS_PORT_ID: 513 - ? - PORT_ID: 164 - : - PC_PHYS_PORT_ID: 514 ? PORT_ID: 186 : @@ -1104,18 +1148,92 @@ device: [330, 331], [341, 342]] : - ENABLE: 1 + ENABLE: 0 SPEED: 400000 - NUM_LANES: 8 + NUM_LANES: 4 FEC_MODE: PC_FEC_RS544_2XN MAX_FRAME_SIZE: 9416 - LINK_TRAINING: 1 + LINK_TRAINING: 0 ? - PORT_ID: [76, 164, 186, 274] + PORT_ID: [274, 186] : - ENABLE: 1 + ENABLE: 0 SPEED: 10000 NUM_LANES: 1 MAX_FRAME_SIZE: 9416 ... +--- +bcm_device: + 0: + global: + ftem_mem_entries: 65536 +... +--- +device: + 0: + # Per pipe flex counter configuration + CTR_EFLEX_CONFIG: + CTR_ING_EFLEX_OPERMODE_PIPEUNIQUE: 0 + CTR_EGR_EFLEX_OPERMODE_PIPEUNIQUE: 0 + + # IFP mode + FP_CONFIG: + FP_ING_OPERMODE: GLOBAL_PIPE_AWARE +... +--- +device: + 0: + DEVICE_CONFIG: + AUTOLOAD_BOARD_SETTINGS: 0 +... +--- +device: + 0: + TM_THD_CONFIG: + THRESHOLD_MODE: LOSSY_AND_LOSSLESS +... +--- +device: + 0: + TM_ING_PORT_PRI_GRP: + ? + PORT_ID: [[1, 2], + [11, 12], + [22, 23], + [33, 34], + [44, 45], + [55, 56], + [66, 67], + [77, 78], + [88, 89], + [99, 100], + [110, 111], + [121, 122], + [132, 133], + [143, 144], + [154, 155], + [165, 166], + [176, 177], + 186, + [187, 188], + [198, 199], + [209, 210], + [220, 221], + [231, 232], + [242, 243], + [253, 254], + [264, 265], + 274, + [275, 276], + [286, 287], + [297, 298], + [308, 309], + [319, 320], + [330, 331], + [341, 342]] + TM_PRI_GRP_ID: [3,4] + : + PFC: 1 + LOSSLESS: 1 +... diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/hwsku.json b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/hwsku.json new file mode 100644 index 000000000000..a186d539b50c --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/hwsku.json @@ -0,0 +1,203 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G" + }, + "Ethernet256": { + "default_brkout_mode": "1x400G" + }, + "Ethernet264": { + "default_brkout_mode": "1x400G" + }, + "Ethernet272": { + "default_brkout_mode": "1x400G" + }, + "Ethernet280": { + "default_brkout_mode": "1x400G" + }, + "Ethernet288": { + "default_brkout_mode": "1x400G" + }, + "Ethernet296": { + "default_brkout_mode": "1x400G" + }, + "Ethernet304": { + "default_brkout_mode": "1x400G" + }, + "Ethernet312": { + "default_brkout_mode": "1x400G" + }, + "Ethernet320": { + "default_brkout_mode": "1x400G" + }, + "Ethernet328": { + "default_brkout_mode": "1x400G" + }, + "Ethernet336": { + "default_brkout_mode": "1x400G" + }, + "Ethernet344": { + "default_brkout_mode": "1x400G" + }, + "Ethernet352": { + "default_brkout_mode": "1x400G" + }, + "Ethernet360": { + "default_brkout_mode": "1x400G" + }, + "Ethernet368": { + "default_brkout_mode": "1x400G" + }, + "Ethernet376": { + "default_brkout_mode": "1x400G" + }, + "Ethernet384": { + "default_brkout_mode": "1x400G" + }, + "Ethernet392": { + "default_brkout_mode": "1x400G" + }, + "Ethernet400": { + "default_brkout_mode": "1x400G" + }, + "Ethernet408": { + "default_brkout_mode": "1x400G" + }, + "Ethernet416": { + "default_brkout_mode": "1x400G" + }, + "Ethernet424": { + "default_brkout_mode": "1x400G" + }, + "Ethernet432": { + "default_brkout_mode": "1x400G" + }, + "Ethernet440": { + "default_brkout_mode": "1x400G" + }, + "Ethernet448": { + "default_brkout_mode": "1x400G" + }, + "Ethernet456": { + "default_brkout_mode": "1x400G" + }, + "Ethernet464": { + "default_brkout_mode": "1x400G" + }, + "Ethernet472": { + "default_brkout_mode": "1x400G" + }, + "Ethernet480": { + "default_brkout_mode": "1x400G" + }, + "Ethernet488": { + "default_brkout_mode": "1x400G" + }, + "Ethernet496": { + "default_brkout_mode": "1x400G" + }, + "Ethernet504": { + "default_brkout_mode": "1x400G" + }, + "Ethernet512": { + "default_brkout_mode": "1x10G" + }, + "Ethernet513": { + "default_brkout_mode": "1x10G" + } + } +} + diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/media_settings.json b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/media_settings.json new file mode 100644 index 000000000000..07e8f2f46dc2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/media_settings.json @@ -0,0 +1,8240 @@ +{ + "PORT_MEDIA_SETTINGS": { + "1": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "2": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "3": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "4": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "5": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "6": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "7": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "8": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "9": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x88", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "10": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "11": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "12": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "13": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x0", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "14": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "15": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "16": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "17": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "18": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x90", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "19": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x0", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "20": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "21": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "22": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "23": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x0", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "24": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "25": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "26": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "27": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "28": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "29": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "30": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "31": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "32": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "33": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "34": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "35": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "36": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "37": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "38": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x7C", + "lane1": "0x7C", + "lane2": "0x7C", + "lane3": "0x7C", + "lane4": "0x7C", + "lane5": "0x7C", + "lane6": "0x7C", + "lane7": "0x7C" + }, + "post1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "39": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "40": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "41": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "42": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "43": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "44": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "45": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x94", + "lane1": "0x94", + "lane2": "0x94", + "lane3": "0x94", + "lane4": "0x94", + "lane5": "0x94", + "lane6": "0x94", + "lane7": "0x94" + }, + "post1": { + "lane0": "0xFFFFFFF4", + "lane1": "0xFFFFFFF4", + "lane2": "0xFFFFFFF4", + "lane3": "0xFFFFFFF4", + "lane4": "0xFFFFFFF4", + "lane5": "0xFFFFFFF4", + "lane6": "0xFFFFFFF4", + "lane7": "0xFFFFFFF4" + }, + "post2": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "46": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x94", + "lane1": "0x94", + "lane2": "0x94", + "lane3": "0x94", + "lane4": "0x94", + "lane5": "0x94", + "lane6": "0x94", + "lane7": "0x94" + }, + "post1": { + "lane0": "0xFFFFFFF4", + "lane1": "0xFFFFFFF4", + "lane2": "0xFFFFFFF4", + "lane3": "0xFFFFFFF4", + "lane4": "0xFFFFFFF4", + "lane5": "0xFFFFFFF4", + "lane6": "0xFFFFFFF4", + "lane7": "0xFFFFFFF4" + }, + "post2": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "47": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x94", + "lane1": "0x94", + "lane2": "0x94", + "lane3": "0x94", + "lane4": "0x94", + "lane5": "0x94", + "lane6": "0x94", + "lane7": "0x94" + }, + "post1": { + "lane0": "0xFFFFFFF4", + "lane1": "0xFFFFFFF4", + "lane2": "0xFFFFFFF4", + "lane3": "0xFFFFFFF4", + "lane4": "0xFFFFFFF4", + "lane5": "0xFFFFFFF4", + "lane6": "0xFFFFFFF4", + "lane7": "0xFFFFFFF4" + }, + "post2": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "48": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "49": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "50": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE0", + "lane1": "0xFFFFFFE0", + "lane2": "0xFFFFFFE0", + "lane3": "0xFFFFFFE0", + "lane4": "0xFFFFFFE0", + "lane5": "0xFFFFFFE0", + "lane6": "0xFFFFFFE0", + "lane7": "0xFFFFFFE0" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "51": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "52": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "53": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "54": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "55": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "56": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "57": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "58": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "59": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0xFFFFFFF0", + "lane1": "0xFFFFFFF0", + "lane2": "0xFFFFFFF0", + "lane3": "0xFFFFFFF0", + "lane4": "0xFFFFFFF0", + "lane5": "0xFFFFFFF0", + "lane6": "0xFFFFFFF0", + "lane7": "0xFFFFFFF0" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "60": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "61": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "62": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x8C", + "lane1": "0x8C", + "lane2": "0x8C", + "lane3": "0x8C", + "lane4": "0x8C", + "lane5": "0x8C", + "lane6": "0x8C", + "lane7": "0x8C" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE8", + "lane1": "0xFFFFFFE8", + "lane2": "0xFFFFFFE8", + "lane3": "0xFFFFFFE8", + "lane4": "0xFFFFFFE8", + "lane5": "0xFFFFFFE8", + "lane6": "0xFFFFFFE8", + "lane7": "0xFFFFFFE8" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "63": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "64": { + "Default": { + "speed:400GAUI-8|400G": { + "main": { + "lane0": "0x84", + "lane1": "0x84", + "lane2": "0x84", + "lane3": "0x84", + "lane4": "0x84", + "lane5": "0x84", + "lane6": "0x84", + "lane7": "0x84" + }, + "post1": { + "lane0": "0xFFFFFFEC", + "lane1": "0xFFFFFFEC", + "lane2": "0xFFFFFFEC", + "lane3": "0xFFFFFFEC", + "lane4": "0xFFFFFFEC", + "lane5": "0xFFFFFFEC", + "lane6": "0xFFFFFFEC", + "lane7": "0xFFFFFFEC" + }, + "post2": { + "lane0": "0xFFFFFFF8", + "lane1": "0xFFFFFFF8", + "lane2": "0xFFFFFFF8", + "lane3": "0xFFFFFFF8", + "lane4": "0xFFFFFFF8", + "lane5": "0xFFFFFFF8", + "lane6": "0xFFFFFFF8", + "lane7": "0xFFFFFFF8" + }, + "pre1": { + "lane0": "0xFFFFFFFC", + "lane1": "0xFFFFFFFC", + "lane2": "0xFFFFFFFC", + "lane3": "0xFFFFFFFC", + "lane4": "0xFFFFFFFC", + "lane5": "0xFFFFFFFC", + "lane6": "0xFFFFFFFC", + "lane7": "0xFFFFFFFC" + }, + "pre2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + }, + "speed:800GAUI-8|800G|100GAUI-1-L": { + "main": { + "lane0": "0x88", + "lane1": "0x88", + "lane2": "0x88", + "lane3": "0x88", + "lane4": "0x88", + "lane5": "0x88", + "lane6": "0x88", + "lane7": "0x88" + }, + "post1": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "post2": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + }, + "pre1": { + "lane0": "0xFFFFFFE4", + "lane1": "0xFFFFFFE4", + "lane2": "0xFFFFFFE4", + "lane3": "0xFFFFFFE4", + "lane4": "0xFFFFFFE4", + "lane5": "0xFFFFFFE4", + "lane6": "0xFFFFFFE4", + "lane7": "0xFFFFFFE4" + }, + "pre2": { + "lane0": "0x4", + "lane1": "0x4", + "lane2": "0x4", + "lane3": "0x4", + "lane4": "0x4", + "lane5": "0x4", + "lane6": "0x4", + "lane7": "0x4" + }, + "pre3": { + "lane0": "0x0", + "lane1": "0x0", + "lane2": "0x0", + "lane3": "0x0", + "lane4": "0x0", + "lane5": "0x0", + "lane6": "0x0", + "lane7": "0x0" + } + } + } + }, + "65": { + "Default": { + "main": { + "lane0": "0x11" + }, + "post1": { + "lane0": "0x4" + }, + "post2": { + "lane0": "0x0" + }, + "post3": { + "lane0": "0x0" + }, + "pre1": { + "lane0": "0x1" + }, + "pre2": { + "lane0": "0x0" + } + } + }, + "66": { + "Default": { + "main": { + "lane0": "0x11" + }, + "post1": { + "lane0": "0x5" + }, + "post2": { + "lane0": "0x0" + }, + "post3": { + "lane0": "0x0" + }, + "pre1": { + "lane0": "0x1" + }, + "pre2": { + "lane0": "0x0" + } + } + } + } +} \ No newline at end of file diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/pg_profile_lookup.ini b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/pg_profile_lookup.ini new file mode 100644 index 000000000000..4dc3bdd5d22f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/pg_profile_lookup.ini @@ -0,0 +1,24 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 35776 0 2288 + 25000 5m 1248 2288 53248 0 2288 + 40000 5m 1248 2288 66560 0 2288 + 50000 5m 1248 2288 90272 0 2288 + 100000 5m 1248 2288 165568 0 2288 + 400000 5m 1248 2288 307848 0 2288 + 800000 5m 1248 2288 572516 0 2288 + 10000 40m 1248 2288 37024 0 2288 + 25000 40m 1248 2288 53248 0 2288 + 40000 40m 1248 2288 71552 0 2288 + 50000 40m 1248 2288 96096 0 2288 + 100000 40m 1248 2288 177632 0 2288 + 400000 40m 1248 2288 330200 0 2288 + 800000 40m 1248 2288 614172 0 2288 + 10000 300m 1248 2288 46176 0 2288 + 25000 300m 1248 2288 79040 0 2288 + 40000 300m 1248 2288 108160 0 2288 + 50000 300m 1248 2288 141856 0 2288 + 100000 300m 1248 2288 268736 0 2288 + 400000 300m 1248 2288 499618 0 2288 + 800000 300m 1248 2288 929132 0 2288 + \ No newline at end of file diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/port_config.ini b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/port_config.ini index 40e197e5fc26..ce4a10693634 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/port_config.ini +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/port_config.ini @@ -1,68 +1,67 @@ -# name lanes alias index speed -Ethernet0 17,18,19,20,21,22,23,24 fourhundredGigE1/1 1 400000 -Ethernet4 25,26,27,28,29,30,31,32 fourhundredGigE1/2 2 400000 -Ethernet8 1,2,3,4,5,6,7,8 fourhundredGigE1/3 3 400000 -Ethernet12 9,10,11,12,13,14,15,16 fourhundredGigE1/4 4 400000 -Ethernet16 49,50,51,52,53,54,55,56 fourhundredGigE1/5 5 400000 -Ethernet20 57,58,59,60,61,62,63,64 fourhundredGigE1/6 6 400000 -Ethernet24 33,34,35,36,37,38,39,40 fourhundredGigE1/7 7 400000 -Ethernet28 41,42,43,44,45,46,47,48 fourhundredGigE1/8 8 400000 -Ethernet32 81,82,83,84,85,86,87,88 fourhundredGigE1/9 9 400000 -Ethernet36 89,90,91,92,93,94,95,96 fourhundredGigE1/10 10 400000 -Ethernet40 65,66,67,68,69,70,71,72 fourhundredGigE1/11 11 400000 -Ethernet44 73,74,75,76,77,78,79,80 fourhundredGigE1/12 12 400000 -Ethernet48 113,114,115,116,117,118,119,120 fourhundredGigE1/13 13 400000 -Ethernet52 121,122,123,124,125,126,127,128 fourhundredGigE1/14 14 400000 -Ethernet56 97,98,99,100,101,102,103,104 fourhundredGigE1/15 15 400000 -Ethernet60 105,106,107,108,109,110,111,112 fourhundredGigE1/16 16 400000 -Ethernet64 129,130,131,132,133,134,135,136 fourhundredGigE1/17 17 400000 -Ethernet68 137,138,139,140,141,142,143,144 fourhundredGigE1/18 18 400000 -Ethernet72 145,146,147,148,149,150,151,152 fourhundredGigE1/19 19 400000 -Ethernet76 153,154,155,156,157,158,159,160 fourhundredGigE1/20 20 400000 -Ethernet80 161,162,163,164,165,166,167,168 fourhundredGigE1/21 21 400000 -Ethernet84 169,170,171,172,173,174,175,176 fourhundredGigE1/22 22 400000 -Ethernet88 177,178,179,180,181,182,183,184 fourhundredGigE1/23 23 400000 -Ethernet92 185,186,187,188,189,190,191,192 fourhundredGigE1/24 24 400000 -Ethernet96 193,194,195,196,197,198,199,200 fourhundredGigE1/25 25 400000 -Ethernet100 201,202,203,204,205,206,207,208 fourhundredGigE1/26 26 400000 -Ethernet104 209,210,211,212,213,214,215,216 fourhundredGigE1/27 27 400000 -Ethernet108 217,218,219,220,221,222,223,224 fourhundredGigE1/28 28 400000 -Ethernet112 225,226,227,228,229,230,231,232 fourhundredGigE1/29 29 400000 -Ethernet116 233,234,235,236,237,238,239,240 fourhundredGigE1/30 30 400000 -Ethernet120 241,242,243,244,245,246,247,248 fourhundredGigE1/31 31 400000 -Ethernet124 249,250,251,252,253,254,255,256 fourhundredGigE1/32 32 400000 -Ethernet128 257,258,259,260,261,262,263,264 fourhundredGigE1/33 33 400000 -Ethernet132 265,266,267,268,269,270,271,272 fourhundredGigE1/34 34 400000 -Ethernet136 273,274,275,276,277,278,279,280 fourhundredGigE1/35 35 400000 -Ethernet140 281,282,283,284,285,286,287,288 fourhundredGigE1/36 36 400000 -Ethernet144 289,290,291,292,293,294,295,296 fourhundredGigE1/37 37 400000 -Ethernet148 297,298,299,300,301,302,303,304 fourhundredGigE1/38 38 400000 -Ethernet152 305,306,307,308,309,310,311,312 fourhundredGigE1/39 39 400000 -Ethernet156 313,314,315,316,317,318,319,320 fourhundredGigE1/40 40 400000 -Ethernet160 321,322,323,324,325,326,327,328 fourhundredGigE1/41 41 400000 -Ethernet164 329,330,331,332,333,334,335,336 fourhundredGigE1/42 42 400000 -Ethernet168 337,338,339,340,341,342,343,344 fourhundredGigE1/43 43 400000 -Ethernet172 345,346,347,348,349,350,351,352 fourhundredGigE1/44 44 400000 -Ethernet176 353,354,355,356,357,358,359,360 fourhundredGigE1/45 45 400000 -Ethernet180 361,362,363,364,365,366,367,368 fourhundredGigE1/46 46 400000 -Ethernet184 369,370,371,372,373,374,375,376 fourhundredGigE1/47 47 400000 -Ethernet188 377,378,379,380,381,382,383,384 fourhundredGigE1/48 48 400000 -Ethernet192 385,386,387,388,389,390,391,392 fourhundredGigE1/49 49 400000 -Ethernet196 393,394,395,396,397,398,399,400 fourhundredGigE1/50 50 400000 -Ethernet200 401,402,403,404,405,406,407,408 fourhundredGigE1/51 51 400000 -Ethernet204 409,410,411,412,413,414,415,416 fourhundredGigE1/52 52 400000 -Ethernet208 417,418,419,420,421,422,423,424 fourhundredGigE1/53 53 400000 -Ethernet212 425,426,427,428,429,430,431,432 fourhundredGigE1/54 54 400000 -Ethernet216 433,434,435,436,437,438,439,440 fourhundredGigE1/55 55 400000 -Ethernet220 441,442,443,444,445,446,447,448 fourhundredGigE1/56 56 400000 -Ethernet224 449,450,451,452,453,454,455,456 fourhundredGigE1/57 57 400000 -Ethernet228 457,458,459,460,461,462,463,464 fourhundredGigE1/58 58 400000 -Ethernet232 465,466,467,468,469,470,471,472 fourhundredGigE1/59 59 400000 -Ethernet236 473,474,475,476,477,478,479,480 fourhundredGigE1/60 60 400000 -Ethernet240 481,482,483,484,485,486,487,488 fourhundredGigE1/61 61 400000 -Ethernet244 489,490,491,492,493,494,495,496 fourhundredGigE1/62 62 400000 -Ethernet248 497,498,499,500,501,502,503,504 fourhundredGigE1/63 63 400000 -Ethernet252 505,506,507,508,509,510,511,512 fourhundredGigE1/64 64 400000 -Ethernet256 513 tenGigE1/65 65 10000 -Ethernet257 514 tenGigE1/66 66 10000 - +# name lanes alias index speed fec +Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 rs +Ethernet8 17,18,19,20,21,22,23,24 Ethernet2/1 2 400000 rs +Ethernet16 33,34,35,36,37,38,39,40 Ethernet3/1 3 400000 rs +Ethernet24 49,50,51,52,53,54,55,56 Ethernet4/1 4 400000 rs +Ethernet32 65,66,67,68,69,70,71,72 Ethernet5/1 5 400000 rs +Ethernet40 81,82,83,84,85,86,87,88 Ethernet6/1 6 400000 rs +Ethernet48 97,98,99,100,101,102,103,104 Ethernet7/1 7 400000 rs +Ethernet56 113,114,115,116,117,118,119,120 Ethernet8/1 8 400000 rs +Ethernet64 129,130,131,132,133,134,135,136 Ethernet9/1 9 400000 rs +Ethernet72 145,146,147,148,149,150,151,152 Ethernet10/1 10 400000 rs +Ethernet80 161,162,163,164,165,166,167,168 Ethernet11/1 11 400000 rs +Ethernet88 177,178,179,180,181,182,183,184 Ethernet12/1 12 400000 rs +Ethernet96 193,194,195,196,197,198,199,200 Ethernet13/1 13 400000 rs +Ethernet104 209,210,211,212,213,214,215,216 Ethernet14/1 14 400000 rs +Ethernet112 233,234,235,236,237,238,239,240 Ethernet15/1 15 400000 rs +Ethernet120 249,250,251,252,253,254,255,256 Ethernet16/1 16 400000 rs +Ethernet128 273,274,275,276,277,278,279,280 Ethernet17/1 17 400000 rs +Ethernet136 257,258,259,260,261,262,263,264 Ethernet18/1 18 400000 rs +Ethernet144 313,314,315,316,317,318,319,320 Ethernet19/1 19 400000 rs +Ethernet152 297,298,299,300,301,302,303,304 Ethernet20/1 20 400000 rs +Ethernet160 345,346,347,348,349,350,351,352 Ethernet21/1 21 400000 rs +Ethernet168 329,330,331,332,333,334,335,336 Ethernet22/1 22 400000 rs +Ethernet176 377,378,379,380,381,382,383,384 Ethernet23/1 23 400000 rs +Ethernet184 361,362,363,364,365,366,367,368 Ethernet24/1 24 400000 rs +Ethernet192 409,410,411,412,413,414,415,416 Ethernet25/1 25 400000 rs +Ethernet200 393,394,395,396,397,398,399,400 Ethernet26/1 26 400000 rs +Ethernet208 441,442,443,444,445,446,447,448 Ethernet27/1 27 400000 rs +Ethernet216 425,426,427,428,429,430,431,432 Ethernet28/1 28 400000 rs +Ethernet224 473,474,475,476,477,478,479,480 Ethernet29/1 29 400000 rs +Ethernet232 457,458,459,460,461,462,463,464 Ethernet30/1 30 400000 rs +Ethernet240 505,506,507,508,509,510,511,512 Ethernet31/1 31 400000 rs +Ethernet248 489,490,491,492,493,494,495,496 Ethernet32/1 32 400000 rs +Ethernet256 25,26,27,28,29,30,31,32 Ethernet33/1 33 400000 rs +Ethernet264 9,10,11,12,13,14,15,16 Ethernet34/1 34 400000 rs +Ethernet272 57,58,59,60,61,62,63,64 Ethernet35/1 35 400000 rs +Ethernet280 41,42,43,44,45,46,47,48 Ethernet36/1 36 400000 rs +Ethernet288 89,90,91,92,93,94,95,96 Ethernet37/1 37 400000 rs +Ethernet296 73,74,75,76,77,78,79,80 Ethernet38/1 38 400000 rs +Ethernet304 121,122,123,124,125,126,127,128 Ethernet39/1 39 400000 rs +Ethernet312 105,106,107,108,109,110,111,112 Ethernet40/1 40 400000 rs +Ethernet320 153,154,155,156,157,158,159,160 Ethernet41/1 41 400000 rs +Ethernet328 137,138,139,140,141,142,143,144 Ethernet42/1 42 400000 rs +Ethernet336 185,186,187,188,189,190,191,192 Ethernet43/1 43 400000 rs +Ethernet344 169,170,171,172,173,174,175,176 Ethernet44/1 44 400000 rs +Ethernet352 217,218,219,220,221,222,223,224 Ethernet45/1 45 400000 rs +Ethernet360 201,202,203,204,205,206,207,208 Ethernet46/1 46 400000 rs +Ethernet368 241,242,243,244,245,246,247,248 Ethernet47/1 47 400000 rs +Ethernet376 225,226,227,228,229,230,231,232 Ethernet48/1 48 400000 rs +Ethernet384 265,266,267,268,269,270,271,272 Ethernet49/1 49 400000 rs +Ethernet392 281,282,283,284,285,286,287,288 Ethernet50/1 50 400000 rs +Ethernet400 289,290,291,292,293,294,295,296 Ethernet51/1 51 400000 rs +Ethernet408 305,306,307,308,309,310,311,312 Ethernet52/1 52 400000 rs +Ethernet416 321,322,323,324,325,326,327,328 Ethernet53/1 53 400000 rs +Ethernet424 337,338,339,340,341,342,343,344 Ethernet54/1 54 400000 rs +Ethernet432 353,354,355,356,357,358,359,360 Ethernet55/1 55 400000 rs +Ethernet440 369,370,371,372,373,374,375,376 Ethernet56/1 56 400000 rs +Ethernet448 385,386,387,388,389,390,391,392 Ethernet57/1 57 400000 rs +Ethernet456 401,402,403,404,405,406,407,408 Ethernet58/1 58 400000 rs +Ethernet464 417,418,419,420,421,422,423,424 Ethernet59/1 59 400000 rs +Ethernet472 433,434,435,436,437,438,439,440 Ethernet60/1 60 400000 rs +Ethernet480 449,450,451,452,453,454,455,456 Ethernet61/1 61 400000 rs +Ethernet488 465,466,467,468,469,470,471,472 Ethernet62/1 62 400000 rs +Ethernet496 481,482,483,484,485,486,487,488 Ethernet63/1 63 400000 rs +Ethernet504 497,498,499,500,501,502,503,504 Ethernet64/1 64 400000 rs +Ethernet512 515 Ethernet65 65 10000 none +Ethernet513 516 Ethernet66 66 10000 none diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/qos.json.j2 b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/Nokia-IXR7220-H5-64D/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/custom_led.bin b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/custom_led.bin new file mode 100644 index 0000000000000000000000000000000000000000..f78a678ddc34e916e950d85d2aefbd66bd726928 GIT binary patch literal 608 zcmWmAKWGzS7zXh7OA0m!TC0drDR;Swh9gL<9b%STF1~Vx2)Xzt?RD@PkPF43xU^f^ z$&AgGKZ6CA)5RQADC*F$F1_Gl5G5r;C{(#R2;F=#{NUqzKc4U54R(IJ+igXG6ZhXZ5zXDI1h6yewB| z#`k7a+?!sT!n77M>7qV&N^ggWek3w_v!6F7u$2>%Q8 yfE2`G0Ss7&Dm0-EyWm0}_TdzcAOca4Aqg53!G=}XfGyaDF6==M4&ekQ(BVI%zn1v` literal 0 HcmV?d00001 diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/led_proc_init.soc b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/led_proc_init.soc new file mode 100644 index 000000000000..eda09a0dd1f2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/led_proc_init.soc @@ -0,0 +1,4 @@ +led stop +led load /usr/share/sonic/platform/custom_led.bin +led auto on +led start diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/pcie.yaml b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/pcie.yaml new file mode 100644 index 000000000000..c92cc53e646d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/pcie.yaml @@ -0,0 +1,225 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 14b5 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Root + Complex (rev 01)' +- bus: '00' + dev: '00' + fn: '2' + id: 14b6 + name: 'IOMMU: Advanced Micro Devices, Inc. [AMD] Family 17h-19h IOMMU' +- bus: '00' + dev: '01' + fn: '0' + id: 14b7 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy + Host Bridge (rev 01)' +- bus: '00' + dev: '01' + fn: '1' + id: 14b8 + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '2' + id: 14b8 + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe GPP Bridge' +- bus: '00' + dev: '02' + fn: '0' + id: 14b7 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy + Host Bridge (rev 01)' +- bus: '00' + dev: '02' + fn: '1' + id: 14ba + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe GPP Bridge' +- bus: '00' + dev: '03' + fn: '0' + id: 14b7 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy + Host Bridge (rev 01)' +- bus: '00' + dev: '04' + fn: '0' + id: 14b7 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy + Host Bridge (rev 01)' +- bus: '00' + dev: 08 + fn: '0' + id: 14b7 + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h PCIe Dummy + Host Bridge (rev 01)' +- bus: '00' + dev: 08 + fn: '1' + id: 14b9 + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h Internal PCIe + GPP Bridge (rev 10)' +- bus: '00' + dev: 08 + fn: '2' + id: 14b9 + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h Internal PCIe + GPP Bridge (rev 10)' +- bus: '00' + dev: 08 + fn: '3' + id: 14b9 + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h-19h Internal PCIe + GPP Bridge (rev 10)' +- bus: '00' + dev: '14' + fn: '0' + id: 790b + name: 'SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 71)' +- bus: '00' + dev: '14' + fn: '3' + id: 790e + name: 'ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)' +- bus: '00' + dev: '18' + fn: '0' + id: '1679' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 0' +- bus: '00' + dev: '18' + fn: '1' + id: 167a + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 1' +- bus: '00' + dev: '18' + fn: '2' + id: 167b + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 2' +- bus: '00' + dev: '18' + fn: '3' + id: 167c + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 3' +- bus: '00' + dev: '18' + fn: '4' + id: 167d + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 4' +- bus: '00' + dev: '18' + fn: '5' + id: 167e + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 5' +- bus: '00' + dev: '18' + fn: '6' + id: 167f + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 6' +- bus: '00' + dev: '18' + fn: '7' + id: '1680' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Rembrandt Data Fabric: Device + 18h; Function 7' +- bus: '01' + dev: '00' + fn: '0' + id: '1533' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev + 03)' +- bus: '02' + dev: '00' + fn: '0' + id: 9c1d + name: 'Unassigned class [ff00]: Lattice Semiconductor Corporation Device 9c1d (rev + 01)' +- bus: '03' + dev: '00' + fn: '0' + id: f900 + name: 'Ethernet controller: Broadcom Inc. and subsidiaries BCM78900 Switch ASIC + [Tomahawk5] (rev 11)' +- bus: '04' + dev: '00' + fn: '0' + id: 145a + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD/ATI] + Dummy Function (absent graphics controller)' +- bus: '04' + dev: '00' + fn: '2' + id: '1649' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] VanGogh PSP/CCP' +- bus: '04' + dev: '00' + fn: '3' + id: 161d + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller + #3' +- bus: '04' + dev: '00' + fn: '4' + id: 161e + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller + #4' +- bus: '04' + dev: '00' + fn: '5' + id: 15e2 + name: 'Multimedia controller: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x + Audio Coprocessor (rev 60)' +- bus: '04' + dev: '00' + fn: '6' + id: 15e3 + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio + Controller' +- bus: '04' + dev: '00' + fn: '7' + id: 15e4 + name: 'Signal processing controller: Advanced Micro Devices, Inc. [AMD] Sensor Fusion + Hub' +- bus: '05' + dev: '00' + fn: '0' + id: '7901' + name: 'SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI + mode] (rev a1)' +- bus: '05' + dev: '00' + fn: '2' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] XGMAC 10GbE Controller' +- bus: '05' + dev: '00' + fn: '3' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] XGMAC 10GbE Controller' +- bus: '06' + dev: '00' + fn: '0' + id: 161f + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller + #8' +- bus: '06' + dev: '00' + fn: '3' + id: 15d6 + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller + #5' +- bus: '06' + dev: '00' + fn: '4' + id: 15d7 + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Rembrandt USB4 XHCI controller + #6' diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform.json b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform.json index b330c66ff380..4870d494c9c7 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform.json +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform.json @@ -2,6 +2,9 @@ "chassis": { "name": "7220 IXR-H5-64D", "components": [ + { + "name": "BIOS" + }, { "name": "CPUPLD" }, @@ -179,7 +182,7 @@ ], "thermals": [ { - "name": "MB Left", + "name": "CPU Board", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -194,6 +197,14 @@ "low-crit-threshold": false, "high-crit-threshold": true }, + { + "name": "PSU Top", + "controllable": false, + "low-threshold": false, + "high-threshold": true, + "low-crit-threshold": false, + "high-crit-threshold": true + }, { "name": "MB Right", "controllable": false, @@ -211,7 +222,7 @@ "high-crit-threshold": true }, { - "name": "PSU top", + "name": "MB Left", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -219,7 +230,7 @@ "high-crit-threshold": true }, { - "name": "PSU Bottom", + "name": "Fan Right", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -227,7 +238,7 @@ "high-crit-threshold": true }, { - "name": "CPU Board", + "name": "Fan Left", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -235,7 +246,7 @@ "high-crit-threshold": true }, { - "name": "Fan Left", + "name": "PSU Bottom", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -243,7 +254,7 @@ "high-crit-threshold": true }, { - "name": "Fan Right", + "name": "ASIC TH5", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -251,7 +262,7 @@ "high-crit-threshold": true }, { - "name": "MAC internal", + "name": "CPU", "controllable": false, "low-threshold": false, "high-threshold": true, @@ -441,7 +452,7 @@ "name": "QSFPDD_60" }, { - "name": "QSFPDD_64" + "name": "QSFPDD_61" }, { "name": "QSFPDD_62" @@ -460,7 +471,2074 @@ } ] }, - "interfaces": {}, + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet1/1" + ], + "1x400G": [ + "Ethernet1/1" + ], + "2x400G": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x200G": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ], + "8x100G": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4", + "Ethernet1/5", + "Ethernet1/6", + "Ethernet1/7", + "Ethernet1/8" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet2/1" + ], + "1x400G": [ + "Ethernet2/1" + ], + "2x400G": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x200G": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ], + "8x100G": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4", + "Ethernet2/5", + "Ethernet2/6", + "Ethernet2/7", + "Ethernet2/8" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet3/1" + ], + "1x400G": [ + "Ethernet3/1" + ], + "2x400G": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x200G": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ], + "8x100G": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4", + "Ethernet3/5", + "Ethernet3/6", + "Ethernet3/7", + "Ethernet3/8" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet4/1" + ], + "1x400G": [ + "Ethernet4/1" + ], + "2x400G": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x200G": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ], + "8x100G": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4", + "Ethernet4/5", + "Ethernet4/6", + "Ethernet4/7", + "Ethernet4/8" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet5/1" + ], + "1x400G": [ + "Ethernet5/1" + ], + "2x400G": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x200G": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ], + "8x100G": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4", + "Ethernet5/5", + "Ethernet5/6", + "Ethernet5/7", + "Ethernet5/8" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet6/1" + ], + "1x400G": [ + "Ethernet6/1" + ], + "2x400G": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x200G": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ], + "8x100G": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4", + "Ethernet6/5", + "Ethernet6/6", + "Ethernet6/7", + "Ethernet6/8" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet7/1" + ], + "1x400G": [ + "Ethernet7/1" + ], + "2x400G": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x200G": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ], + "8x100G": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4", + "Ethernet7/5", + "Ethernet7/6", + "Ethernet7/7", + "Ethernet7/8" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet8/1" + ], + "1x400G": [ + "Ethernet8/1" + ], + "2x400G": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x200G": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ], + "8x100G": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4", + "Ethernet8/5", + "Ethernet8/6", + "Ethernet8/7", + "Ethernet8/8" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet9/1" + ], + "1x400G": [ + "Ethernet9/1" + ], + "2x400G": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x200G": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ], + "8x100G": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4", + "Ethernet9/5", + "Ethernet9/6", + "Ethernet9/7", + "Ethernet9/8" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet10/1" + ], + "1x400G": [ + "Ethernet10/1" + ], + "2x400G": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x200G": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ], + "8x100G": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4", + "Ethernet10/5", + "Ethernet10/6", + "Ethernet10/7", + "Ethernet10/8" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet11/1" + ], + "1x400G": [ + "Ethernet11/1" + ], + "2x400G": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x200G": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ], + "8x100G": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4", + "Ethernet11/5", + "Ethernet11/6", + "Ethernet11/7", + "Ethernet11/8" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet12/1" + ], + "1x400G": [ + "Ethernet12/1" + ], + "2x400G": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x200G": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ], + "8x100G": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4", + "Ethernet12/5", + "Ethernet12/6", + "Ethernet12/7", + "Ethernet12/8" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet13/1" + ], + "1x400G": [ + "Ethernet13/1" + ], + "2x400G": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x200G": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ], + "8x100G": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4", + "Ethernet13/5", + "Ethernet13/6", + "Ethernet13/7", + "Ethernet13/8" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet14/1" + ], + "1x400G": [ + "Ethernet14/1" + ], + "2x400G": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x200G": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ], + "8x100G": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4", + "Ethernet14/5", + "Ethernet14/6", + "Ethernet14/7", + "Ethernet14/8" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet15/1" + ], + "1x400G": [ + "Ethernet15/1" + ], + "2x400G": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x200G": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ], + "8x100G": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4", + "Ethernet15/5", + "Ethernet15/6", + "Ethernet15/7", + "Ethernet15/8" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet16/1" + ], + "1x400G": [ + "Ethernet16/1" + ], + "2x400G": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x200G": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ], + "8x100G": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4", + "Ethernet16/5", + "Ethernet16/6", + "Ethernet16/7", + "Ethernet16/8" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "273,274,275,276,277,278,279,280", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet17/1" + ], + "1x400G": [ + "Ethernet17/1" + ], + "2x400G": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x200G": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ], + "8x100G": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4", + "Ethernet17/5", + "Ethernet17/6", + "Ethernet17/7", + "Ethernet17/8" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "257,258,259,260,261,262,263,264", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet18/1" + ], + "1x400G": [ + "Ethernet18/1" + ], + "2x400G": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x200G": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ], + "8x100G": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4", + "Ethernet18/5", + "Ethernet18/6", + "Ethernet18/7", + "Ethernet18/8" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "313,314,315,316,317,318,319,320", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet19/1" + ], + "1x400G": [ + "Ethernet19/1" + ], + "2x400G": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x200G": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ], + "8x100G": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4", + "Ethernet19/5", + "Ethernet19/6", + "Ethernet19/7", + "Ethernet19/8" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "297,298,299,300,301,302,303,304", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet20/1" + ], + "1x400G": [ + "Ethernet20/1" + ], + "2x400G": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x200G": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ], + "8x100G": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4", + "Ethernet20/5", + "Ethernet20/6", + "Ethernet20/7", + "Ethernet20/8" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "345,346,347,348,349,350,351,352", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet21/1" + ], + "1x400G": [ + "Ethernet21/1" + ], + "2x400G": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x200G": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ], + "8x100G": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4", + "Ethernet21/5", + "Ethernet21/6", + "Ethernet21/7", + "Ethernet21/8" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "329,330,331,332,333,334,335,336", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet22/1" + ], + "1x400G": [ + "Ethernet22/1" + ], + "2x400G": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x200G": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ], + "8x100G": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4", + "Ethernet22/5", + "Ethernet22/6", + "Ethernet22/7", + "Ethernet22/8" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "377,378,379,380,381,382,383,384", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet23/1" + ], + "1x400G": [ + "Ethernet23/1" + ], + "2x400G": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x200G": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ], + "8x100G": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4", + "Ethernet23/5", + "Ethernet23/6", + "Ethernet23/7", + "Ethernet23/8" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "361,362,363,364,365,366,367,368", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet24/1" + ], + "1x400G": [ + "Ethernet24/1" + ], + "2x400G": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x200G": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ], + "8x100G": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4", + "Ethernet24/5", + "Ethernet24/6", + "Ethernet24/7", + "Ethernet24/8" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "409,410,411,412,413,414,415,416", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet25/1" + ], + "1x400G": [ + "Ethernet25/1" + ], + "2x400G": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x200G": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ], + "8x100G": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4", + "Ethernet25/5", + "Ethernet25/6", + "Ethernet25/7", + "Ethernet25/8" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "393,394,395,396,397,398,399,400", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet26/1" + ], + "1x400G": [ + "Ethernet26/1" + ], + "2x400G": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x200G": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ], + "8x100G": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4", + "Ethernet26/5", + "Ethernet26/6", + "Ethernet26/7", + "Ethernet26/8" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "441,442,443,444,445,446,447,448", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet27/1" + ], + "1x400G": [ + "Ethernet27/1" + ], + "2x400G": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x200G": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ], + "8x100G": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4", + "Ethernet27/5", + "Ethernet27/6", + "Ethernet27/7", + "Ethernet27/8" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "425,426,427,428,429,430,431,432", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet28/1" + ], + "1x400G": [ + "Ethernet28/1" + ], + "2x400G": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x200G": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ], + "8x100G": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4", + "Ethernet28/5", + "Ethernet28/6", + "Ethernet28/7", + "Ethernet28/8" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "473,474,475,476,477,478,479,480", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet29/1" + ], + "1x400G": [ + "Ethernet29/1" + ], + "2x400G": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x200G": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ], + "8x100G": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4", + "Ethernet29/5", + "Ethernet29/6", + "Ethernet29/7", + "Ethernet29/8" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "457,458,459,460,461,462,463,464", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet30/1" + ], + "1x400G": [ + "Ethernet30/1" + ], + "2x400G": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x200G": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ], + "8x100G": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4", + "Ethernet30/5", + "Ethernet30/6", + "Ethernet30/7", + "Ethernet30/8" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "505,506,507,508,509,510,511,512", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet31/1" + ], + "1x400G": [ + "Ethernet31/1" + ], + "2x400G": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x200G": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ], + "8x100G": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4", + "Ethernet31/5", + "Ethernet31/6", + "Ethernet31/7", + "Ethernet31/8" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "489,490,491,492,493,494,495,496", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet32/1" + ], + "1x400G": [ + "Ethernet32/1" + ], + "2x400G": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x200G": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ], + "8x100G": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4", + "Ethernet32/5", + "Ethernet32/6", + "Ethernet32/7", + "Ethernet32/8" + ] + } + }, + "Ethernet256": { + "index": "33,33,33,33,33,33,33,33", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet33/1" + ], + "1x400G": [ + "Ethernet33/1" + ], + "2x400G": [ + "Ethernet33/1", + "Ethernet33/5" + ], + "4x200G": [ + "Ethernet33/1", + "Ethernet33/3", + "Ethernet33/5", + "Ethernet33/7" + ], + "8x100G": [ + "Ethernet33/1", + "Ethernet33/2", + "Ethernet33/3", + "Ethernet33/4", + "Ethernet33/5", + "Ethernet33/6", + "Ethernet33/7", + "Ethernet33/8" + ] + } + }, + "Ethernet264": { + "index": "34,34,34,34,34,34,34,34", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet34/1" + ], + "1x400G": [ + "Ethernet34/1" + ], + "2x400G": [ + "Ethernet34/1", + "Ethernet34/5" + ], + "4x200G": [ + "Ethernet34/1", + "Ethernet34/3", + "Ethernet34/5", + "Ethernet34/7" + ], + "8x100G": [ + "Ethernet34/1", + "Ethernet34/2", + "Ethernet34/3", + "Ethernet34/4", + "Ethernet34/5", + "Ethernet34/6", + "Ethernet34/7", + "Ethernet34/8" + ] + } + }, + "Ethernet272": { + "index": "35,35,35,35,35,35,35,35", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet35/1" + ], + "1x400G": [ + "Ethernet35/1" + ], + "2x400G": [ + "Ethernet35/1", + "Ethernet35/5" + ], + "4x200G": [ + "Ethernet35/1", + "Ethernet35/3", + "Ethernet35/5", + "Ethernet35/7" + ], + "8x100G": [ + "Ethernet35/1", + "Ethernet35/2", + "Ethernet35/3", + "Ethernet35/4", + "Ethernet35/5", + "Ethernet35/6", + "Ethernet35/7", + "Ethernet35/8" + ] + } + }, + "Ethernet280": { + "index": "36,36,36,36,36,36,36,36", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet36/1" + ], + "1x400G": [ + "Ethernet36/1" + ], + "2x400G": [ + "Ethernet36/1", + "Ethernet36/5" + ], + "4x200G": [ + "Ethernet36/1", + "Ethernet36/3", + "Ethernet36/5", + "Ethernet36/7" + ], + "8x100G": [ + "Ethernet36/1", + "Ethernet36/2", + "Ethernet36/3", + "Ethernet36/4", + "Ethernet36/5", + "Ethernet36/6", + "Ethernet36/7", + "Ethernet36/8" + ] + } + }, + "Ethernet288": { + "index": "37,37,37,37,37,37,37,37", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet37/1" + ], + "1x400G": [ + "Ethernet37/1" + ], + "2x400G": [ + "Ethernet37/1", + "Ethernet37/5" + ], + "4x200G": [ + "Ethernet37/1", + "Ethernet37/3", + "Ethernet37/5", + "Ethernet37/7" + ], + "8x100G": [ + "Ethernet37/1", + "Ethernet37/2", + "Ethernet37/3", + "Ethernet37/4", + "Ethernet37/5", + "Ethernet37/6", + "Ethernet37/7", + "Ethernet37/8" + ] + } + }, + "Ethernet296": { + "index": "38,38,38,38,38,38,38,38", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet38/1" + ], + "1x400G": [ + "Ethernet38/1" + ], + "2x400G": [ + "Ethernet38/1", + "Ethernet38/5" + ], + "4x200G": [ + "Ethernet38/1", + "Ethernet38/3", + "Ethernet38/5", + "Ethernet38/7" + ], + "8x100G": [ + "Ethernet38/1", + "Ethernet38/2", + "Ethernet38/3", + "Ethernet38/4", + "Ethernet38/5", + "Ethernet38/6", + "Ethernet38/7", + "Ethernet38/8" + ] + } + }, + "Ethernet304": { + "index": "39,39,39,39,39,39,39,39", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet39/1" + ], + "1x400G": [ + "Ethernet39/1" + ], + "2x400G": [ + "Ethernet39/1", + "Ethernet39/5" + ], + "4x200G": [ + "Ethernet39/1", + "Ethernet39/3", + "Ethernet39/5", + "Ethernet39/7" + ], + "8x100G": [ + "Ethernet39/1", + "Ethernet39/2", + "Ethernet39/3", + "Ethernet39/4", + "Ethernet39/5", + "Ethernet39/6", + "Ethernet39/7", + "Ethernet39/8" + ] + } + }, + "Ethernet312": { + "index": "40,40,40,40,40,40,40,40", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet40/1" + ], + "1x400G": [ + "Ethernet40/1" + ], + "2x400G": [ + "Ethernet40/1", + "Ethernet40/5" + ], + "4x200G": [ + "Ethernet40/1", + "Ethernet40/3", + "Ethernet40/5", + "Ethernet40/7" + ], + "8x100G": [ + "Ethernet40/1", + "Ethernet40/2", + "Ethernet40/3", + "Ethernet40/4", + "Ethernet40/5", + "Ethernet40/6", + "Ethernet40/7", + "Ethernet40/8" + ] + } + }, + "Ethernet320": { + "index": "41,41,41,41,41,41,41,41", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet41/1" + ], + "1x400G": [ + "Ethernet41/1" + ], + "2x400G": [ + "Ethernet41/1", + "Ethernet41/5" + ], + "4x200G": [ + "Ethernet41/1", + "Ethernet41/3", + "Ethernet41/5", + "Ethernet41/7" + ], + "8x100G": [ + "Ethernet41/1", + "Ethernet41/2", + "Ethernet41/3", + "Ethernet41/4", + "Ethernet41/5", + "Ethernet41/6", + "Ethernet41/7", + "Ethernet41/8" + ] + } + }, + "Ethernet328": { + "index": "42,42,42,42,42,42,42,42", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet42/1" + ], + "1x400G": [ + "Ethernet42/1" + ], + "2x400G": [ + "Ethernet42/1", + "Ethernet42/5" + ], + "4x200G": [ + "Ethernet42/1", + "Ethernet42/3", + "Ethernet42/5", + "Ethernet42/7" + ], + "8x100G": [ + "Ethernet42/1", + "Ethernet42/2", + "Ethernet42/3", + "Ethernet42/4", + "Ethernet42/5", + "Ethernet42/6", + "Ethernet42/7", + "Ethernet42/8" + ] + } + }, + "Ethernet336": { + "index": "43,43,43,43,43,43,43,43", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet43/1" + ], + "1x400G": [ + "Ethernet43/1" + ], + "2x400G": [ + "Ethernet43/1", + "Ethernet43/5" + ], + "4x200G": [ + "Ethernet43/1", + "Ethernet43/3", + "Ethernet43/5", + "Ethernet43/7" + ], + "8x100G": [ + "Ethernet43/1", + "Ethernet43/2", + "Ethernet43/3", + "Ethernet43/4", + "Ethernet43/5", + "Ethernet43/6", + "Ethernet43/7", + "Ethernet43/8" + ] + } + }, + "Ethernet344": { + "index": "44,44,44,44,44,44,44,44", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet44/1" + ], + "1x400G": [ + "Ethernet44/1" + ], + "2x400G": [ + "Ethernet44/1", + "Ethernet44/5" + ], + "4x200G": [ + "Ethernet44/1", + "Ethernet44/3", + "Ethernet44/5", + "Ethernet44/7" + ], + "8x100G": [ + "Ethernet44/1", + "Ethernet44/2", + "Ethernet44/3", + "Ethernet44/4", + "Ethernet44/5", + "Ethernet44/6", + "Ethernet44/7", + "Ethernet44/8" + ] + } + }, + "Ethernet352": { + "index": "45,45,45,45,45,45,45,45", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet45/1" + ], + "1x400G": [ + "Ethernet45/1" + ], + "2x400G": [ + "Ethernet45/1", + "Ethernet45/5" + ], + "4x200G": [ + "Ethernet45/1", + "Ethernet45/3", + "Ethernet45/5", + "Ethernet45/7" + ], + "8x100G": [ + "Ethernet45/1", + "Ethernet45/2", + "Ethernet45/3", + "Ethernet45/4", + "Ethernet45/5", + "Ethernet45/6", + "Ethernet45/7", + "Ethernet45/8" + ] + } + }, + "Ethernet360": { + "index": "46,46,46,46,46,46,46,46", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet46/1" + ], + "1x400G": [ + "Ethernet46/1" + ], + "2x400G": [ + "Ethernet46/1", + "Ethernet46/5" + ], + "4x200G": [ + "Ethernet46/1", + "Ethernet46/3", + "Ethernet46/5", + "Ethernet46/7" + ], + "8x100G": [ + "Ethernet46/1", + "Ethernet46/2", + "Ethernet46/3", + "Ethernet46/4", + "Ethernet46/5", + "Ethernet46/6", + "Ethernet46/7", + "Ethernet46/8" + ] + } + }, + "Ethernet368": { + "index": "47,47,47,47,47,47,47,47", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet47/1" + ], + "1x400G": [ + "Ethernet47/1" + ], + "2x400G": [ + "Ethernet47/1", + "Ethernet47/5" + ], + "4x200G": [ + "Ethernet47/1", + "Ethernet47/3", + "Ethernet47/5", + "Ethernet47/7" + ], + "8x100G": [ + "Ethernet47/1", + "Ethernet47/2", + "Ethernet47/3", + "Ethernet47/4", + "Ethernet47/5", + "Ethernet47/6", + "Ethernet47/7", + "Ethernet47/8" + ] + } + }, + "Ethernet376": { + "index": "48,48,48,48,48,48,48,48", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet48/1" + ], + "1x400G": [ + "Ethernet48/1" + ], + "2x400G": [ + "Ethernet48/1", + "Ethernet48/5" + ], + "4x200G": [ + "Ethernet48/1", + "Ethernet48/3", + "Ethernet48/5", + "Ethernet48/7" + ], + "8x100G": [ + "Ethernet48/1", + "Ethernet48/2", + "Ethernet48/3", + "Ethernet48/4", + "Ethernet48/5", + "Ethernet48/6", + "Ethernet48/7", + "Ethernet48/8" + ] + } + }, + "Ethernet384": { + "index": "49,49,49,49,49,49,49,49", + "lanes": "265,266,267,268,269,270,271,272", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet49/1" + ], + "1x400G": [ + "Ethernet49/1" + ], + "2x400G": [ + "Ethernet49/1", + "Ethernet49/5" + ], + "4x200G": [ + "Ethernet49/1", + "Ethernet49/3", + "Ethernet49/5", + "Ethernet49/7" + ], + "8x100G": [ + "Ethernet49/1", + "Ethernet49/2", + "Ethernet49/3", + "Ethernet49/4", + "Ethernet49/5", + "Ethernet49/6", + "Ethernet49/7", + "Ethernet49/8" + ] + } + }, + "Ethernet392": { + "index": "50,50,50,50,50,50,50,50", + "lanes": "281,282,283,284,285,286,287,288", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet50/1" + ], + "1x400G": [ + "Ethernet50/1" + ], + "2x400G": [ + "Ethernet50/1", + "Ethernet50/5" + ], + "4x200G": [ + "Ethernet50/1", + "Ethernet50/3", + "Ethernet50/5", + "Ethernet50/7" + ], + "8x100G": [ + "Ethernet50/1", + "Ethernet50/2", + "Ethernet50/3", + "Ethernet50/4", + "Ethernet50/5", + "Ethernet50/6", + "Ethernet50/7", + "Ethernet50/8" + ] + } + }, + "Ethernet400": { + "index": "51,51,51,51,51,51,51,51", + "lanes": "289,290,291,292,293,294,295,296", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet51/1" + ], + "1x400G": [ + "Ethernet51/1" + ], + "2x400G": [ + "Ethernet51/1", + "Ethernet51/5" + ], + "4x200G": [ + "Ethernet51/1", + "Ethernet51/3", + "Ethernet51/5", + "Ethernet51/7" + ], + "8x100G": [ + "Ethernet51/1", + "Ethernet51/2", + "Ethernet51/3", + "Ethernet51/4", + "Ethernet51/5", + "Ethernet51/6", + "Ethernet51/7", + "Ethernet51/8" + ] + } + }, + "Ethernet408": { + "index": "52,52,52,52,52,52,52,52", + "lanes": "305,306,307,308,309,310,311,312", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet52/1" + ], + "1x400G": [ + "Ethernet52/1" + ], + "2x400G": [ + "Ethernet52/1", + "Ethernet52/5" + ], + "4x200G": [ + "Ethernet52/1", + "Ethernet52/3", + "Ethernet52/5", + "Ethernet52/7" + ], + "8x100G": [ + "Ethernet52/1", + "Ethernet52/2", + "Ethernet52/3", + "Ethernet52/4", + "Ethernet52/5", + "Ethernet52/6", + "Ethernet52/7", + "Ethernet52/8" + ] + } + }, + "Ethernet416": { + "index": "53,53,53,53,53,53,53,53", + "lanes": "321,322,323,324,325,326,327,328", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet53/1" + ], + "1x400G": [ + "Ethernet53/1" + ], + "2x400G": [ + "Ethernet53/1", + "Ethernet53/5" + ], + "4x200G": [ + "Ethernet53/1", + "Ethernet53/3", + "Ethernet53/5", + "Ethernet53/7" + ], + "8x100G": [ + "Ethernet53/1", + "Ethernet53/2", + "Ethernet53/3", + "Ethernet53/4", + "Ethernet53/5", + "Ethernet53/6", + "Ethernet53/7", + "Ethernet53/8" + ] + } + }, + "Ethernet424": { + "index": "54,54,54,54,54,54,54,54", + "lanes": "337,338,339,340,341,342,343,344", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet54/1" + ], + "1x400G": [ + "Ethernet54/1" + ], + "2x400G": [ + "Ethernet54/1", + "Ethernet54/5" + ], + "4x200G": [ + "Ethernet54/1", + "Ethernet54/3", + "Ethernet54/5", + "Ethernet54/7" + ], + "8x100G": [ + "Ethernet54/1", + "Ethernet54/2", + "Ethernet54/3", + "Ethernet54/4", + "Ethernet54/5", + "Ethernet54/6", + "Ethernet54/7", + "Ethernet54/8" + ] + } + }, + "Ethernet432": { + "index": "55,55,55,55,55,55,55,55", + "lanes": "353,354,355,356,357,358,359,360", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet55/1" + ], + "1x400G": [ + "Ethernet55/1" + ], + "2x400G": [ + "Ethernet55/1", + "Ethernet55/5" + ], + "4x200G": [ + "Ethernet55/1", + "Ethernet55/3", + "Ethernet55/5", + "Ethernet55/7" + ], + "8x100G": [ + "Ethernet55/1", + "Ethernet55/2", + "Ethernet55/3", + "Ethernet55/4", + "Ethernet55/5", + "Ethernet55/6", + "Ethernet55/7", + "Ethernet55/8" + ] + } + }, + "Ethernet440": { + "index": "56,56,56,56,56,56,56,56", + "lanes": "369,370,371,372,373,374,375,376", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet56/1" + ], + "1x400G": [ + "Ethernet56/1" + ], + "2x400G": [ + "Ethernet56/1", + "Ethernet56/5" + ], + "4x200G": [ + "Ethernet56/1", + "Ethernet56/3", + "Ethernet56/5", + "Ethernet56/7" + ], + "8x100G": [ + "Ethernet56/1", + "Ethernet56/2", + "Ethernet56/3", + "Ethernet56/4", + "Ethernet56/5", + "Ethernet56/6", + "Ethernet56/7", + "Ethernet56/8" + ] + } + }, + "Ethernet448": { + "index": "57,57,57,57,57,57,57,57", + "lanes": "385,386,387,388,389,390,391,392", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet57/1" + ], + "1x400G": [ + "Ethernet57/1" + ], + "2x400G": [ + "Ethernet57/1", + "Ethernet57/5" + ], + "4x200G": [ + "Ethernet57/1", + "Ethernet57/3", + "Ethernet57/5", + "Ethernet57/7" + ], + "8x100G": [ + "Ethernet57/1", + "Ethernet57/2", + "Ethernet57/3", + "Ethernet57/4", + "Ethernet57/5", + "Ethernet57/6", + "Ethernet57/7", + "Ethernet57/8" + ] + } + }, + "Ethernet456": { + "index": "58,58,58,58,58,58,58,58", + "lanes": "401,402,403,404,405,406,407,408", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet58/1" + ], + "1x400G": [ + "Ethernet58/1" + ], + "2x400G": [ + "Ethernet58/1", + "Ethernet58/5" + ], + "4x200G": [ + "Ethernet58/1", + "Ethernet58/3", + "Ethernet58/5", + "Ethernet58/7" + ], + "8x100G": [ + "Ethernet58/1", + "Ethernet58/2", + "Ethernet58/3", + "Ethernet58/4", + "Ethernet58/5", + "Ethernet58/6", + "Ethernet58/7", + "Ethernet58/8" + ] + } + }, + "Ethernet464": { + "index": "59,59,59,59,59,59,59,59", + "lanes": "417,418,419,420,421,422,423,424", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet59/1" + ], + "1x400G": [ + "Ethernet59/1" + ], + "2x400G": [ + "Ethernet59/1", + "Ethernet59/5" + ], + "4x200G": [ + "Ethernet59/1", + "Ethernet59/3", + "Ethernet59/5", + "Ethernet59/7" + ], + "8x100G": [ + "Ethernet59/1", + "Ethernet59/2", + "Ethernet59/3", + "Ethernet59/4", + "Ethernet59/5", + "Ethernet59/6", + "Ethernet59/7", + "Ethernet59/8" + ] + } + }, + "Ethernet472": { + "index": "60,60,60,60,60,60,60,60", + "lanes": "433,434,435,436,437,438,439,440", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet60/1" + ], + "1x400G": [ + "Ethernet60/1" + ], + "2x400G": [ + "Ethernet60/1", + "Ethernet60/5" + ], + "4x200G": [ + "Ethernet60/1", + "Ethernet60/3", + "Ethernet60/5", + "Ethernet60/7" + ], + "8x100G": [ + "Ethernet60/1", + "Ethernet60/2", + "Ethernet60/3", + "Ethernet60/4", + "Ethernet60/5", + "Ethernet60/6", + "Ethernet60/7", + "Ethernet60/8" + ] + } + }, + "Ethernet480": { + "index": "61,61,61,61,61,61,61,61", + "lanes": "449,450,451,452,453,454,455,456", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet61/1" + ], + "1x400G": [ + "Ethernet61/1" + ], + "2x400G": [ + "Ethernet61/1", + "Ethernet61/5" + ], + "4x200G": [ + "Ethernet61/1", + "Ethernet61/3", + "Ethernet61/5", + "Ethernet61/7" + ], + "8x100G": [ + "Ethernet61/1", + "Ethernet61/2", + "Ethernet61/3", + "Ethernet61/4", + "Ethernet61/5", + "Ethernet61/6", + "Ethernet61/7", + "Ethernet61/8" + ] + } + }, + "Ethernet488": { + "index": "62,62,62,62,62,62,62,62", + "lanes": "465,466,467,468,469,470,471,472", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet62/1" + ], + "1x400G": [ + "Ethernet62/1" + ], + "2x400G": [ + "Ethernet62/1", + "Ethernet62/5" + ], + "4x200G": [ + "Ethernet62/1", + "Ethernet62/3", + "Ethernet62/5", + "Ethernet62/7" + ], + "8x100G": [ + "Ethernet62/1", + "Ethernet62/2", + "Ethernet62/3", + "Ethernet62/4", + "Ethernet62/5", + "Ethernet62/6", + "Ethernet62/7", + "Ethernet62/8" + ] + } + }, + "Ethernet496": { + "index": "63,63,63,63,63,63,63,63", + "lanes": "481,482,483,484,485,486,487,488", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet63/1" + ], + "1x400G": [ + "Ethernet63/1" + ], + "2x400G": [ + "Ethernet63/1", + "Ethernet63/5" + ], + "4x200G": [ + "Ethernet63/1", + "Ethernet63/3", + "Ethernet63/5", + "Ethernet63/7" + ], + "8x100G": [ + "Ethernet63/1", + "Ethernet63/2", + "Ethernet63/3", + "Ethernet63/4", + "Ethernet63/5", + "Ethernet63/6", + "Ethernet63/7", + "Ethernet63/8" + ] + } + }, + "Ethernet504": { + "index": "64,64,64,64,64,64,64,64", + "lanes": "497,498,499,500,501,502,503,504", + "breakout_modes": { + "1x800G[400G]": [ + "Ethernet64/1" + ], + "1x400G": [ + "Ethernet64/1" + ], + "2x400G": [ + "Ethernet64/1", + "Ethernet64/5" + ], + "4x200G": [ + "Ethernet64/1", + "Ethernet64/3", + "Ethernet64/5", + "Ethernet64/7" + ], + "8x100G": [ + "Ethernet64/1", + "Ethernet64/2", + "Ethernet64/3", + "Ethernet64/4", + "Ethernet64/5", + "Ethernet64/6", + "Ethernet64/7", + "Ethernet64/8" + ] + } + }, + "Ethernet512": { + "index": "65", + "lanes": "515", + "breakout_modes": { + "1x10G": [ + "Ethernet65" + ] + } + }, + "Ethernet513": { + "index": "66", + "lanes": "516", + "breakout_modes": { + "1x10G": [ + "Ethernet66" + ] + } + } + }, "asic_sensors": { "poll_interval": "10", "poll_admin_status": "enable" diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_env.conf b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_env.conf new file mode 100644 index 000000000000..b4f7155e6b1d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_env.conf @@ -0,0 +1,3 @@ +SYNCD_SHM_SIZE=512m +is_ltsw_chip=1 + diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_reboot new file mode 100755 index 000000000000..836a11ed835f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/platform_reboot @@ -0,0 +1,12 @@ +#!/bin/bash + +dd=$(date "+%y%m%d%H%M%S") +i2cset -y 0 0x68 0x03 0x${dd:10:2} +i2cset -y 0 0x68 0x04 0x${dd:8:2} +i2cset -y 0 0x68 0x05 0x${dd:6:2} +i2cset -y 0 0x68 0x06 0x${dd:4:2} +i2cset -y 0 0x68 0x08 0x${dd:2:2} +i2cset -y 0 0x68 0x09 0x${dd:0:2} +i2cset -y 0 0x68 0x0F 0x38 + +exec /sbin/reboot diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/eeprom.py b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/eeprom.py index 12a1bbe5d2aa..7b357e673e96 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/eeprom.py +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/eeprom.py @@ -8,9 +8,9 @@ class board(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0053/eeprom" + self.eeprom_path = "/sys/bus/i2c/devices/4-0054/eeprom" if not os.path.exists(self.eeprom_path): - file = "/sys/class/i2c-adapter/i2c-0/new_device" + file = "/sys/bus/i2c/devices/i2c-4/new_device" with open(file, 'w') as f: - f.write('24c02 0x53\n') + f.write('24c02 0x54\n') super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/led_control.py b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/led_control.py index eb1dbeb347a0..234e0d691ea4 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/led_control.py +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/plugins/led_control.py @@ -1,33 +1,29 @@ -# -# led_control.py -# -# Platform-specific LED control functionality for SONiC -# +""" + led_control.py + + Platform-specific LED control functionality for SONiC +""" try: from sonic_led.led_control_base import LedControlBase import os import time import syslog - import struct from mmap import * import sonic_platform.platform import sonic_platform.chassis except ImportError as e: raise ImportError(str(e) + " - required module not found") -H5_64D_FAN_DRAWERS = 4 -H5_64D_FANS_PER_DRAWER = 2 -RESOURCE = "/sys/bus/pci/devices/0000:02:00.0/resource0" -REG_FRONT_SYSLED = 0x0084 -REG_FRONT_FANLED = 0x0088 +FAN_DRAWERS = 4 +FANS_PER_DRAWER = 2 +FPGA_DIR = "/sys/kernel/sys_fpga/" def DBG_PRINT(str): syslog.openlog("nokia-led") syslog.syslog(syslog.LOG_INFO, str) syslog.closelog() - class LedControl(LedControlBase): """Platform specific LED control class""" @@ -53,6 +49,7 @@ def _read_sysfs_file(self, sysfs_file): try: with open(sysfs_file, 'r') as fd: rv = fd.read() + fd.close() except Exception as e: rv = 'ERR' @@ -69,37 +66,24 @@ def _write_sysfs_file(self, sysfs_file, value): return rv try: with open(sysfs_file, 'w') as fd: - rv = fd.write(str(value)) + rv = fd.write(value) + fd.close() except Exception as e: rv = 'ERR' return rv - def _pci_set_value(self, resource, data, offset): - fd = open(resource, O_RDWR) - mm = mmap(fd, 0) - mm.seek(offset) - mm.write(struct.pack('I', data)) - mm.close() - close(fd) - - def _pci_get_value(self, resource, offset): - fd = open(resource, O_RDWR) - mm = mmap(fd, 0) - mm.seek(offset) - read_data_stream = mm.read(4) - reg_val = struct.unpack('I', read_data_stream) - mm.close() - close(fd) - return reg_val - def _initSystemLed(self): # Front Panel System LEDs setting oldfan = 0xf # 0=amber, 1=green oldpsu = 0xf # 0=amber, 1=green # Write sys led - self._pci_set_value(RESOURCE, 1, REG_FRONT_SYSLED) + status = self._write_sysfs_file(FPGA_DIR + 'led_sys', "3") + if status == "ERR": + DBG_PRINT(" System LED NOT set correctly") + else: + DBG_PRINT(" System LED set O.K. ") # Timer loop to monitor and set front panel Status, Fan, and PSU LEDs while True: @@ -109,16 +93,20 @@ def _initSystemLed(self): if fan.get_status() == True: good_fan = good_fan + 1 - if (good_fan == H5_64D_FAN_DRAWERS * H5_64D_FANS_PER_DRAWER): - if oldfan != 0x1: - self._pci_set_value(RESOURCE, 1, REG_FRONT_FANLED) - oldfan = 0x1 - - else: - if oldfan != 0x0: - self._pci_set_value(RESOURCE, 0, REG_FRONT_FANLED) - oldfan = 0x0 - + if (good_fan == FAN_DRAWERS * FANS_PER_DRAWER): + if (os.path.isfile(FPGA_DIR + "led_fan")): + if oldfan != 0x1: + self._write_sysfs_file(FPGA_DIR + "led_fan", "1") + oldfan = 0x1 + else: + oldfan = 0xf + else: + if (os.path.isfile(FPGA_DIR + "led_fan")): + if oldfan != 0x0: + self._write_sysfs_file(FPGA_DIR + "led_fan", "2") + oldfan = 0x0 + else: + oldfan = 0xf time.sleep(6) diff --git a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/thermal_policy.json b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/thermal_policy.json index 667d82dac0a3..1d0926914f87 100644 --- a/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/thermal_policy.json +++ b/device/nokia/x86_64-nokia_ixr7220_h5_64d-r0/thermal_policy.json @@ -1,7 +1,7 @@ { "thermal_control_algorithm": { "run_at_boot_up": "false", - "fan_speed_when_suspend": "65" + "fan_speed_when_suspend": "60" }, "info_types": [ { @@ -29,7 +29,7 @@ }, { "type": "fan.all.set_speed", - "speed": "100" + "speed": "90" } ] }, @@ -43,10 +43,10 @@ "actions": [ { "type": "thermal.temp_check_and_set_all_fan_speed", - "default_speed": "40", - "threshold1_speed": "55", - "threshold2_speed": "80", - "hightemp_speed": "100" + "default_speed": "45", + "threshold1_speed": "60", + "threshold2_speed": "70", + "hightemp_speed": "90" } ] },